J9CodeOrganisation

Project architecture and libraries

JFreeReport is built upon a strict separation of responsibilities between the various components.

To increase the reusability of all components (and to bring that separation from a purely logical to a fully physical separation), all identified layers have been refactored into separate libraries.

JFreeReport 0.9 now consists of the following core components:

  • JFreeReport: Since JFreeReport 0.9 the reporting engine restricts its scope on data processing and computation.
  • LibLayout: The layouting engine uses the Cascading-StyleSheets standard (in version 3) to perform the layouting of all generated and user supplied content. LibLayout is inheriting a lot of the functionality formerly found in JFreeReport's output targets.
  • LibFormula: The formula support library provides a flexible framework for executing Excel-Style expression. The function set is extensible, so that LibFormula can be used in any programm that needs to compute user-supplied formulas.
  • LibFonts: LibFonts is the font handling layer. As the AWT provides almost no usefull information about font metrics, we have to parse the font files directly. As a result, the user of that library gets detailed font metrics and he gets them faster than by using the AWT.
  • LibXml: LibXml is the Xml-Parser and -Writer support library. It greatly eases the pain of writing SAX-parsers and code that should generate XML-output.
  • LibRepository is an input and output storage abstraction layer. Code that uses LibRepository does no longer have to care where generated content goes to or from what physical location content is loaded.
  • LibLoader: LibLoader is the generic resource loading framework of the JFreeReport project. It decouples all libraries from the tediuos task of loading and managing external resources. The library provides simple means of dealing with different physical locations and provides caching and factory services. Code that uses LibLoader does no longer have to care where data came from or which implementation actually interprets that data.
  • Jcommon-Serializer: The serializer helper library adds generic serialization to originally non-serializable objects. This fixes the non-serializability of most of the AWT core classes, like Colors or Rectangles, which are non-serializable for history reasons.
  • Jcommon: provides the core services for all JFreeReport. This library includes the support for logging, the module and dependency tracking system and configuration management.