See the project documentation, and the project wiki.
The jakarta branch builds stdlib 15.0.0-SNAPSHOT for Java 25 and later,
using Servlet 6.1 (Tomcat 11), Guice 7, RESTEasy 7, Hibernate ORM 7.4,
Jakarta JAXB 4 and MOXy 5.0.2. Rebuild consumers together: the public REST,
persistence and servlet APIs now use jakarta.*.
The root parent pins upstream ASM to 9.11.1 through the ASM BOM, aligning MOXy and Guice on the same bytecode support libraries.
The reactor also packages OGNL 3.4.17 with a targeted generic method resolution
fix for Hibernate's persistent collections as com.peterphi.std:stdlib-ognl:15.0.1-SNAPSHOT.
Consumers must use this artifact instead of adding a separate upstream OGNL jar.
Use a Java 25 JDK for the shared artifacts:
JAVA_HOME=$(/usr/libexec/java_home -v 25) mvn -B clean installThen build the jakarta branches of Job Manager (8.0.0-SNAPSHOT),
assembly-vcasod, assembly-signage and NENT (8.0.0-SNAPSHOT), in that order.
NENT's branch starts from java-27. The default bytecode target is 25;
the same artifacts run on Java 27. To test compilation and execution with
Java 27 bytecode, use a JDK 27 and mvn -B clean verify -Djavalang.version=27.
CI also tests JDK 27 with the default Java 25 target.
When porting another consumer:
- Convert the Jakarta EE APIs, including JAXB service descriptors and Jackson's
Jakarta REST/JAXB providers. Java SE packages such as
javax.sql,javax.naming,javax.xml.parsersandjavax.xml.transformretain their names. - Use
persist(entity)for new entities. For detached entities, useentity = dao.merge(entity)and make further changes to the returned managed instance. Hibernate 7 removessave,saveOrUpdateand legacy Criteria. - Preserve existing identity and sequence strategies. Hibernate's new default
sequences differ from Hibernate 5's shared
hibernate_sequence; map that sequence explicitly with allocation size 1 where existing databases use it. - Replace removed versioned dialect names with
PostgreSQLDialectorSQLServerDialect. Keep stdlib'sPostgresDialectfor existingbyteaLOB mappings; it preserves both the column type and JDBC binding.
Tomcat 11 requires rebuilt Jakarta WARs. Use disposable databases to qualify
deployment and existing schema compatibility before upgrading a running stack.
Job Manager's scripts/jakarta-runtime-image.sh prepares the shared local
Tomcat 11 / Java 25–27 test image from the sibling domains bundle.