openxava
Blog

March 24, 2025

OpenXava 7.5 released

We have modified OpenXava to support hot code reloading during development without affecting performance in production. This version also includes a visual style update and many other useful features, such as new chart types for @Chart, new options for @Tree, and more. In total, over 30 new features that you're going to love!

OpenXava 7.5 released

To update edit the pom.xml file in your project and change the value of the openxava.version property, in this way:

<properties>
    <openxava.version>7.5</openxava.version>
    ...
</properties>

Then rebuild your project:

  • With OpenXava Studio:
    • Right mouse button in your project > Run As > Maven clean
    • Right mouse button in your project > Run As > Maven install
  • Or with command line: mvn clean package
You don't need to download OpenXava Studio again, your current OpenXava Studio will work with the new OpenXava version automatically. You don't need to download anything, just update the pom.xml of your project.

Look at the migration instructions.

Hot code reloading

This means you can modify any part of the code, save it, go to the browser and see the updated application. Everything happens instantly, without needing to build, run Maven install, restart the application, or even reload the page in the browser.

These are the changes you can make to your application without restarting it. Most of them take effect without even reloading the browser page:

  •  Java code: Add, remove, or modify fields, methods, annotations, classes (including anonymous ones), static members, and enumeration values. Anonymous class redefinition and static member initialization are properly handled.
  • Calculated properties: You can add, remove, or modify a calculated property in an entity and it will immediately appear in the application, both in list and detail modes.
  • OpenXava annotations: If you change, add, or remove OpenXava annotations like @View, @DescriptionsList or @Tab, you'll also see the effect immediately.
  • Persistent properties: When adding, modifying, or removing a persistent property from an entity, it will be immediately visible in the user interface, in both detail and list modes. Additionally, if schema evolution is enabled, the corresponding column will be created in the database table.
  • New entities: If you create a new class and annotate it with @Entity, it will not only be recognized but will automatically have a new module available (in the left menu and via URL). If schema evolution is enabled, the table will be created in the database. In this case, you need to press the reload button in the browser to see the new module.
  • Controllers: If we add or remove controllers in controllers.xml, add, modify or change actions in a controller, etc. Everything is recognized immediately, with actions appearing (or disappearing) as soon as we trigger an action in the user interface.
  • Application: We can add, modify and remove modules in application.xml. New modules are visible after pressing reload in the browser.
  • Labels and messages: If we change labels and messages in i18n files, it also takes effect without restarting the application. However, in this case, you need to reload the browser to see the new labels.
It's not necessary to start in debug mode for changes to be recognized, but you do need to start with the Java from OpenXava Studio 7 R4. Hot code reloading also works with IntelliJ and Visual Studio Code. Learn more in the documentation.
 

Modern visual style

A more rounded and flat visual style in line with current design trends:

  • Rounded corners for frames, dialogs, lists, cards, buttons, messages, sign in, tooltips, charts, etc.
  • Flat design applied to most UI elements, removing shadows.
  • Tabs and buttons no longer use all uppercase.
  • Frames no longer use gradients for backgrounds.
  • Nested frames use a different background color.
  • In the Dark theme, the border of lists is removed and replaced by a color change in the background.
The CSS structure remains unchanged, and we keep the current themes with their existing color palette, so you don't have to worry about any incompatibility in your current code.

Other improvements

We have done some improvements in other areas:

  • Pie and line charts available for collections by means of the new 'type' attribute in @Chart.
  • Number of row actions to show a popup is configurable via rowActionsPopupThreshold in xava.properties.
  • New allowMoveNodes attribute in @Tree annotation to disable drag & drop to move nodes in the tree.
  • @Tree annotation is enough to visualize collections as a tree, no need to use @Editor("TreeView").
  • Resizing columns by the user in list and collections enabled by default.
  • Custom JPA EntityManagerFactory creation with entityManagerFactoryProviderClass in xava.properties.
  • default-controllers-ext.xml / controladores-defecto-ext.xml to define controllers in libraries/frameworks.
  • The HTML title for the module is now "Module name - Application name".
  • JSP taglibs xava:action, xava:link, xava:image and xava:button have a new 'alwaysAvailable' attribute.
  • All Java code of openxava core framework converted to UTF-8 encoding.
  • AppServer launcher class has a new method run(application, extraClassPaths) to indicate extra classpaths.
  • Java 11 as default compiler level for new projects (from archetypes), though Java 1.8 is still supported.
  • Some new common use labels to be used in applications.

Upgraded libraries

We have upgraded the following third party libraries:

  • Commons Logging upgraded to 1.3.5.
  • Groovy upgraded to 4.0.26.
  • HtmlUnit upgraded to 4.10.0.
  • PDFBox upgraded to 3.0.4.
  • JSoup upgraded to 1.19.1.
  • Json upgraded to 20250107.
  • Embedded Tomcat used in development upgraded to 9.0.102.
  • Driver version in doc/new projects upgraded for MySQL, PostgreSQL, Oracle, AS/400 and Informix.

Documentation

We have been working to improve documentation:

  • Documentation in reference guide to create optional row actions depending on the content of the row.
  • List mode actions documentation in the controllers section of the reference guide improved.
  • Video for creating a CRM included in the project templates documentation article.
  • Lesson 10 of the reporting course with JasperReports available in the documentation with video.

We release new docs and videos constantly, not waiting for the official release of the code. So you have been already using some of the above material, although all the above docs are in the GitHub under the 7.5 tag.

Bug fixes

Though this is not a maintenance version we have done some fixes:

  • Fix: Redundant calls to isAvailable() of IAvailableAction in row actions (introduced in v7.4).
  • Fix: Extra space between row actions when one is omitted using IAvailableAction.
  • Fix: IAvailableAction in a row action not shown in any row if not available in the first row (bug of 7.4).

blog comments powered by Disqus

Español