Skip to content

Java 17 (LTS) Migration

Harsha Amarasiri edited this page Feb 26, 2026 · 5 revisions

⚒️ WIP: This page is in active development

1. Background & Motivation

Oxalis-NG is currently built on Java 11. Java 11 (Oracle JDK) GA support ended September 2023 and the extended support window is closing(~2032). Continued use of Java 11 creates the following risks:

  • Security: Running on an out-of-support JVM indicates no guaranteed security patches for most distributions (Eclipse Temurin, Microsoft, Red Hat, Azul Zulu all reached EOL in October 2024). Amazon Corretto 11 has extended support till January 2032 is the notable exception

  • Dependency lock-in: Key upstream libraries are dropping Java 11 support

    • Apache CXF 4.2.x sets Java 17 as its minimum baseline

Java 17 LTS is supported through September 2029 across all major distributions, providing a stable runway for further upgrades.

2. Scope

Migration will be carried out through following repositories in dependency order:

  1. peppol-specifications
  2. pkix-ocsp
  3. commons-validator
  4. vefa-peppol
  5. oxalis-ng

3. Migration Strategy

The migration of each repository will follow steps listed below:

  1. Java Version Update: Update source and target compatibility to Java 17 in build configuration(Maven). Refactor code to address any Java 17 specific issues or deprecations. Ensure all tests pass successfully.

  2. Dependency Updates: Review and update all project dependencies to their latest versions that support Java 17+. This may involve updating the pom.xml files and resolving any compatibility issues that arise in the source files. Ensure all tests pass successfully after dependency updates.

  3. Deprecated API Cleanup: Identify and address any deprecated APIs or features in the codebase. This may involve refactoring code to use alternative APIs or updating third-party libraries that rely on deprecated features. Ensure all tests pass successfully after cleanup.

This phase-wise approach will ensure a smooth transition to Java 17 while minimizing risk of disruption.

4. Migration Plan

Repository Java Version Update Dependency Updates Deprecation Handling
peppol-specifications
pkix-ocsp
commons-certvalidator
vefa-peppol
oxalis-ng

Impact on build/release pipelines needs to be investigated and updated for each repository.

5. Known breaking changes [JDK 11 -> JDK 17]

  • Use of record keyword is now reserved for Java record type. Wildcard imports in oxalis import org.xbill.DNS.* conflicts with java.lang.Record Explicit import of org.xbill.DNS.Record is required.

6. Migration Log

Repository Branch Status PR Notes/Findings
peppol-specifications java17 log
pkix-ocsp log
commons-validator log
vefa-peppol log
oxalis-ng log

7. References

8. Community Issues and Discussions

Clone this wiki locally