September 21, 2022
OpenXava 7.0 released
After four years enjoying OpenXava 6, we're going to enter in a new era, the 7 era. While OpenXava 6 was a big change from the user experience and visual design perspectives, a change, by the way, too disruptive for some of your users, OpenXava 7 focuses on the developer part. OpenXava 7 represents a lot of improvements for the developers, especially for the Java developers.
Year after year, you have been asking us for support of your favorite Java technologies in OpenXava. You have asked us for Maven, Maven and Maven. Also for IntelliJ, some of you for NetBeans, Java 17 or Tomcat 10.
Don’t worry, we’re going to improve the UX and visual style too in this seven series, but in an incremental way. A few improvements in each new version, so your users are not going to think that you have changed your application by a new one, but at the same time keeping your application modern and easier to use in each new version.
The OpenXava you’re asking for is here. We hope you have fun with it.
Download OpenXava Studio 7.0 to create a new OpenXava 7.0 project, or follow the migration guide to migrate your current project to 7.0.
Maven, IntelliJ, Java 17 and Tomcat 10
The main new feature of OpenXava 7 is the Maven support. Now OpenXava projects have a Maven structure, we use Maven commands for every task and the Maven repository for fetching third party libraries. If you do not have a Java background, Maven is a standard way to work in the Java world. So, supporting Maven means that you can use any library or tool available for Java easily. As a consequence now you can use your favorite IDE with OpenXava, you can develop OpenXava 7.0 applications using IntelliJ, NetBeans, Eclipse or Visual Studio Code.
Another important advantage of being Maven compatible is that if you hire Java developers to help you to develop your application, they already know where the things are in the project, how to deploy it to Tomcat or how to add a new dependency. They are in familiar terrain.
Also OpenXava 7.0 has been adapted to work nicely with Java 17 and Tomcat 10, though Tomcat 8 and 9, and Java 8 and 11, are still supported.
Say goodbye to old things
There is no way to add new things without giving up the old.
We have dropped:
- Removed XML components support including all related code.
- Dropped support for Liferay, WebSphere Portal, JetSpeed, portals and portlets.
- Dropped support for Tomcat 7.
- Removed support for Servlet 3.0, now Servlet 3.1 is the minimum specification version supported.
- All EJB related code removed.
- The methods usesAnnotatedPOJO() and isPortalEnabled() removed from ModuleTestBase.
- IPropertyCodeGenerator interface removed.
- Documentation modules are no longer supported, now they are just ignored.
- IPadStyle removed, it was not enabled by default since v5.0.
- The usage of styles.properties to register styles is removed.
- Removed emailAsUserNameInPortal and portletLocales from xava.properties.
- MapFacade and MapFacadeBean are no longer EJB Session Beans.
- IRemoteAction interface and Server utility class removed.
- Removed DocumentLibrary editor for attaching documents using Liferay document library.
- Removed XHibernate and HibernatePersistenceProvider, though Hibernate API is still available.
- Removed JDBCTabProvider, used to get list data via JDBC, only used for XML components.
Don’t worry. Most of you don’t use the above technologies at all. XML Components, for example, were made obsolete in OpenXava 3.0, since OpenXava 3.0 all new applications were developed with POJOs and JPA. OpenXava 3.0 was released in 2008, that is, we’re maintaining until today a feature deprecated 14 years ago. About Liferay and portal support, since OpenXava 5.0 a navigation and security system is included in OpenXava, moreover since OpenXava 5.0 only Liferay 6.1 has been supported. OpenXava 5.0 is from 2014, so 8 years to migrate away from Liferay. And so on, with all other things we have dropped.
We have upgraded the following third party libraries:
- JasperReports upgraded to 6.20.
- Apache POI upgraded to 5.1.
- Apache Commons IO upgraded to 2.11.
- HtmlUnit upgraded to 2.63.
- Hibernate upgraded to 5.6.10.
- Hibernate Envers upgraded to 5.6.10.
- HSQLDB embedded database upgraded to 2.6.1.
- Embedded Tomcat used in development upgraded to 9.0.65.
- Hibernate Validator upgraded to 6.0.23.
- Groovy upgraded to 4.0.4.
- jsoup upgraded to 1.15.3.
- Apache PDFBox upgraded to 2.0.26.
- Apache Commons Validator upgraded to 1.7.
- JavaMail upgraded to 1.6.7.
- JAXB upgraded to 2.3.1.
- DWR upgraded to 2.0.11.
- Lombok upgraded to 1.18.24.
- Jersey (the JAX-RS implementation) upgraded to 2.36.
Moreover, we have changed the upgrade libraries policy. From now on, we’re going to upgrade third party libraries in each new version, for security reasons.
Last months we have been working to improve documentation and other learning material as videos:
- Source code for the course in English and Spanish available in GitHub for each lesson.
- Getting started guide translated to Chinese.
- Lessons 1 to 25 of course translated to Chinese.
- Lessons 9 and 10 of course divided into several smaller lessons.
- Lessons from 9 to 23 of course include video.
- Doc to deploy in production with Tomcat using Maven.
- Doc to configure MySQL, PostgreSQL, Oracle, MS SQL Server, AS/400, Informix, Db2 and Firebird with Maven.
- Removed outdated documentation in Russian, Chinese and French.
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.0 tag.
We have done a lot of improvements in other areas:
- Addons and OpenXava projects mixed in an unique project, openxava.
- Code for navigation and security refactored to be more plugable.
- IMAGES_GALLERY stereotype uses JPA for persistence instead of Hibernate.
- Added new database commented configurations in new projects: MS SQL Server, Informix, Db2 and Firebird.
- New projects do not include default schema by default in persistence.xml.
- Driver class not included for datasource and persistence unit definitions for new projects.
- New servlet session attribute xava.coreViaAJAX to disable load via AJAX on entering a module for the first time.
- New method getField() in Classes utility class.
- New getAsStreamInPrefixes() method in Resources utility class.
Though this is not a maintenance version we have done some fixes:
- Fixed 43 potential security vulnerabilities in dependencies, now we have 0 vulnerabilities.
- Fix: Editors for annotations do not work for child classes using inheritance.
- Fix: Searching in a @DescriptionsList does not ignore accents in some cases.
- Fix: Chinese MS950 encoding does not work well with simplified Chinese characters.
- Fix: Tooltip for page numbers always says "First page".
- Fix: Duplicate entry removed from i18n files.
- Fix: Extra blank space in "hide them" link in list mode.
- Fix: Module does not start showing a browser error with a headless Java, like the default one in Ubuntu.
- Fix: Incorrect encoding in Welcome page, so in some languages it shows ? instead of the actual characters.
- Fix: Some code in lessons 2 and 6 of course does not compile.
- Fix: Some incorrect explanation sentences in text of course.
- Fix: Some links to incorrect lessons in the top navigation menu of course.
- Fix: Message for "Template not found" on generating custom PDF is not translated.