JDK 27 Changelog: All New Features
A complete list of features and JEPs in JDK 27 (September 2026), including Post-Quantum Hybrid Key Exchange, Compact Object Headers by default, and G1 as default GC everywhere.
JDK 27 Changelog
JDK 27 was released on 15 September 2026 as a non-LTS release focused on post-quantum security and runtime performance. The highlight is the Post-Quantum Hybrid Key Exchange for TLS 1.3, alongside Compact Object Headers by default and G1 GC as the universal default.
JEP Summary
| JEP Number | Feature |
|---|---|
| 523 | Make G1 the Default Garbage Collector in All Environments |
| 527 | Post-Quantum Hybrid Key Exchange for TLS 1.3 |
| 531 | Lazy Constants (Third Preview) |
| 532 | Primitive Types in Patterns, instanceof, and switch (Fifth Preview) |
| 533 | Structured Concurrency (Seventh Preview) |
| 534 | Compact Object Headers by Default |
| 536 | JFR In-Process Data Redaction |
| 537 | Vector API (Twelfth Incubator) |
| 538 | PEM Encodings of Cryptographic Objects (Third Preview) |
Key Features
Post-Quantum Hybrid Key Exchange for TLS 1.3 (JEP 527)
Java 27 strengthens post-quantum cryptography support: TLS 1.3 introduces a hybrid key exchange that combines a classical algorithm (X25519) with the post-quantum ML-KEM algorithm, defending against "harvest now, decrypt later" attacks:
// Set up an SSLContext using a post-quantum hybrid key exchange
SSLContext context = SSLContext.getDefault();
// TLS 1.3 using X25519MLKEM768 for key exchange
Compact Object Headers by Default (JEP 534)
Objects are compacted by default: the object header shrinks (from 128 to 64 bits) on platforms that support the compact format, delivering substantial memory savings and better cache density:
java -jar app.jar # compact format active by default
Make G1 the Default GC in All Environments (JEP 523)
The G1 garbage collector becomes the default GC in all environments, unifying behavior and simplifying the choice for developers who do not explicitly pick a collector.
Lazy Constants (JEP 531) — Third Preview
Lazy Constants (constants evaluated lazily, at first access) continue their preview path, offering an alternative to expensive, synchronized initializations:
static final LazyConstant<Integer> cfg = LazyConstant.of(() -> loadConfiguration());
// The value is computed only at first access
JFR In-Process Data Redaction (JEP 536)
The Java Flight Recorder can now redact sensitive data directly while recording events, keeping passwords, tokens, and other confidential information out of diagnostic outputs.
Remove Legacy TLS Key Exchange
With the post-quantum push, the legacy TLS key exchange algorithms and the related legacy object headers are removed, and old PEM-parsing APIs are deprecated.
Other Changes
- Primitive Types in Patterns (532): Fifth preview.
- Structured Concurrency (533): Seventh preview.
- PEM Encodings of Cryptographic Objects (538): Third preview.
- Vector API (537): Twelfth incubator.
Conclusion
JDK 27 doubles down on post-quantum security (hybrid key exchange for TLS 1.3) and on runtime performance (compact object headers by default, G1 as default everywhere, JFR improvements). It is a recommended upgrade for anyone running network-exposed services who wants to be ready for the quantum-computing era while keeping a simple, efficient runtime.