OpenXava es una herramienta para el Desarrollo Rápido de aplicaciones Web, apropiada para aplicaciones de gestión y orientadas a bases de datos.
OpenXava permite desarrollar aplicaciones simplemente escribiendo clases del dominio con Java o Groovy. La interfaz de usuario se genera automáticamente en tiempo de ejecución, sin generación de código.
OpenXava 4.5 tiene algunas nuevas funcionalidades muy interesantes, como por ejemplo:
Y muchas otras nuevas funcionalidades y arreglos.
Esto es algo que la comunidad llevaba pidiendo bastante tiempo. Hasta ahora sólo la estrategia de una tabla por jerarquía de clases estaba soportada. A partir de OpenXava 4.5 también se puede usar la estrategia joined y de tabla por clase de JPA.
Es decir, podemos escribir unas clases como estas:
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
class Ordenador extends Identifiable {
String nombre
}
@Entity
class Tableta extends Ordenador {
int tamañoPantalla
}
En este caso, tenemos una tabla para Ordenador con la columnas ID y NOMBRE y una tabla para Tableta con las columnas ID y SCREENSIZE. JPA realizará un JOIN de las dos tablas cuando sea necesario.
Podemos escribir también:
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
class Tienda extends Identifiable {
String nombre
}
@Entity
class TiendaInternet extends Tienda {
String url
}
En este caso, tenemos una tabla para Tienda con las columnas ID y NOMBRE y otra para TiendaInternet con las columnas ID, NOMBRE y URL.
Desde ahora OpenXava genera una interfaz de usuario correcta a partir de las classes de arriba.
Hasta ahora OpenXava ha usado JDBC para obtener los datos para lista y las colecciones. Esto era así por razones históricas, en concreto porque la primera versión de OpenXava usaba entidades EJB 1.0 CMP para la persistencie y EJB CMP es demasiado lento y rigido para implementar el comportamiento necesario de la lista de OpenXava, por eso usamos JDBC. Pero ahora, JPA es lo suficiente rápido y flexible como para ser usado para obtener los datos de la lista, por eso hemos escrito un nuevo JPATabProvider para leer los datos de la lista y es el que se usa por defecto. Estos nos ha permitido soportar todos los tipos de herencia de JPA, pero también abre un universo nuevo de posibilidades para el futuro, como usar DataNucleus en lugar de Hibernate como motor de JPA y así poder acceder a bases de datos no relacionales.
La gente de la startup de California Automated Business Logic ha estado trabajando duro para integrar su libreria, ABL, en OpenXava. ABL permite definir lógica de negocio declarativamente usando anotaciones. El wiki explica como usar ABL en OpenXava.
El equipo de SicFlex, una compañía dominicana que ha desarrollado un ERP completo con OpenXava, ha desarrollado un nuevo motor de visualización para OpenXava. Esta es la parte más importante y complicada de OpenXava. Este nuevo motor de visualización permitirá generar interfaces de usuario más complejas y bonitas aún. Todavía está en beta y está desactivado por defecto, pero puedes activarlo con las siguientes entradas en xava.properties:
# Layout parser calculate and prepare properties to be renderer.
# This is optional, by default OX uses org.openxava.render.DefaultLayoutParser
layout.parser=org.openxava.web.layout.DefaultLayoutParser
# Layout painter, render all properties in cell forms
# If a valid painter is defined here, view rendering is performed by it.
layout.painter=org.openxava.web.layout.DefaultLayoutPainter
Mira la lista de cambios para la lista completa de nuevas características y arreglos.