Buscar
Social
Ofertas laborales ES
« Java SE Development Kit 7, Update 5 | Main | El primer virus con soporte multiplataforma completo desarrollado en Java »
viernes
jul202012

OpenXava 4.5 disponible: Desarrollo Rápido Java para aplicaciones Web

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:

  • Soporte de todas las estrategias de mapeo de herencia JPA.
  • Los datos de la lista y las colecciones se obtienen vía JPA, antes se usaba JDBC.
  • Librería Automated Business Logic (ABL) añadida.
  • Una arquitectura de generación de interfaz de usuario completamente nueva. Todavía está en BETA pero se puede activar con layout.painter en xava.properties.

Y muchas otras nuevas funcionalidades y arreglos.

Soporte de todas las estrategias de mapeo de herencia JPA

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.

Los datos de la lista y las colecciones se obtienen vía JPA

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.

Libreria Automated Business Logic (ABL) añadida

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.

Una arquitectura de generación de interfaz de usuario completamente nueva

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

Y más

Mira la lista de cambios para la lista completa de nuevas características y arreglos.


Descarga OpenXava 4.5 y pruébalo

PrintView Printer Friendly Version

EmailEmail Article to Friend

Reader Comments (4)

Estuve viendo las demos y parecen correr con la vieja interfaz, ¿dónde podemos probar OpenXava con la nueva interfaz? ¿o ver algunos screenshots?

julio 21, 2012 | Unregistered CommenterMariano

Hola Mariano,

la interfaz de usuario depende del portal donde despligues la aplicación. Las demos de openxava.org están en un Liferay 6 por eso el estilo visual de los portlets de OpenXava son los del Liferay 6. Si los despliegas en un Liferay 5 o en un WebSphere se adaptará al estilo de esos portales. Incluso, si creas tu propio estilo para Liferay 6 los portlets de OpenXava se adaptaran a ese estilo.

julio 23, 2012 | Registered Commenterjavierpaniza

Lo que queremos ver es el ultimo motor de visulisacion el que fue creado por SicFlex

julio 23, 2012 | Unregistered Commenterluis

Hola Luis,

el nuevo motor de visualización es algo interno, lo que se cambia es como OpenXava gestiona la generación del interfaz de usuario, pero el interfaz de usuario es el mismo. El nuevo motor de visualización está todavía en BETA por lo que puede que no visualice correctamente todos los casos, pero lo puedes activar si quieres.
Una de las ventajas del nuevo motor de visualización es que permitirá resolver fácilmente algunos problemas actuales, como el hecho de cuando anidas varias referencias con @NoFrame las propiedades no se alinean correctamente.

julio 24, 2012 | Registered Commenterjavierpaniza

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>