JavATE, the Java Application Tiered Engine is a set of Java libraries that enables application development using the domain driven methodology. It gives you standard interfaces and implementations for the domain driven design building blocks so you can focus on your strategic design instead of reinventing the wheel of the building blocks each time.
JavATE is not a web-framework itself because it is based on existing frameworks like ZK . And it is not only related to web-applications, you can use it to develop desktop applications and web-services and ...
JavATE is not a Object-Relational-Mapping tool itself because it is based on existing ORM technologies like Hibernate (already) or JPA (not yet implemented). And you can use it to develop applications that are backed by LDAP directories and JCR repositories and ...
JavATE is a sort of glue between all these technologies!
Look at this example for a hands-on introduction to the basic features of the framework.
The core of JavATE is composed of the following building blocks:
but there are other libraries like WorkstATE, a State Chart engine. And others will come.
Let me know your opinions about JavATE on our Open Discussion Forum .
Dominate is the basement on which all other libraries are build. It contains interfaces for the basic patterns of domain driven design like "entity" and "repository". These interfaces gives you the possibility to access these objects in a standardized way allowing a lot of generalization and simplification.
Side by side with these interfaces there are implementations that speed up the development of application using mainstream technologies like Hibernate .
Read the DominATE User Guide
When you have an object model, it is time to build at least an application with it. Applicate helps you writing application services.
The idea on which Applicate is build is that most part of applications way of interacting is:
So Applicate has two kinds of services:
The most common way to browse objects is using a list. So Applicate has interfaces and implementations for browsers that mantains a list of objects and enables you to filter, sort and select them. These objects usually come from a repository defined in your object model. If you used the Dominate Repository interface you don't mind where your objects are persisted. They can be in a relational database, in a LDAP directory or a JCR content repository, you can browse them all in the same way.
Commands, instead, are objects that encapsulate the execution of an operation. If your application users (human or computers) have to execute an operation you can implement a command with an attribute for each parameter the operation needs. Then using the doCommand() method you can trigger the operation execution. Using commands you have a lot of advantages. For example you can create composite commands at runtime, transform a command in a transaction using a decorator or collect the list of the commands the user executed to implement an undo list.
Read the ApplicATE User Guide
The GUI Driver for Application Tiered Engine has the responsibility to bind the user interface to the application layer. At this moment only a ZK implementation is under active development but there are plans for Swing and GWT implementations.
Read the GuidATE User Guide
WorkstATE is an implementation of a State Charts engine compatible with UML and configurable both in Java code and XML.
Look at the following example for details.