September 28, 2026
OpenXava 8.0 released
Version 8 represents a new era for OpenXava. A new OpenXava inside and out, while remaining true to its essence.
OpenXava is now based on Spring Boot (the latest version), supports Jakarta EE (the latest version), and has a modern look and feel worthy of 2026. In addition, we have removed all technological remnants of the past.
But it is still OpenXava. Your code will continue to work, with the same entities, the same actions, the same calculators. The approach of writing only simple Java classes to get an application is still there, intact. Only now everything is modern, as modern as imaginable.
All this, plus more than 60 new features.
Watch the video where we show you the new OpenXava 8:
|
|
|
| OpenXava 8.0 released |
|
|
To upgrade your application to version 8, follow the migration instructions. If you simply want to try it out, create a new project by following the quick start guide.
|
|
Spring Boot
Spring is the ubiquitous framework in the Java world, and Spring Boot is the most popular way to create and run a Spring application. Until now, OpenXava had turned its back on Spring, but that is over. In version 8, OpenXava applications are also Spring Boot applications, so you can feel at home. These are the things we have done:
- Spring Boot 4.1 as the default application launcher; standard Jakarta EE 11 WAR is also supported.
- Generated WAR is executable directly via java -jar, without an application server.
- Dependency versions are now aligned with Spring Boot 4.1.
- Root context configuration done in application.properties instead of AppServer.run("").
- error404.html and error500.html no longer included; Spring Boot whitelabel error pages used instead.
- javaLoggingLevel properties in xava.properties removed; use logging.level in application.properties.
- web.xml is no longer used; define servlets, filters, listeners, etc. via annotations.
- applicationPort property removed from xava.properties; configure the port using Spring Boot settings.
- AppServer class removed. Launcher class should now extend OpenXavaApplication.
- Hibernate version no longer fixed in pom.xml; it now uses the version provided by the Spring Boot BOM.
- DataSource definition moved from context.xml to application.properties.
- Several datasources can be declared in application.properties with the openxava.datasources.* prefix.
|
|
Jakarta EE
In version 7, we decided to be compatible with Java EE and Java 8, and we have maintained this compatibility throughout the entire version 7, as is only natural. But four years have passed, and now Java 17 is the minimum standard, along with Jakarta EE. We have taken advantage of version 8 to give you the option of using modern Java in your applications. Here are the details:
- Jakarta EE 11 support.
- Jakarta Persistence 3.2 support. Dropped support for JPA 2.2.
- Jakarta Servlet 6.1 support. Dropped support for Servlet 4.0.
- Generated WAR is deployable in a standalone Tomcat 11.
- JavaMail upgraded to Jakarta Mail 2.1 (Eclipse Angus 2.0.5).
- Upgraded from javax.inject (JSR 330) to Jakarta Dependency Injection 2.0.1.
- JAX-RS 4.0 support. Dropped support for JAX-RS 2.1.
- Jakarta JSON Binding 3.0.1 support. Dropped support for JSON Binding 1.0.
- WebSocket upgraded to Jakarta WebSocket 2.2.
- Jakarta Validation 3.1 support. Dropped support for Bean Validation 2.0.
- Tomcat 11 support. Dropped support for Tomcat 10, 9 and 8.
- Java 17 as baseline. Dropped support for Java 8 and 11.
|
|
Modern look and feel
OpenXava's visual style had barely changed since version 6.0, released in 2018. Some of your users were starting to notice this and see OpenXava applications as somewhat outdated. We have addressed this. Every aspect of the user interface has been redesigned to have a 2026 look and feel, on par with leading applications such as Attio, Linear, and Notion. Here is a summary of some of the things we have done:
- New modern look and feel for the whole user interface, comparable to current leading web applications.
- New light theme with a clean slate palette and indigo accent color.
- Polished dark theme with a real black zinc palette and improved text legibility.
- Element collections now have a clean spreadsheet look with hairline row separators.
- Required fields are now marked with a red asterisk next to the label.
- Boolean fields are now shown as switches instead of checkboxes.
- Row actions in collections and lists are revealed on mouse hover or keyboard focus.
- New thin top progress bar for loading, shown only when an operation takes more than a moment.
- Field labels are now placed on top of the fields by default.
- @LargeDisplay row now distributes cards evenly across the full width.
- New Auto theme that follows the operating system light or dark preference automatically.
- Theme chooser simplified to Auto, Light and Dark.
- Removed terra.css, blue.css and black-and-white.css themes.
- Removed legacy portal stylesheets default.css and skins.css; the fallback CSS in Style is now auto.css.
- Success, warning and information messages shown as modern toast notifications that close automatically.
|
|
Modern guts
Don't think React is the latest thing. React dates back to 2013; it's what everyone uses, but it's not the cutting edge. A new technique called HTML Over The Wire is now trending. Well, we have refined our user interface engine, removing everything old and adding everything new, to turn it into a state-of-the-art HTML Over The Wire engine. We've also removed many things related to the J2EE world, EJBs, JSPs, etc. In short, all of this:
- New user interface generator written in pure Java. Dropped legacy JSP renderer.
- Removed dependencies on J2EE and Java EE APIs.
- Removed javax.ejb dependency.
- Replaced EJB-specific exceptions with OpenXava exceptions.
- RemoteException is no longer used as a general system exception; many methods no longer throw it.
- Runtime exceptions are no longer declared in throws clauses.
- DWR library removed. Code rewritten to use JavaScript fetch() and Java servlets for HTML Over The Wire.
|
|
Other improvements
There's more. Take a look:
- All chat functionality moved to core. openxava-7.7-chat-jdk17 removed.
- AGENTS.md in archetypes updated for OpenXava 8: instructs AI agents to use jakarta.* imports.
- Code examples for AI agents are now linked from GitHub instead of a generated .xava folder.
- openxava-agents-examples artifact removed; the .xava folder is no longer generated in new projects.
- New readOnlyAsLabel attribute for the xava:editor taglib.
- jquery-ui.css and smoothness/jquery-ui.css (plus its theme images) removed.
- HSQLDB database is automatically shut down by DBServer when the application stops.
- DBServer automatically compresses .lobs files into .lobs.zip files when the HSQLDB database stops.
- New getDefaultSchema() and setDefaultSchema() methods in PersistenceFacade.
- New rollBack() method in MapFacade.
- Session attribute xava.coreViaAJAX renamed to xava.coreViaHotwire.
- New projects created from archetypes no longer require an explicit Lombok version in pom.xml.
- Embedded fonts in the sample report in invoicedemo for consistent rendering across all platforms.
- Added YesNoConverter JPA converter to improve compatibility with databases that use PAD SPACE collation.
- New UUID32 annotation for 32-character UUID support in Hibernate 7.
- Replaced raw collection types with generics in View, Tab, MapFacade and other core classes.
- Cleaned up unchecked warnings in OpenXava codebase.
- @Columns annotation removed by Hibernate; use @CompositeType with @AttributeOverrides instead.
- DBManager in new projects is now located in the tools package. The run package no longer exists.
|
|
Upgraded libraries
We have upgraded the following third party libraries:
- Hibernate upgraded to 7.4.1.
- LangChain4J upgraded to 1.18.1.
- JasperReports upgraded to 7.0.7.
- Commons Validator upgraded to 1.11.0.
- JSoup upgraded to 1.23.1.
- HtmlUnit upgraded to 5.2.0.
- PDFBox upgraded to 3.0.8.
- JSON upgraded to 20260719.
- HotSwapAgent upgraded to 2.0.3 (provided dependency so jar is not included).
- CommonMark upgraded to 0.29.0.
- Lombok upgraded to 1.18.46.
- Commons Collections 4 upgraded to 4.5.0.
- Jersey upgraded to 4.0.2.
- Hibernate Validator upgraded to 9.1.0.
- Groovy, Jersey, Jakarta JSON Binding, Hibernate Ant, and Tomcat DBCP dependencies removed.
|
|
Documentation
We have been working to improve documentation:
- Documentation article on deploying in production as a standalone application without Tomcat.
- Tomcat deployment documentation updated for OpenXava 8 and Tomcat 11.
- Java 25 documentation improved to include the explicit Lombok version in the pom.xml.
- Annotations doc updated to include all new annotations from Jakarta Validation and Hibernate Validator.
- Object/relational mapping article in the Reference Guide updated for Jakarta Persistence 3.2/Hibernate 7.
- Reference Guide updated for Jakarta EE 11.
- JPA documentation updated to JPA 3.2, including improvements to text and code formatting.
- AI coding assistants documentation updated for OpenXava 8.
|
|
Bug fixes
Though this is not a maintenance version we have done some fixes:
- Fixed 3 security vulnerabilities in dependencies; now there are 0 vulnerabilities.
- Fix: Changes made to HSQLDB data are lost in some cases after stopping the application.
|
|
Try it yourself
Try the new version by creating a new project. Follow our quick start instructions:
|
|
|
|