OpenXava 3.1.3 is a framework to develop Java Enterprise applications in a different way: OpenXava avoids MVC. It's a JPA Application Engine in that you provide only your POJOs annotated with JPA and you obtain an application ready for production. Productivity With OpenXava, you only need to write your model, POJOs with annotations. You do not need to write the view, and the controller (for CRUD, printing, etc) is reused. That is, you only write a class as this one: @Entity public class Teacher { @Id @Column(length=5) @Required private String id; @Column(length=40) @Required private String name; // Getters and setters } And you have an application (see it here) for CRUD, report generation in PDF, export to Excel, searching, sorting, validations etc. You only need to write a simple Java class, no XMLs, no JSPs and no code generation. OpenXava is not only for writing simple CRUDs for simple classes, you can create sophisticated applications with complex logic and advanced UI. OpenXava supports references, collections, inheritance, nested tabs, nested frames for grouping, etc. Flexibility Given OpenXava was used since its very beginning to develop real life business application (not mere prototypes) it has a high level of flexibility thanks to its powerful declarative view annotations, the custom editors for properties, and the option of creating the view by hand. Moreover, since this new 3.1.3 version, OpenXava allows you to define the way the user interface is generated. This is possible because you can declare custom editors for references (@ManyToOne, @OneToOne) and collections (@OneToMany, @ManyToMany). That is, if you have this collection in your JPA entity: @OneToMany(mappedBy="parent", cascade=CascadeType.REMOVE) private Collection comments; Then OpenXava produces a generic user interface for the collection, just like the one in this demo. If this user interface is not suitable for this case you can use the @Editor annotation: @OneToMany(mappedBy="parent", cascade=CascadeType.REMOVE) @Editor("BlogComments") private Collection comments; And you have your editor defined in editors.xml thus: If you have BlogComment collections scattered accross your application, you can define the editor as following: In this way you do not need to use @Editor in each BlogComment collection. Also, you can define the default editor for all collections or references, as following: Thus, all the collections and references of the application will be render with your own editors. So, you are defining the way the user interface generator of OpenXava works. More info: Do you think that using JSF, FLEX, JavaFX or GWT directly to generate user interface is really productive? Do you think that automatic user interface from model can be flexible enough for "real life" applications?