Modernize Java
Operational guides for upgrading Java: the Java 21 upgrade hub, LTS-to-LTS migration paths (8→17, 17→21), 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) ship real breaking changes — the module system, removed javax.* Java EE modules, and strong encapsulation of JDK internals. This hub links every supported upgrade path plus the modernizations those upgrades unlock.
What this covers
Start at the Java 21 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 | Support status |
|---|---|---|---|
| Java 8 | 2014-03-18 | Yes | Security-only |
| Java 11 | 2018-09-25 | Yes | Maintenance |
| Java 17 | 2021-09-14 | Yes | Active |
| Java 21 | 2023-09-19 | Yes | Current |
Version timeline
- 21currentLTSactivereleased 2023-09-19
- 17LTSactivereleased 2021-09-14
- 11LTSmaintenancereleased 2018-09-25
- 8LTSsecurity onlyreleased 2014-03-18
Java migration paths
Frequently asked questions
Which Java version should I target?
Java 21 is the current LTS and the recommended target for new and modernizing projects. 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.