A Common Application Framework (ACAF)

A Common Application Framework (ACAF)

Released 2 years ago , Last update 2 years ago

The Common Application Framework (ACAF) is used as base to implement technology-free, robust and clean business classes of an application, which should be connected to different other frameworks, without affecting the business classes itself. It includes an O/R mapping package, used to store business objects in a relational database and classes to serialize and deserialize business objects to/from XML documents.


ACAF, a lean pattern based framework to build up robust business classes

The intension of ACAF is, to build business classes as the core classes of your application, which can be used in each tier or layer, e.g. a GUI frontend, a Web frontend, a mobile device, a Web, a SOA or a database backend service. To achieve this goal, the business classes has to be technology-free. A database backend doesn't need a GUI framework and a GUI frontend usually doesn't need a O/R mapping framework. ACAF helps you to achieve this goal, providing means to connect arbitrary framework to the business classes without affecting the business classes itself. The frameworks are connected via the ACAF interfaces and classes. ACAF has no dependencies to other libraries, only the Java standard edition (JSE) and it has a very small memory footprint.

Business classes use attribute classes provided by ACAF to implement attributes instead of simple Java types. The ACAF attribute classes wrap not only a value, but also a keyword, which can be considered as label of the attribute. The keyword may also be localized. Numeric and date attributes can be initialized with a value range, which is used to check the value when it is set. So business processes can rely on verified business classes with a high data quality. This relieves the business processes from checking if values are NULL or are in a certain value range. When the business classes are used in different components, the value checking and the keywords are consistent over all components. So each attribute has the same label and the same constraints in frontend or backend components.

For a detailed description of ACAF see also the ACAF documentation site.

The class diagram on the top-left shows the business classes of the sample application "Address-Book", which shows hoe to use the framework. A more complex sample is the "Competition-Management" application. The sample applications can be downloaded here:

O/R Mapping Package Included

The framework includes a package for object/relational mapping, used to store and retrieve business objects in/from a relational database. The classes of this package are initialized with pure Java code and do not require any configuration files.

XML Serialization Package Included

The framework includes a package, which can be used to serialze and deserialize your business objects to/from a XML document. As soon as your business classes are implemented you can use the XML handler to save your business objects in a XML file with a few lines of code:

XMLHandler xmlHandler = new XMLHandler ();
xmlHandler.saveToFile (new File (directory, fileName), businessObject);



  • High quality business classes

    Promotes technology-free, clean business classes, containing only business
    relevant code. The business classes provide a high data quality to your business processes by attribute classes implementing value checking. No setter or getter methods for attributes are required by the framework, which violate information hiding and pollute business classes.

  • Clear software architecture

    Clear and transparent software architecture based on popular design patterns. The framework is completely based on interfaces, so that it is easily extensible and modifyable. It allows connecting arbitrary frameworks to the business classes, without affecting the code of the business classes itself.

  • Promotes Separation of Concerns

    The framework promotes the design principle "Separation of Concerns". It reduces dependencies between layers and tiers to a minimum, and therefore allows an independent development of components. This allows the project team to work highly parallel.
  • Internationalization

    The framework implements internationalization support with thread specific locales. Business class attributes can be initialized to return language specific labels, so that a consistent label for an attribute is used over all tiers using the business classes. Date and number attributes may format their values in a thread specific locale.

  • Thread safeness

    All classes are thread safe by synchronizing the methods, which modify their state.
  • 100% Java

    The framework is implemented in 100% Java and there are no dependencies to other libraries. It doesn't require any configuration files. This has the big benefit, that the code based on the framework can be checked at compile time.
  • Documentation

    The framework including its error messages is very well documented as it may be seen on the ACAF documentation site.
  • Small memory footprint

    ACAF has a very small memory footprint. The JAR size is less that 1.2 MB!
  • approved in real projects

    The concepts and the implementation has been approved in many projects. The framework has a history of about 20 years and was already implemented in other programming languages like C++ and ABAP/Objects.


  • O/R Mapping

    The framework contains a package for object/relational mapping used to store and retrieve business objects in/from a relational database. The classes of this package are based on the interfaces defined in the standard Java package java.sql. It can be used with every JDBC driver implementing the interface java.sql.Driver.
  • XML Serialization

    The framework provides classes to serialize and deserialize business objects to/from a XML document. This feature cannot only be used to store business object trees in XML files, but also to transfer business objects between tears.
  • Command line parser

    The framework implements command line parsers, which can be used to create, modify and delete business objects using simple commands. This feature may be used, when your application has no GUI and you have the requirement to manage your application with commands or scripts. Commands may also be used to test your application without a GUI, e.g. in JUnit tests.
  • incomplete date

    The framework provides an attribute class to handle incomplete dates like date ranges on a credit card, which are specified with a month and year. The attribute has a precision property beside the date value.
  • Duration CLASS

    The framework contains classes for duration calculation and formatting. Durations may be created by calculating the difference between two dates. Durations may be added to or subtracted from a given date. Formatting of durations works similar to the standard formatting of dates, by specifying the format as pattern string.
  • extended string tokenizer

    The string tokenizer class of the framework supports look-ahead and the feature to store and reset the tokenizer state. This makes it possibe to restart tokenizing from a certain position in the source string. It further provides the feature of quoted tokens and single character tokens.
  • UUID Generator

    A UUID generator is included, which creates UUID's according to the Leach-Salz specification.



14 day 14-day money-back guarantee


Free License

  • Perpetual license

  • 1 site, unlimited servers

  • No distribution (hosted use only)

  • Non-commercial use


Developer License, 5 Applications

  • Perpetual license

  • 5 applications

  • Can distribute binary products only

  • Commercial use

  • 3 months support


Developer License, 10 Applications

  • Perpetual license

  • 10 applications

  • Can distribute binary products only

  • Commercial use

  • 3 months support


Developer License, 50 Applications

  • Perpetual license

  • 50 applications

  • Can distribute binary products only

  • Commercial use

  • 3 months support


Developer License, 100 Applications

  • Perpetual license

  • 100 applications

  • Can distribute binary products only

  • Commercial use

  • 3 months support


Enterprise Developer License

  • Perpetual license

  • unlimited applications

  • Can distribute binary products only

  • Commercial use

  • 3 months support

7 licenses, starting from From » FREE View Licenses

Get A Quote

What do you need?
  • Custom development
  • Integration
  • Customization / Reskinning
  • Consultation
When do you need it?
  • Soon
  • Next week
  • Next month
  • Anytime

Thanks for getting in touch!

Your quote details have been received and we'll get back to you soon.

Or enter your name and Email
No comments have been posted yet.