JDK 27's nine JEPs are frozen, and two of them change your defaults
The feature list is fixed until the September 15 ship date. Five items are previews you have to ask for; two are HotSpot defaults that apply whether you read the notes or not.
The Engineer · Build desk
What happened
- Two of the nine JEPs change default behaviour: G1 becomes the default collector in all environments, and compact object headers are on by default.
- Five of the nine are preview or incubator items, including a seventh preview of structured concurrency and a twelfth incubation of the Vector API.
- The formal release date is September 15, 2026.
Why it matters
- Who has to decide decision Upgrade testing for JDK 27 has to be aimed at collector behaviour and object footprint, not at the preview features that fill most of the JEP list.
- What it limits constraint With the fork done, nobody can argue either default out of the release; the only remaining route is a critical bug approved through Fix-Request, so the tuning happens on your side of the JVM boundary.
- Who's exposed exposure Any deployment that was not already getting G1 inherits a different collector without a flag change, and the phrase "all environments" does not say which deployments those are.
- What it sets up precedent Teams building on the Vector API should budget for further incubations rather than a stable API, since promotion waits on Valhalla previews that have not arrived.
Two phrases in the HotSpot titles do the work. "In all environments" [6] only means something if some environments currently get a collector other than G1. "By default" [7] only means something if compact object headers are currently opt-in. Neither of those changes requires anything from you to take effect, and that is the whole difference between them and the five preview and incubator items on the list [16]. Code that never touches Lazy Constants or the Vector API is untouched by their arrival. A heap gets the collector the JVM picks, read notes or not.
The argument about that is over. The feature set was fixed when the main line forked to the stabilization repository in early June 2026 [2], and only critical bugs approved through the Fix-Request process can move now [3]. That leaves roughly three months of stabilization [18] in which the available lever is not the JDK's default but your own command line.
It is worth counting what the nine actually are. Structured concurrency arrives as a seventh preview, after six previews in JDK 21 through 26 and two incubator rounds in 19 and 20 [12], which makes JDK 27 the ninth consecutive release to carry it [15]. The Vector API enters a twelfth incubation with no substantial implementation change since JDK 25, and will not be promoted to preview until the Project Valhalla features it depends on are themselves available as previews [13]. Primitive types in patterns reaches a fifth preview, with tighter dominance checks in switch and a revised definition of unconditional exactness [11]. These are the items with the longest paper trail and the least effect on a service you deploy tomorrow.
The third HotSpot item is the one that lands in an existing operations pipeline rather than a language feature backlog. JEP 536 has JDK Flight Recorder redact sensitive data before a recording completes, and the source names command-line arguments among the data in scope [8]. If your recordings are currently scrubbed after the fact, part of that job moves inside the JVM, and the part that stays yours is the part you still have to demonstrate to whoever asks.
The release itself is the second non-LTS since JDK 25 [4][14], so the population that adopts it in September is self-selecting: teams who follow releases. That is the audience least likely to be surprised by a default collector change, and the one whose bug reports determine what the next set of adopters inherits. According to InfoQ's summary of the release candidate, declared by Oracle's Mark Reinhold [1], the nine JEPs span four categories [5]; the categories are how the release is described, not how it is felt. Five things you must request, two things that happen anyway, one change to your telemetry, and one post-quantum key exchange for TLS 1.3 [10] is a more useful partition for anyone planning an upgrade window.
What to watch
- Whether any Fix-Request is approved against JEP 523 or JEP 534 between the release candidate and September 15.
- Reports from early JDK 27 adopters on footprint and pause behaviour in small containers that previously ran a different default collector.
- Whether JDK 28 finally lists Valhalla preview features, which is the gate the Vector API's promotion is waiting on.
Clarity's read
What the record supports and how the coverage leans. The claims behind it follow.
Reality
- Evidence71
- Adoption18
- Hype gap+9
- Incentives34
- Confidence66
Claim ledger
Ranked by verification strength, evidence, and original report placement.
- [1]
JDK 27 has reached its first release candidate, as declared by Mark Reinhold, Chief Architect, Java Platform Group at Oracle.
- [2]
The main-line source repository was forked to the JDK stabilization repository in early-June 2026 (Rampdown Phase One), which defines the feature set for JDK 27.
- [3]
Critical bugs, such as regressions or serious functionality issues, may be addressed after the fork, but must be approved via the Fix-Request process.
- [4]
Per the release schedule, JDK 27 will be formally released on September 15, 2026.
- [5]
The final set of nine new features, in the form of JEPs, falls into four categories: Core Java Library, HotSpot, Security Library and Java Language Specification.
- [6]
JEP 523, Make G1 the Default Garbage Collector in All Environments, is one of the three HotSpot features in JDK 27.
- [7]
JEP 534, Compact Object Headers by Default, is one of the three HotSpot features in JDK 27.
- [8]
JEP 536, JFR In-Process Data Redaction, proposes to enhance JDK Flight Recorder to redact sensitive information before the JFR completes its recording; that data may include command-line arguments.
- [9]
The three Core Java Library features are JEP 531 Lazy Constants (Third Preview), JEP 533 Structured Concurrency (Seventh Preview) and JEP 537 Vector API (Twelfth Incubator).
- [10]
The two Security Library features are JEP 527, Post-Quantum Hybrid Key Exchange for TLS 1.3, and JEP 538, PEM Encodings of Cryptographic Objects (Third Preview).
- [11]
JEP 532, Primitive Types in Patterns, instanceof, and switch, is a fifth preview after four rounds in JDK 23 through JDK 26, with two changes: an enhanced definition of unconditional exactness and tighter dominance checks in switch constructs.
- [12]
Structured concurrency has had six rounds of preview in JDK 21 through JDK 26 and two rounds of incubation in JDK 19 through JDK 20; JEP 533 is a seventh preview with minor changes.
- [13]
JEP 537 is a twelfth incubation of the Vector API, with no substantial implementation changes since JDK 25, after eleven rounds of incubation in JDK 16 through JDK 26; it will continue to incubate until the necessary Project Valhalla features become available as preview features, at which point it will be adapted and promoted to Preview.
- [14]
JDK 27 is the second non-LTS release since JDK 25.
- [15]
JDK 27 is the ninth consecutive release to ship structured concurrency in some form.
- [16]
Five of the nine JEPs in JDK 27 carry a preview or incubator label: JEP 531, 532, 533, 537 and 538.
- [17]
Two of the nine JEPs change default runtime behaviour rather than adding an opt-in feature: JEP 523 and JEP 534.
- [18]
About three months separate the stabilization fork from the release date.
Get this ledger inside ChatGPT. Ask about any of our stories and the answer brings its figure, each claim’s verdict and the sources. Free, no account.
Sources
1 independent publisher whose own reporting we read for this story.
- infoq.comJDK 27 and JDK 28: What We Know So Far
1 article · August 23, 2026
Topics and entities
Follow any of these and your For You feed starts watching them — no settings page required.
Topics
Entities
- JEP 531: Lazy Constants (Third Preview)Follow
- Project ValhallaFollow
- JDK 27Follow
- OpenJDKFollow
- JEP 533: Structured Concurrency (Seventh Preview)Follow
- JDK 28Follow
- TLS 1.3Follow
- InfoQFollow
- Mark ReinholdFollow
- Project PanamaFollow
- JEP 527: Post-Quantum Hybrid Key Exchange for TLS 1.3Follow
- JEP 541: Deprecate the macOS/x64 Port for RemovalFollow
- OracleFollow
- JEP 536: JFR In-Process Data RedactionFollow
- JEP 523: Make G1 the Default Garbage Collector in All EnvironmentsFollow
- JEP 540: Simple JSON API (Incubator)Follow
- JDK Flight RecorderFollow
- HotSpot JVMFollow
- Project AmberFollow
- G1 Garbage CollectorFollow
- Project LoomFollow
- JEP 532: Primitive Types in Patterns, instanceof, and switch (Fifth Preview)Follow
- Project LeydenFollow
- JEP 538: PEM Encodings of Cryptographic Objects (Third Preview)Follow
- JEP 537: Vector API (Twelfth Incubator)Follow
- JEP 534: Compact Object Headers by DefaultFollow