openxava
Blog

28 de septiembre del 2026

OpenXava 8.0 liberado

La versión 8 representa una nueva era para OpenXava. Un OpenXava nuevo por dentro y nuevo por fuera, pero siguiendo fiel a su esencia.

Ahora OpenXava está basado en Spring Boot (la última versión), soporta Jakarta EE (la última versión) y tienes una apariencia visual moderna, digna del 2026. Además, hemos eliminado todos los vestigios tecnológico del pasado.

Pero sigue siendo OpenXava. Vuestro código seguirá funcionando, con las misma entidades, las misma acciones, lo mismo calculadores. La mecánica de escribir solo simples clases Java para obtener una aplicación sigue ahí, intacta. Solo que ahora todo es moderno, lo más moderno imaginable.

Esto y más de 60 nuevas características.

Mira el video donde te enseñamos el nuevo OpenXava 8:

OpenXava 8.0 liberado

Para actualizar tu aplicación a la versión 8 sigue las instrucciones de migración. Si simplemente quieres probarlo crea un proyecto nuevo siguiendo la guía de inicio rápido.

Spring Boot

Spring es el framework ubicuo dentro del mundo Java y Spring Boot la forma más popular de crear y ejecutar una aplicación Spring. Hasta ahora OpenXava había dado la espalda a Spring, pero esto se acabó. En la versión 8, las aplicaciones OpenXava son también aplicaciones Spring Boot, para que os sintáis como en casa. Estas son las cosas que hemos hecho:

  • Spring Boot 4.1 como lanzador de aplicaciones predeterminado; también se admite un WAR estándar de Jakarta EE 11.
  • El WAR generado es ejecutable directamente mediante java -jar, sin necesidad de un servidor de aplicaciones.
  • Las versiones de las dependencias ahora están alineadas con Spring Boot 4.1.
  • La configuración del contexto raíz se realiza en application.properties en lugar de AppServer.run("").
  • Ya no se incluyen error404.html ni error500.html; se utilizan las páginas de error predeterminadas de Spring Boot.
  • Se eliminan las propiedades javaLoggingLevel de xava.properties; se debe utilizar logging.level en application.properties.
  • Ya no se utiliza web.xml; los servlets, filtros, listeners, etc. se definen mediante anotaciones.
  • Se elimina la propiedad applicationPort de xava.properties; el puerto se configura mediante las opciones de Spring Boot.
  • Se elimina la clase AppServer. La clase Launcher ahora debe extender OpenXavaApplication.
  • La versión de Hibernate ya no se fija en pom.xml; ahora utiliza la versión proporcionada por el BOM de Spring Boot.
  • La definición del DataSource pasa de context.xml a application.properties.
  • Se pueden declarar varios DataSource en application.properties utilizando el prefijo openxava.datasources.*.

Jakarta EE

En la versión 7 decidimos ser compatibles con Java EE y Java 8 y hemos mantenido es compatibilidad durante toda la versión 7, como es natural. Pero ya han pasado 4 años y ahora la norma es Java 17 como mínimo y Jakarta EE. Hemos aprovechado está versión 8, para ofrecerte la posibilidad de usar un Java moderno en tus aplicaciones. Estos son los detalles:

  • Compatibilidad con Jakarta EE 11.
  • Compatibilidad con Jakarta Persistence 3.2. Se elimina la compatibilidad con JPA 2.2.
  • Compatibilidad con Jakarta Servlet 6.1. Se elimina la compatibilidad con Servlet 4.0.
  • El WAR generado se puede desplegar en un Tomcat 11 independiente.
  • JavaMail actualizado a Jakarta Mail 2.1 (Eclipse Angus 2.0.5).
  • Actualización de javax.inject (JSR 330) a Jakarta Dependency Injection 2.0.1.
  • Compatibilidad con JAX-RS 4.0. Se elimina la compatibilidad con JAX-RS 2.1.
  • Compatibilidad con Jakarta JSON Binding 3.0.1. Se elimina la compatibilidad con JSON Binding 1.0.
  • WebSocket actualizado a Jakarta WebSocket 2.2.
  • Compatibilidad con Jakarta Validation 3.1. Se elimina la compatibilidad con Bean Validation 2.0.
  • Compatibilidad con Tomcat 11. Se elimina la compatibilidad con Tomcat 10, 9 y 8.
  • Java 17 como versión base. Se elimina la compatibilidad con Java 8 y 11.

Apariencia moderna

El estilo visual de OpenXava tan apenas había cambiado desde la versión 6.0, del 2018. Esto lo empezaban a notar algunos de vuestros usuarios, que empezaban a ver las aplicaciones OpenXava, como algo anticuadas. Hemos resuelto esto. El diseño de todos los aspectos de la interfaz de usuario ha sido rediseñado para tener una apariencia del 2026, a la altura de aplicaciones punteras como Attio; Linear o Notion. Este es un resumen de algunas de las cosas que hemos hecho:

  • Nuevo aspecto moderno para toda la interfaz de usuario, comparable al de las principales aplicaciones web actuales.
  • Nuevo tema claro con una paleta limpia en tonos pizarra y un color de acento índigo.
  • Tema oscuro renovado con una paleta zinc en negro real y una mejor legibilidad del texto.
  • Las colecciones de elementos ahora tienen un aspecto limpio de hoja de cálculo, con separadores de filas muy finos.
  • Los campos obligatorios ahora se marcan con un asterisco rojo junto a la etiqueta.
  • Los campos booleanos ahora se muestran como interruptores en lugar de casillas de verificación.
  • Las acciones de fila en colecciones y listas se muestran al pasar el ratón por encima o al recibir el foco mediante el teclado.
  • Nueva barra de progreso superior y fina para las cargas, que solo se muestra cuando una operación tarda más de un instante.
  • Las etiquetas de los campos ahora se colocan encima de los campos de forma predeterminada.
  • Las filas de @LargeDisplay ahora distribuyen las tarjetas uniformemente a lo largo de todo el ancho.
  • Nuevo tema Automático que sigue automáticamente la preferencia de tema claro u oscuro del sistema operativo.
  • Selector de tema simplificado a Automático, Claro y Oscuro.
  • Se eliminan los temas terra.css, blue.css y black-and-white.css.
  • Se eliminan las hojas de estilos de portal heredadas default.css y skins.css; el CSS alternativo de Style ahora es auto.css.
  • Los mensajes de éxito, advertencia e información se muestran como modernas notificaciones emergentes que se cierran automáticamente.

Modernización interna

No pienses que React es lo último. React es del 2013, es lo que todo el mundo usa pero no es lo más puntero. Ahora está de moda una técnica nueva llamada HTML Over The Wire. Pues bien, hemos refinado nuestro motor de interfaz gráfica, quitándole todo lo viejo y poniéndole todo lo nuevo, para convertirlo en un motor HTML Over The Wire de última generación. Además, hemos quitado muchas cosas relacionadas con el mundo J2EE, EJBs, JSPs, etc. En resumen todo esto:

  • Nuevo generador de interfaz de usuario escrito en Java puro. Se elimina el renderizador JSP heredado.
  • Se eliminan las dependencias de las API de J2EE y Java EE.
  • Se elimina la dependencia de javax.ejb.
  • Las excepciones específicas de EJB se sustituyen por excepciones de OpenXava.
  • RemoteException deja de utilizarse como excepción general del sistema; muchos métodos ya no la lanzan.
  • Las excepciones de tiempo de ejecución ya no se declaran en las cláusulas throws.
  • Se elimina la biblioteca DWR. El código se reescribe para utilizar JavaScript fetch() y servlets de Java para HTML Over The Wire.

Otras mejoras

Aún hay más. Mira:

  • Toda la funcionalidad de chat se integra en el núcleo. Se elimina openxava-7.7-chat-jdk17.
  • AGENTS.md en los arquetipos se actualiza para OpenXava 8: indica a los agentes de IA que utilicen imports jakarta.*.
  • Los ejemplos de código para agentes de IA ahora se enlazan desde GitHub en lugar de utilizar una carpeta .xava generada.
  • Se elimina el artefacto openxava-agents-examples; la carpeta .xava ya no se genera en los proyectos nuevos.
  • Nuevo atributo readOnlyAsLabel para la taglib xava:editor.
  • Se eliminan jquery-ui.css y smoothness/jquery-ui.css, junto con sus imágenes de tema.
  • La base de datos HSQLDB se cierra automáticamente mediante DBServer cuando se detiene la aplicación.
  • DBServer comprime automáticamente los archivos .lobs en archivos .lobs.zip cuando se detiene la base de datos HSQLDB.
  • Nuevos métodos getDefaultSchema() y setDefaultSchema() en PersistenceFacade.
  • Nuevo método rollBack() en MapFacade.
  • El atributo de sesión xava.coreViaAJAX se renombra a xava.coreViaHotwire.
  • Los nuevos proyectos creados a partir de arquetipos ya no requieren especificar una versión de Lombok en pom.xml.
  • Las fuentes se incrustan en el informe de ejemplo de invoicedemo para garantizar una representación uniforme en todas las plataformas.
  • Se añade el conversor JPA YesNoConverter para mejorar la compatibilidad con bases de datos que utilizan la intercalación PAD SPACE.
  • Nueva anotación UUID32 para admitir UUID de 32 caracteres en Hibernate 7.
  • Se sustituyen los tipos de colecciones sin tipo por genéricos en View, Tab, MapFacade y otras clases del núcleo.
  • Se eliminan los avisos de tipos no comprobados del código de OpenXava.
  • Hibernate elimina la anotación @Columns; se debe utilizar @CompositeType con @AttributeOverrides en su lugar.
  • En los proyectos nuevos, DBManager se encuentra ahora en el paquete tools. El paquete run ya no existe.

Librerías actualizadas

Hemos actualizado la siguientes librerías de terceros:

  • Hibernate actualizado a 7.4.1.
  • LangChain4J actualizado a 1.18.1.
  • JasperReports actualizado a 7.0.7.
  • Commons Validator actualizado a 1.11.0.
  • JSoup actualizado a 1.23.1.
  • HtmlUnit actualizado a 5.2.0.
  • PDFBox actualizado a 3.0.8.
  • JSON actualizado a 20260719.
  • HotSwapAgent actualizado a 2.0.3 (dependencia proporcionada, por lo que el JAR no se incluye).
  • CommonMark actualizado a 0.29.0.
  • Lombok actualizado a 1.18.46.
  • Commons Collections 4 actualizado a 4.5.0.
  • Jersey actualizado a 4.0.2.
  • Hibernate Validator actualizado a 9.1.0.
  • Se eliminan las dependencias de Groovy, Jersey, Jakarta JSON Binding, Hibernate Ant y Tomcat DBCP.

Documentación

Hemos estado trabajando para mejorar la documentación:

  • Nuevo artículo de documentación sobre el despliegue en producción como aplicación independiente sin Tomcat.
  • Documentación sobre el despliegue en Tomcat actualizada para OpenXava 8 y Tomcat 11.
  • Documentación sobre Java 25 mejorada para incluir la versión explícita de Lombok en pom.xml.
  • Documentación de anotaciones actualizada para incluir todas las nuevas anotaciones de Jakarta Validation y Hibernate Validator.
  • Artículo sobre mapeo objeto/relacional de la Guía de Referencia actualizado para Jakarta Persistence 3.2/Hibernate 7.
  • Guía de Referencia actualizada para Jakarta EE 11.
  • Documentación de JPA actualizada a JPA 3.2, incluyendo mejoras en el formato del texto y del código.
  • Documentación sobre asistentes de IA para programación actualizada para OpenXava 8.

Arreglo

Aunque esta no es una versión de mantenimiento hemos arreglado algo:

  • Se corrigen 3 vulnerabilidades de seguridad en dependencias; ahora no hay ninguna vulnerabilidad.
  • Arreglo: En algunos casos, los cambios realizados en los datos de HSQLDB se pierden al detener la aplicación.

Pruébalo tú mismo

Prueba la nueva versión creando un proyecto nuevo. Sigue nuestras instrucciones de inicio rápido:

Inicio rápido

blog comments powered by Disqus

English