Files
javademos/docs/12-lanes-25-to-29.md

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) &middot; Next: [13. Upgrade checklist](13-upgrade-checklist.md) &middot; Coming from 21: [14](14-lanes-21-to-25.md)