JDK 27 Is Out: Nine Updates and Two New Defaults to Test

JDK 27, the reference implementation of Java 27, is now Generally Available. The GA build is Build 35, designated ready for production use. announcement
Build 35 shipped as the second Release Candidate on 20 August. No P1 bugs, the highest-severity defects, were reported since that build. The promotion was therefore mechanical. What tested as RC2 is what ships as GA.
GPL-licensed OpenJDK builds from Oracle are available at jdk.java.net/27. Binaries from other vendors will follow shortly after Oracle's production-ready GPL binaries. JDK 27 project page
The release date holds to plan. JDK 27 was in Rampdown Phase 2, the late stabilization stage, in late July, still on track for general availability on 15 September. It reached General Availability on 15 September 2026. That schedule was proposed and tracked under the JEP Process, as amended by the JEP 2.0 proposal, and produced using the JDK Release Process defined in JEP 3.
JDK 27 contains nine JEPs, the formal proposals used to change Java, plus hundreds of smaller enhancements and thousands of bug fixes.
What shipped
The nine are:
JEP 523: Make G1 the Default Garbage Collector in All Environments JEP 527: Post-Quantum Hybrid Key Exchange for TLS 1.3 JEP 531: Lazy Constants (Third Preview) JEP 532: Primitive Types in Patterns, instanceof, and switch (Fifth Preview) JEP 533: Structured Concurrency (Seventh Preview) JEP 534: Compact Object Headers by Default JEP 536: JFR In-Process Data Redaction JEP 537: Vector API (Twelfth Incubator) JEP 538: PEM Encodings of Cryptographic Objects (Third Preview)
Some terms need a brief definition. A garbage collector is Java's automatic memory cleanup. TLS 1.3 is the standard that encrypts network connections. JFR, Java Flight Recorder, is the built-in system for recording diagnostic events. PEM is a common text format for keys and certificates.
Two change runtime defaults. JEP 523 makes G1 the default collector in all environments. JEP 534 enables compact object headers, a smaller internal layout for each object to save memory, by default.
In practical terms, defaults matter more than flags. Most fleets run defaults.
Three address security, observability, and interoperability surface. JEP 527 brings post-quantum hybrid key exchange to TLS 1.3. JEP 536 adds in-process data redaction to JFR. JEP 538 adds PEM encodings of cryptographic objects as a third preview. Each touches data in motion, data in diagnostics, or data at rest in config and tooling.
Four continue long-running language and library tracks. JEP 531 takes lazy constants to a third preview. JEP 532 takes primitive types in patterns, instanceof, and switch to a fifth preview. JEP 533 takes structured concurrency, a simpler way to manage parallel tasks, to a seventh preview. JEP 537 takes the Vector API to a twelfth incubator.
The broader context here is that those preview and incubator counts matter. They signal maturity and remaining churn.
JDK 27 entered the Release Candidate phase with its overall feature set frozen. No further JEPs were to be targeted to JDK 27 after that freeze. The specification is JSR 402, the Java SE 27 specification.
Release mechanics and support position
JDK 27 was scheduled to enter Rampdown Phase One in early June. By late July it was in Rampdown Phase 2. That cadence follows the six-month train. Freeze, stabilize, fix P1s, ship.
Oracle lists Java 27 as a non-LTS release. support roadmap JDK 26 will receive updates until September 2026, when it will be superseded by JDK 27. Java 26 announcement
For teams deciding what to do next, those on JDK 26 should plan the move now. Teams on the last LTS can evaluate at leisure.
The broader context here is the predictability of the train itself. Six months, a frozen feature set, release candidates, promotion of an RC to GA when quality bars hold. There is little drama in this release, and that is the point.
In my view, the items worth early testing are the two default changes and the TLS change. Defaults propagate silently through base images and buildpacks. A collector default and a header layout default affect pause behavior, footprint, native tooling, and agents that read object layout. A hybrid key exchange in TLS 1.3 affects handshake bytes on the wire, middlebox tolerance, and peer interop. None of that argues against adoption. It argues for canary testing with production traffic shapes, production TLS peers, and production observability pipelines, including JFR consumers that will now see redaction controls.
Looking at what this means for platform teams, the preview-heavy tail is familiar. Lazy constants, primitive patterns, structured concurrency, PEM encodings, and Vector API remain explicitly non-final. Do not bake preview syntax or incubator APIs into long-lived internal frameworks without an exit plan. Do use them in isolated services where feedback is valuable and refactoring is cheap. The teams driving these JEPs need production-adjacent feedback more than they need votes.
In practical terms, JDK 27 is a solid incremental train release. Upgrade the test matrix, validate defaults, rotate the non-LTS fleets forward, and keep LTS fleets on their existing plan unless a specific JEP solves a specific problem.


