Over a million developers have joined DZone.

OpenXava 3.1: AJAX Application from JPA Entities

DZone's Guide to

OpenXava 3.1: AJAX Application from JPA Entities

· ·
Free Resource
OpenXava 3.1 is a framework to develop Java Enterprise applications in a different way: OpenXava avoids MVC. You provide only your POJOs annotated with JPA and you obtain an application ready for production.

With OpenXava, you only need to write your model, POJOs and Java 5 annotations. You do not need to write the view, and the controller (for CRUD, printing, etc) is reused. And from that you'll have an application 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.

Look at the demos.

The main new feature of 3.1 is that generates AJAX appplications, in this way if you update to OX3.1, your OX (3.x, 2.x, or 1.x) applications will be AJAX without touching a single line of code.
In the other hand, if you application is not OX but you use JPA entities, you can move your JPA code to an OpenXava application and obtain an AJAX portal application easily.

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.

If you develop business applications, use JPA or are interested in Java Portals (as Liferay, WebSphere Portal or JetSpeed) do not doubt, download OpenXava and evaluate it.

OpenXava is LGPL so you can develop commercial applications with it.

More info: http://www.openxava.org/

What do you think about this way to develop applications?
Do you think that MVC frameworks (SpringMVC, JBoss Seam, RubyOnRails or Grails) are as productive as VisualBasic, 4GLs, RPG, etc. for business applications?
Do you think that MVC is always the best solution?

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}