enhancement
major
minor
major
minor
The engine is compiled for and runs on Java 17. Switch it to Java 21:
- Maven: compiler source/target level 21 in the root POM. The GWT modules keep source level 17 (the highest GWT supports) and target Java 21; the GWT-shared modules (tl-basic-shared, tl-common-remote) keep source level 1.8 and target Java 21.
- Eclipse project settings (.classpath, org.eclipse.jdt.core.prefs, launch configurations), including the application archetype.
- JSPs are compiled for Java 21 (JSP compile test and the JSP servlet of the IDE Jetty).
- The development Jetty (tl-ide-jetty, Kafka server) runs in the Jakarta EE 11 environment (jetty-ee11-*, Jakarta Pages 4.0), whose Jasper brings an ECJ supporting Java 21. The JSP API is raised to jakarta.servlet.jsp-api 4.0.0.
- The finalize() methods (deprecated for removal since Java 18) are removed; where a clean up is still required, it is registered with a java.lang.ref.Cleaner (ResourceCleaner).
- System requirements in the admin guide.
Migration
Applications built on this engine version require a Java 21 JDK for building and a Java 21 runtime for operation. In the application's Eclipse projects, switch the JRE container from JavaSE-17 to JavaSE-21 and the compiler compliance level to 21.
Applications that use classes of the Jetty EE 10 environment directly (org.eclipse.jetty.ee10.*, artifacts jetty-ee10-*) must switch to the EE 11 environment (org.eclipse.jetty.ee11.*, jetty-ee11-*). Applications declaring jakarta.servlet.jsp-api themselves must use version 4.0.
AbstractCloseableIterator and AbstractStatementBatch no longer close themselves when they are garbage collected without having been closed. Make sure such iterators and batches are always closed (e.g. with try-with-resources).