The Jamda Project Logo

What is Jamda?

Jamda is an open-source framework for building application generators which create Java code from a model of the business domain. Instead of a generator which produces one fixed architecture, Jamda provides a structure and building blocks so that you can build an application generator which does exactly what your project needs. It includes a sample generator for J2EE applications which can either be tailored to the needs of your J2EE project, or used as the basis of a generator for a completely different architecture.

From a UML model of the application domain, a generator created with Jamda could create the code for all the standard functions of locating, displaying and updating the business objects in the application. The developer would then concentrate on the application-specific business logic, which is merged into the generated application. In a typical application, the developer would only need to write around 20% of the total system code.

Is it a Model Driven Architecture tool?

An application generator built using Jamda would perform the role of a model compiler in the Object Management Group's Model Driven Architecture specification. It takes a UML domain model as input, adds new classes to the model to support the implementation, and then generates executable code.

Why is it different from other model compiler tools?

Most existing model compilers use a templating approach to go directly from the original UML model to the final code. Jamda first adds the definitions of the generated classes to the UML model, then generates code from these. The advantages of this include:

  • Shorter and easier steps in the generation process, rather than a big jump from initial model to code
  • Less work to specify each generated class
  • Generators are coded in plain Java using the Jamda API, rather than a less familiar and less flexible template language
  • The new UML model including the generated classes can be viewed in the same tool used to create the initial model
  • More opportunities to resuse generator modules for different applications

What are the benefits?

The simple answer is: it could you save you a huge amount of time! If you are developing a J2EE application, tailoring the sample J2EE generator, or even writing a new one using Jamda, will take much less time than writing the code by hand.

But as well as saving time, a Jamda generator can:

  • Create a system with a solid architecture, using "best-practice" designs
  • Ensure a simple and consistent style throughout, making future maintenance easier
  • Allow you to concentrate on the important business functions of the application, while it takes care of the tedious "plumbing"

And it will do all of this while still leaving you the freedom to tailor the application as you require. You can and override as much or as little of the generated code as you wish - all changes are merged in seamlessly.

What do I need to use it?

Jamda takes a UML model as its input. This would usually be exported in XMI format by a case tool such as MagicDraw.

Jamda is written in Java, and requires a reasonable level of Java knowledge to use effectively, as with any other component or library. At the current stage of development, the range of reusable modules is small, so you will probably need to write your own generator modules. Jamda provides an excellent framework for doing this, and comes with instructions and samples to get you started.

Jamda needs the Ant build tool to be used most effectively.


The documentation is available on-line:


Jamda has been created by Paul Boocock. It was developed as a more flexible and maintainable successor to the Gen2J project. The core generation framework is in place, and work is continuing to expand the range of modules available for different generation needs.

Jamda is an open source product, available for any developer to use as they wish, under an Apache-style licence.


The current release is available at the Jamda project downloads page.

More information and getting involved

If you would like any more information, or if you would like to contribute to the future development of Jamda, please contact Paul Boocock

Last updated: 6 May 2003