JDK 27 is out: what actually matters
Smaller objects by default, G1 everywhere, quantum-ready TLS, and why JDK 25 is still the one for production.
On this page ⌄
Java 27 went GA on 15 September 2026 with nine JEPs. Here are the ones that change something for you.
1. Every object got smaller
Each object in the heap starts with a header. In JDK 27 that header goes from 12 bytes to 8, because the class pointer is folded into the mark word. It's on by default.
Why it matters: lots of small objects is what most Java apps are. In one benchmark (SPECjbb2015, quoted in JEP 519) this meant about 22% less heap.
2. G1 is the default collector everywhere
Until now, a JVM in a small container (little memory, one or two CPUs) quietly picked the Serial collector. From JDK 27, G1 is the default no matter the machine size.
If you tuned a tiny service around Serial, check your GC logs after upgrading.
3. TLS is getting ready for quantum computers
Traffic recorded today could be decrypted later by a quantum computer ("harvest now, decrypt later"). TLS 1.3 in JDK 27 now adds a hybrid key exchange, X25519MLKEM768, by default. It combines the classic X25519 with the post-quantum ML-KEM-768.
Still in preview
- Structured concurrency, for the seventh time
- Lazy constants (third preview) and primitive patterns (fifth preview)
- The Vector API (twelfth incubator) and PEM encodings (third preview)
Should you upgrade?
JDK 27 is not an LTS release. For production, JDK 25 is still the one to run. Next up is JDK 28, with value classes targeted as a preview.
Sources
Get the next one in your inbox
New posts, videos and free PDFs. One email a week at most.