BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Java 26 Delivers Language Innovation, Library Improvements, Performance and Security

Java 26 Delivers Language Innovation, Library Improvements, Performance and Security

Listen to this article -  0:00

Oracle has released version 26 of the Java programming language and virtual machine. As the first non-LTS release since JDK 25, the final feature set includes 10 JEPs, five of which are still progressing through the preview and incubator stages. The JEPs in this final feature set are:

Five JEPs - Prepare to Make Final Mean Final, HTTP/3 for the HTTP Client API, Lazy Constants (Second Preview), Structured Concurrency (Sixth Preview) and Vector API (Eleventh Incubator) - focus on improvements to the Java libraries. The remaining JEPs focus on language innovation, performance and security.

This release also adds a fourth JEP, Ahead-of-Time Object Caching with Any GC, under the auspices of Project Leyden.

Shown in the graph below, as presented in this blog post by Sharat Chander, Senior Director, Global Head of Developer Programs at Oracle, are the number of JEPs in each Java release since JDK 8.

We examine some of these JEPs and update our predictions for features that may be included in JDK 27.

Ahead-of-Time Object Caching with Any GC

JEP 516, Ahead-of-Time Object Caching with Any GC, proposes to enhance JEP 483, Ahead-of-Time Class Loading & Linking, delivered in JDK 24, for improved startup and warmup time such that it can be used with any garbage collector, including the low-latency Z Garbage Collector (ZGC).

Lazy Constants (Second Preview)

JEP 526, Lazy Constants (Second Preview), proposes a second preview, with changes, after the first round of preview, namely: JEP 502, Stable Values (Preview). Formerly known as Stable Values and Computed Constants, this feature introduces the concept of computed constants, defined as immutable value holders that are initialized at most once. This offers the performance and safety benefits of final fields, while offering greater flexibility as to the timing of initialization.

Revisions for this JEP include: the name change from Stable Values to Lazy Constants as the new name better captures the intent of a high-level use case; and enhanced discoverability.

More details on this JEP may be found in this InfoQ news story.

Vector API (Eleventh Incubator)

JEP 529, Vector API (Eleventh Incubator), proposes an eleventh incubation, with no substantial implementation changes since JDK 25, after ten rounds of incubation delivered in JDK 16 through JDK 25. This feature introduces an API to "express vector computations that reliably compile at runtime to optimal vector instructions on supported CPU architectures, thus achieving performance superior to equivalent scalar computations." The Vector API will continue to incubate until the necessary features of Project Valhalla become available as preview features. At that time, the Vector API team will adapt the Vector API and its implementation to use them, and will promote the Vector API from Incubation to Preview.

Remove the Applet API

JEP 504, Remove the Applet API, removes the long-deprecated Applet API after JEP 398, Deprecate the Applet API for Removal, delivered in JDK 17, and JEP 289, Deprecate the Applet API, delivered JDK 9, due its continued obsolescence since applets are no longer supported in web browsers.

PEM Encodings of Cryptographic Objects (Second Preview)

JEP 524, PEM Encodings of Cryptographic Objects (Second Preview), proposes a second round of preview, with changes, after the first round of preview, namely JEP 470, PEM Encoding of Cryptographic Objects (Preview), delivered in JDK 25. This feature offers "an API for encoding objects that represent cryptographic keys, certificates, and certificate revocation lists into the widely-used Privacy-Enhanced Mail (PEM) transport format, and for decoding from that format back into objects." This JEP will support conversions between PEM text and cryptographic objects in PKCS #8 and X.509 binary formats.

Changes in this preview include: a rename of the PEMRecord class to PEM; and an enhancement of the PEMEncoder and PEMDecoder classes to support the encryption and decryption of the KeyPair and PKCS8EncodedKeySpec classes.

JDK 27

Scheduled for a GA release in September 2026, only one JEP has been targeted for JDK 27 at this time. However, based on a number of JEP candidates and drafts, especially those that have been submitted, we can surmise which additional JEPs have the potential to be included in JDK 27.

JEP 531, Lazy Constants (Third Preview), proposes a third preview, with two changes, after two rounds of preview delivered in JDK 26 and JDK 25. The changes include: removal of the methods, isInitialized() and orElse(), from the LazyConstant interface, as they do not align with the design goals of this feature; and a new factory method, ofLazy(), that can create a stable, pre-defined elements for all three Java collection types, namely: List, Set and Map.

JEP 527, Post-Quantum Hybrid Key Exchange for TLS 1.3, has been Targeted for JDK 27. This JEP proposes to enhance the implementation of RFC 8446, Transport Layer Security (TLS) Protocol Version 1.3, using the Hybrid Key Exchange in TLS 1.3 specification, currently being drafted by the Internet Engineering Task Force (IETF) in conjunction with JEP 496, Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism, delivered in JDK 24.

JEP 401, Value Classes and Objects (Preview), under the auspices of Project Valhalla, proposes to enhance the language with value objects, defined as objects that: only contain final fields; do not have identity; and are solely distinguished by the values of their respective fields.

JEP Draft 8376991, PEM Encodings of Cryptographic Objects, proposes to finalize this feature, with changes, after two rounds of preview delivered in JDK 26 and JDK 25. Changes include: a conversion of the PEM API from a record to a class; a new CryptoException class for catching this exception during cryptographic processing at runtime; and a rename of the DEREncodable interface to BinaryEncodable to more "accurately describe the binary data stored in PEM text."

JEP Draft 8329758, Faster Startup and Warmup with ZGC, proposes to enhance the Z Garbage Collector to more efficiently allocate memory in response to the needs of an application. Startup time can be minimized by creating only a small initial heap that reduces the overhead of the operating system.

Please note that draft JEPs may be subject to change at any time.

The formal release date for JDK 27 is expected to be September 2026, soon to be proposed by Mark Reinhold, Chief Architect, Java Platform Group at Oracle. Developers can anticipate a feature freeze in early-June 2026.

More details on additional JEPs released in JDK 26 along with other Draft JEPs and candidates may be found in this more detailed InfoQ news story.

JDK 26 may now be downloaded from Oracle with binaries from other vendors expected to become available in the coming days.

About the Author

Rate this Article

Adoption
Style

BT