March 14, 2026 • 2 min read
Java Journey
Part 2
How Java Ships: JEPs, CSR, and the 6-Month Train
A quick map of how Java features move from JEP idea to general availability (GA) and how to try them without surprises.
TL;DR
JEP status plus CSR notes tell you what is real, how to enable previews, and when a feature is actually shipping.
- java
- jep
- release cadence
Series
- Part 1 · Why I'm Deepening My Java Skills in 2026
- Part 2 · How Java Ships: JEPs, CSR, and the 6-Month Train
- Part 3 · Java 25 Playground
I went looking for how Java decides and ships features; it is orderly and fast once you know the map.
What I learned
- Treat JEPs (JDK Enhancement Proposals) as the public proposal and implementation plan; Targeted means it is slated for a specific JDK train. JEP index
- Expect CSR (Compatibility and Specification Review) to vet every new public API for spec, Javadoc, and compatibility before code lands. OpenJDK guide
- Use the platform JSR (Java Specification Request) for that release (e.g., JSR 397 for Java SE 21) as the formal spec sign-off under the JCP (Java Community Process). JCP JSR 397
- Plan for releases every March and September; LTS (Long-Term Support) every three years (11, 17, 21, 25). OpenJDK JDK project
How to try a preview safely
- Compile/run preview language features with
--enable-preview --release <jdk>. - Load incubator modules with
--add-modules jdk.incubator.<name>(and--enable-previewif required). - Read the JEP’s “Risks and Assumptions” and the linked CSR to see API edges before touching prod code.
- Stick to GA (general availability) features for production; treat preview as learning or guarded experiments.
Takeaway
Tracking JEP status plus CSR notes tells you when a feature is real, how to enable it, and what might break. Upgrading on the 6-month train gets easier when you follow that checklist.