Modernize Java
Operational guides for upgrading Java: the Java 25 upgrade hub, LTS-to-LTS migration paths (8→17, 17→21, 21→25, 17→25), AutoValue-to-records modernization, and the breaking changes each jump surfaces.
Last verified · Updated May 22, 2026
Java's LTS-to-LTS jumps (8 → 11 → 17 → 21 → 25) ship real breaking changes — the module system, removed javax.* Java EE modules, and strong encapsulation of JDK internals. Java 25 (GA 2025-09-16) is the current LTS target; Java 26 (GA 2026-03-17) is the latest non-LTS major. This hub links every supported upgrade path plus the modernizations those upgrades unlock.
What this covers
Start at the Java 25 upgrade hub for the full breaking-change picture, then pick the source-to-target page that matches the LTS you are on today. Each page includes a repo-inspection prompt, step-by-step migration, a test plan, and rollback guidance.
Java LTS support matrix
| Version | Released | LTS | Oracle Premier Support until | Support status |
|---|---|---|---|---|
| Java 8 | 2014-03-18 | Yes | March 2022 | Security-only |
| Java 11 | 2018-09-25 | Yes | September 2023 | Maintenance |
| Java 17 | 2021-09-14 | Yes | September 2026 | Active (Premier ending) |
| Java 21 | 2023-09-19 | Yes | September 2028 | Active |
| Java 25 | 2025-09-16 | Yes | September 2030 | Current LTS |
Version timeline
- 25 — current, LTS, active (released 2025-09-16 · EOL 2030-09-30)
- 21 — LTS, active (released 2023-09-19 · EOL 2028-09-30)
- 17 — LTS, active (released 2021-09-14 · EOL 2026-09-30)
- 11 — LTS, maintenance (released 2018-09-25)
- 8 — LTS, security_only (released 2014-03-18)
Java migration paths
- Migrate Google AutoValue to Java Records — Migration
- Java 17 to Java 21 Migration Guide — Version path
- Java 17 to Java 25 Migration Guide — Version path
- Java 21 to Java 25 Migration Guide — Version path
- Java 8 to Java 17 Migration Guide — Version path
- Upgrade to Java 21 — Upgrade hub
- Upgrade to Java 21 — Version path
- Upgrade to Java 25 — Upgrade hub
- Upgrade to Java 25 — Version path
Frequently asked questions
Which Java version should I target?
Java 25 is the current LTS (GA 2025-09-16, Oracle Premier Support to September 2030) and the recommended target for new and modernizing projects. Java 21 remains a supported LTS through September 2028. If you are on Java 8, plan a stop at 17 first — the module system, removed Java EE modules, and strong encapsulation all land between 8 and 17, so splitting the work de-risks it. Java 26 is a six-month non-LTS release, so most production teams stay on the latest LTS rather than chasing it.
I'm on Java 17 — is it still supported?
Yes, but Oracle Premier Support for Java 17 ends in September 2026, and public updates already moved to the Java SE OTN license in October 2024. Java 17 → 25 is a small, mostly additive LTS step, so it's a good time to plan the jump to the current LTS.