
Oracle has released version 23 of the Java programming language and virtual machine. As the second non-LTS release since JDK 21, the 12 JEPs in this final feature set are:
Three of these – Markdown Documentation Comments, ZGC: Generational Mode by Default and Deprecate the Memory-Access Methods in sun.misc.Unsafe
for Removal – are final features without having gone through the preview and/or incubation process.
As presented in this blog post, the feature cadence for JDK 23 is consistent with the patterns observed in earlier releases extending back four years to JDK 14, except for the cases of JDK 18, JDK 19, and JDK 20.
We delve into some of these JEPs, review the JDK 23 Launch Event, and provide updated forecasts for features potentially included in JDK 24.
JEP 467, Markdown Documentation Comments, proposes to enable JavaDoc documentation comments to be written in Markdown, a popular markup language often found in open-source projects, rather than a mix of HTML and JavaDoc @
tags. The intent is to provide improved documentation that is easier to read and write.
JEP 474, ZGC: Generational Mode by Default, proposes to use the Z Garbage Collector (ZGC) in generational mode by default, transitioning away from its non-generational mode which will be deprecated and removed in future JDK releases. This change is aimed at reducing maintenance costs between the two modes, facilitating primary focus on further developments, specifically referenced in JEP 439, Generational ZGC. Further insights are provided in an InfoQ news story.
JEP 471, Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal, proposes that the memory-access methods in the Unsafe
class be deprecated for removal in a future JDK release. These methods are already replaced by features like JEP 193, Variable Handles, introduced in JDK 9, and JEP 454, Foreign Function & Memory API, introduced in JDK 22.
JEP 473, Stream Gatherers (Second Preview), proposes a second preview following JEP 461, Stream Gatherers (Preview), delivered in JDK 22. This preview aims to gather more feedback and experience with the feature, maintaining continuity over JEP 461. It was designed to enhance the Stream API to support custom intermediate operations enabling transformation of data in ways previously not achievable. More details are available in the original design document and an InfoQ news story.
JEP 466, Class-File API (Second Preview), proposes a second preview to gather feedback following the initial preview under JEP 457, Class-File API (Preview), released in JDK 22. This feature introduces an API designed for parsing and generating Java class files to enhance the transformation process. Initially, it will replace the ASM, a Java bytecode manipulation and analysis framework, within the JDK, with future plans to make it publicly available. Brian Goetz, Java Language Architect at Oracle, has described ASM as “an old codebase with lots of legacy baggage” and has shared details about how this initiative will develop and eventually replace ASM.
The JDK 23 Launch Event was streamed live on September 17, 2024, from 13:00-16:30 UTC. It featured hosts Ana-Maria Mihalceanu, Billy Korando, and Nicolai Parlog, who are Java Developer Advocates at Oracle. The event covered various topics such as an in-depth analysis of Java 23 features, outreach initiatives for Java in 2024, and a preview of forthcoming features and projects in Java.
JDK 23 is now available for download from Oracle, with binaries expected to be released by other vendors shortly.
With a GA release date set for March 2025, only one JEP has been currently targeted for inclusion in JDK 24. Nevertheless, evaluating various JEP candidates and drafts, particularly those submitted for consideration, provides insights into potential future inclusions for JDK 24.
JEP 472, Prepare to Restrict the Use of JNI, has been targeted for JDK 24. The JEP proposes to restrict the use of the inherently unsafe Java Native Interface (JNI) in conjunction with the use of restricted methods in the Foreign Function & Memory (FFM) API. The alignment strategy, starting in the release of JDK 23, will have the Java runtime display warnings about the use of JNI unless an FFM user enables unsafe native access on the command line. It is anticipated that in release after JDK 23, using JNI will throw exceptions instead of warnings. More details may be found in this InfoQ news story.
JEP 484, Class-File API, currently in Candidate status, proposes to finalize this feature in JDK 24 after two rounds of preview, namely: JEP 466, Class-File API (Second Preview), delivered in JDK 23; and JEP 457, Class-File API (Preview), delivered in JDK 22. Changes since the second preview include: a new method, resolvedValue()
, defined in the AnnotationValue.OfConstant
interface; and a number of methods that have either been renamed, moved from one interface to another, or removed.
JEP Draft 8338456, Scoped Values (Fourth Preview), proposes a fourth preview, with one change, in order to gain additional experience and feedback from one round of incubation and three rounds of preview, namely: JEP 481, Scoped Values (Third Preview), delivered in JDK 23; JEP 464, Scoped Values (Second Preview), delivered in JDK 22; JEP 446, Scoped Values (Preview), delivered in JDK 21; and JEP 429, Scoped Values (Incubator), delivered in JDK 20. Formerly known as Extent-Local Variables (Incubator), this feature enables sharing of immutable data within and across threads. This is preferred to thread-local variables, especially when using large numbers of virtual threads.
JEP Draft 8300911, PEM API (Preview), introduces an easy and intuitive API for encoding and decoding the Privacy-Enhanced Mail (PEM) format to describe value holders that can change, at most, once. This PEM format will be used for storing and sending cryptographic keys and certificates.
JEP Draft 8291976, Support HTTP/3 in the HttpClient, suggests updating JEP 321, HTTP Client, initially released in JDK 11, to include support for the HTTP/3 protocol. This enhancement will enable applications and libraries to communicate with HTTP/3 servers, leveraging the advantages of HTTP/3 with only minor modifications to their existing code.
The anticipated formal release date for JDK 24 is set for March 2025, with a proposal soon to be made by Mark Reinhold, Chief Architect of the Java Platform Group at Oracle. Developers should prepare for a feature freeze by early December 2024. Further details about upcoming JEPs and drafts are covered in this comprehensive InfoQ news article.
Welcome to DediRock, your trusted partner in high-performance hosting solutions. At DediRock, we specialize in providing dedicated servers, VPS hosting, and cloud services tailored to meet the unique needs of businesses and individuals alike. Our mission is to deliver reliable, scalable, and secure hosting solutions that empower our clients to achieve their digital goals. With a commitment to exceptional customer support, cutting-edge technology, and robust infrastructure, DediRock stands out as a leader in the hosting industry. Join us and experience the difference that dedicated service and unwavering reliability can make for your online presence. Launch our website.