I know. So many times you thought that applications were quite similar. You're right! Technologies are horizontal and you can use the same ones in very different contexts. What really changes is the Domain. The Domain is the real value of your application, because you've analyzed it, studied it and shared it with the client.

Roma lets you focus on the domain and treat the rest as a minor detail. It's a pure DDD (Domain Driven Design) approach.

How does it work ?

You start off by defining the entities/classes of your domain. You can write them by using an IDE of choice or you could have your preferred UML tool do the class generating for you.

Once your model is well documented, let Roma worry about the rest. I'm talking about the presentation, the persistence of your objects, the internationalization, etc. They can all be auto-determined figured out by analyzing your domain model.

Since the Java language syntax is not enough to represent the complexity of your domain (think of all kinds of relationships) you could have the need to enrich your model by adding same details using Annotations.  Annotation can be under the form of Java Annotation (introduced with Java version 5) or Xml Annotation.


By using annotations you can tell Roma to hide a field in your form or to render it in a different way, to express the kind of relationship between two entities, and much more.

Since you're you're not coupling your application to any specific technology and your domain is defined as a collection of  POJO's, you can generate a fully featured web application in a short time and without writing one single line of HTML or SQL. Aspect implementations will deal with it. But remember you always own great powerful in customization if you need.

This greatly reduces development time and allows your team to focus on the domain, without them having to be skilled up on every single technology you're using.

Roma is the framework of choice of hundreds of developers who employ it, as we speak, to build very complex applications in a fraction of the time in comparison to conventional technologies.

Support This Project

Copyright 2006-2008 Luca Garulli