OpenXava

OpenXava es un marco de trabajo de código abierto para desarrollar aplicaciones de gestión de una forma efectiva. Permite el desarrollo rápido y fácil de mantenimientos y listados pero, a su vez, es lo suficientemente flexible para desarrollar complejas aplicaciones de gestión de la vida real como contabilidad, facturación, gestión de personal, nóminas, gestión de almacenes, etc.

OpenXava permite definir aplicaciones simplemente con POJOs, JPA y anotaciones de Java 5.

Actualmente OpenXava genera aplicaciones web Java (J2EE/JavaEE), que pueden ser desplegadas en cualquier portal Java (JSR-168) como una aplicación de portlets.

La esencia de OpenXava es que el desarrollador define en vez de programar, y el marco provee automáticamente la interfaz de usuario, el acceso a los datos, el comportamiento por defecto, etc. De esta manera, todo lo común se resuelve fácilmente, pero siempre el desarrollador tiene la posibilidad de programar manualmente cualquier parte de la aplicación, de esta forma es lo bastante flexible para resolver los casos particulares. OpenXava está basado en el concepto de componente de negocio.

Componente de negocio frente a MVC 

Un componente de negocio incluye todos los artefactos de software necesarios para definir un concepto de negocio. OpenXava es un marco de trabajo orientado a componentes de negocio porque permite definir toda la información sobre un concepto de negocio en un único sitio. Por ejemplo, para definir el concepto de Factura, en OpenXava se usa un único archivo (Factura.java), y toda la información sobre el concepto de factura (incluyendo estructura de datos, disposición de la interfaz de usuario, mapeo con la base de datos, validaciones, cálculos, etc) se define ahí.
En un marco de trabajo MVC la lógica de negocio (el modelo), la interfaz de usuario (la vista) y el comportamiento (el controlador) se definen separadamente. Este tipo de marcos es útil si la frecuencia de cambios en la lógica y estructura de datos es baja y la posibilidad de cambiar la tecnología de intefaz de usuario o acceso a datos es alta.

En OpenXava para añadir un nuevo campo a una Factura el desarrollador solo necesita tocar un solo archivo: Factura.java

Pero, los marcos de trabajo MVC son malos cuando los cambios a la estructura y los datos son muy frecuentes (como en caso de las aplicaciones de gestión). Imaginemos un cambio más simple, añadir un nuevo campo a una Factura, en un marco MVC, el desarrollador tiene que cambiar la interfaz de usuario, la clase del modelo, la tabla de la base de datos, y además si el desarrollador usa los patrones de diseño J2EE tendrá que cambiar su clase DTO, el SessionBean de Fachada, el mapeo del EntityBean, etc.

Otra ventaja de los marcos orientados a componentes de negocio es la distribución del trabajo en los equipos. Es fácil hacer una distribución orientada a la lógica de negocio (facturas para un desarrollador, Albaranes para otro, etc), y no por capa tecnológica (lógica de negocio para un desarrollador, interfaz de usuario para otro, etc).

Características 
Algunas característistica de OpenXava son:
 Alta productividad para aplicaciones de gestión.
 Curva de aprendizaje corta y sencillez de uso.
 Suficientemente flexible como para crear aplicaciones sofisticadas.
 Es posible insertar nuestra propia funcionalidad en cualquier punto.
 Basado en el concepto de componente de negocio.
 Genera una aplicación J2EE completa, incluyendo la interfaz de usuario (AJAX).
 Soporta cualquier servidor de aplicaciones (Tomcat, JBoss, WebSphere).
 Soporta JSR-168: Todos los módulos OpenXava también son portlets estándar.
 Soporte completo de EJB3 JPA
 Está probado con los portales: JetSpeed 2, WebSphere Portal, Liferay y Stringbeans.
 Fácil integración de informes hechos con JasperReports.
 Licencia LGPL.
 Todas las etiquetas y mensajes están en inglés, español, alemán, polaco, indonesio, francés, italiano, chino y catalán.

Véase también 
 J2EE

Enlaces externos 
 Sitio del proyecto OpenXava

Frameworks para aplicaciones web
Frameworks de Java
Software de Internet
Software libre programado en Java