Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01B38FGKKam5SCGgwgduVAh3
32 lines
2.6 KiB
Markdown
32 lines
2.6 KiB
Markdown
# 12. Version lanes: 25 (LTS) to 29 (next LTS)
|
|
|
|
Ordinals in the 25 column come from Java 25's published JEP list (470, 502, 505, 507, 508), not from a run here; the existence of `StableValue` and `PEMRecord` in 25 and their absence in 26 *was* observed ([52](output/52-api-diff-25-to-26.txt)).
|
|
|
|
Prev: [11. Recap of Java 26](11-recap-26.md) · Next: [13. Upgrade checklist](13-upgrade-checklist.md) · Coming from 21: [14](14-lanes-21-to-25.md)
|
|
|
|
Dates and support windows are from Oracle's Java SE Support Roadmap, read on 2026-09-21: <https://www.oracle.com/java/technologies/java-se-support-roadmap.html>.
|
|
Feature notes link to the chapter that has the run.
|
|
|
|
| Release | GA | Kind | Premier support until | What to read here |
|
|
|---|---|---|---|---|
|
|
| 25 | Sept 2025 | **LTS** | Sept 2030 | the baseline for every "broke on 26/27" demo in this repository |
|
|
| 26 | March 2026 | non-LTS | Sept 2026 | [chapter 11](11-recap-26.md): final-field warnings, Applet removal, HTTP/3, AOT with any GC |
|
|
| 27 | Sept 2026 | non-LTS | March 2027 | chapters [2](02-g1-default.md) - [10](10-other-27-changes.md): G1 default, compact headers, PQ TLS, JFR redaction |
|
|
| 28 | March 2027 | non-LTS (planned) | Sept 2027 | not covered: not released |
|
|
| 29 | Sept 2027 | **LTS (planned)** | Sept 2032 | not covered: not released |
|
|
|
|
Oracle's stated cadence: "Oracle intends to make future LTS releases every two years meaning the next planned LTS release is Java 29 in September 2027."
|
|
Other vendors set their own support lengths for non-LTS builds; check the vendor you deploy.
|
|
|
|
The preview-feature ladder across the lane (each preview must be recompiled and can break the next release, see [20-broken-*](output/)):
|
|
|
|
| Feature | 25 | 26 | 27 |
|
|
|---|---|---|---|
|
|
| Structured Concurrency | 5th preview (JEP 505); `--enable-preview` needed, run in [82](output/82-structured-not-final.txt) | 6th preview (JEP 525), `anySuccessfulResultOrThrow` renamed `anySuccessfulOrThrow` ([89](output/89-joiner-api.txt)) | 7th preview (JEP 533), API reshaped |
|
|
| Lazy Constants (was Stable Values in 25) | Stable Values, preview | 2nd preview (JEP 526) | 3rd preview (JEP 531), `orElse`/`isInitialized` removed |
|
|
| PEM encodings | 1st preview (`PEMRecord`) | 2nd preview (JEP 524) | 3rd preview (JEP 538), `DEREncodable` renamed |
|
|
| Primitive patterns | 3rd preview | 4th preview (JEP 530) | 5th preview (JEP 532) |
|
|
| Vector API | 10th incubator | 11th (JEP 529) | 12th (JEP 537) |
|
|
|
|
Prev: [11. Recap of Java 26](11-recap-26.md) · Next: [13. Upgrade checklist](13-upgrade-checklist.md) · Coming from 21: [14](14-lanes-21-to-25.md)
|