Welcome to the latest OpenJDK Quality Outreach update. JDK 23 was released last month as planned. You can find "The Arrival of Java 23" announcement here [1], and some additional Java 23 materials in the "Topics of Interest" section at
the bottom of this update. You can also rewatch the Java 23 launch stream here [2]. Thank you to all the projects who contributed to this release by testing the early-access builds and by providing feedback and or identifying issues. Through your participation
in this program, you are helping to shape the Java platform!
Let's now shift our attention to JDK 24 which will enter the Rampdown Phase in less than 6 weeks on December 5th [3].
[1]
https://inside.java/2024/09/17/jdk-23-available/
[2]
https://www.youtube.com/live/QG9xKpgwOI4?feature=shared
[3] https://openjdk.org/projects/jdk/24/
## JDK 24
The JDK 24 early-access builds 21 are available [4], and are provided under the GNU General Public License v2, with the Classpath Exception. The Release Notes are available here [5].
As of the time of writing, the following JEPs have been targeted to JDK 24
- JEP 472: Prepare to Restrict the Use of JNI
- JEP 475: Late Barrier Expansion for G1
- JEP 485: Stream Gatherers
- JEP 484: Class-File API
- JEP 489: Vector API (9th Incubator)
while the following JEPs have been proposed to target JDK 24
- JEP 404: Generational Shenandoah (Experimental)
- JEP 478: Key Derivation Function API (Preview)
- JEP 487: Scoped Values (4th Preview)
- JEP 490: ZGC: Remove the Non-Generational Mode
### Changes in recent JDK 24 builds that may be of interest:
- JDK-8337302: Undefined type variable results in null - Reported & fixed by ByteBuddy
- JDK-8338406: BytecodeHelpers using wrong bootstrap method descriptor for condy - Reported by ByteBuddy
- JDK-8338623: StackCounter adding extraneous slots for receiver invoke instructions - Reported by ByteBuddy
- JDK-8338661: StackMapTable is invalid if frames appear in dead code - Reported by ByteBuddy
- JDK-8338745: Intrinsify Continuation.pin() and Continuation.unpin()
- JDK-8336492: Regression in lambda serialization
- JDK-8286851: Deprecate for removal several of the undocumented java launcher options
- JDK-8339918: Remove checks for outdated -t -tm -Xfuture -checksource -cs -noasyncgc options from …
- JDK-8338979: Avoid bootstrapped switches in the classfile API
- JDK-8335288: SunPKCS11 initialization will call C_GetMechanismInfo on unsupported mechanisms
- JDK-8328608: Multiple NewSessionTicket support for TLS
- JDK-8338890: Add monitoring/management interface for the virtual thread scheduler
- JDK-8338939: Simplify processing of hidden class names
- JDK-8338731: MemoryLayout::offsetHandle can return a negative offset
- JDK-8325679: Optimize ArrayList subList sort
- JDK-8337664: Distrust TLS server certificates issued after Oct 2024 and anchored by Entrust Root CAs
- JDK-8338936: StringConcatFactory optimize the construction of MethodType and MethodTypeDesc
- JDK-8338947: Deprecate the UseLinuxPosixThreadCPUClocks flag and remove it in a future release
- JDK-8338700: AttributeMapper type parameter should be bounded by Attribute
- JDK-8339214: Remove misleading CodeBuilder.loadConstant(Opcode, ConstantDesc)
- JDK-8328877: [JNI] The JNI Specification needs to address the limitations of integer UTF-8 String lengths
- JDK-8338894: Deprecate jhsdb debugd for removal
- JDK-8334165: Remove serialVersionUID compatibility logic from JMX
- JDK-8334870: javac does not accept classfiles with certain permitted RuntimeVisibleParameterAnnotations…
Note: A complete list of changes can be found here [6].
[4] https://jdk.java.net/24/
[5] https://jdk.java.net/24/release-notes
[6]
https://github.com/openjdk/jdk/compare/jdk-24+12...jdk-24+21
## JavaFX 24 Early-Access Builds
These are early access builds of the JavaFX 24 Runtime built from openjdk/jfx. These builds enable JavaFX application developers to build and test their applications with JavaFX 24 on JDK 24. Although these builds are designed to work with
JDK 24-ea, they are also known to work with JDK 22 and later versions.
The latest early access builds of JavaFX 24 Builds 14 (2024/10/18) are available [7], under the GNU General Public License, version 2,
with the Classpath Exception. JavaFX 24 API Javadocs [8] are available too.
[7] https://jdk.java.net/javafx24/
[8]
https://download.java.net/java/early_access/javafx24/docs/api/overview-summary.html
## Topics of Interest
- JDK 23 Security Enhancements
https://seanjmullan.org/blog/2024/09/17/jdk23
- Java 23 - Better Language, Better APIs, Better Runtime
https://inside.java/2024/09/26/javazone-java23/
- Reviewing the JDK 23 Release Notes
https://inside.java/2024/09/19/newscast-76/
- JEP 14: The Tip & Tail Model of Library Development
https://openjdk.org/jeps/14
- New Loom Early-Access Builds with Changes for JDK 24
https://mail.openjdk.org/pipermail/loom-dev/2024-September/007166.html
- JVMLS: Integrity by Default
https://inside.java/2024/09/12/jvmls-integrity-by-default/
- JVMLS: Loom - Where Are We?
https://inside.java/2024/10/06/jvmls-loom/
- JVMLS: Project Lilliput - Beyond Compact Headers
https://inside.java/2024/09/06/jvmls-generics-lilliput/
- JVMLS: Valhalla - Where Are We?
https://inside.java/2024/08/23/jvmls-valhalla/
- JVMLS: Java Initialization 2.0
https://inside.java/2024/09/01/jvmls-initialization/
- Serialization - A New Hope
https://inside.java/2024/10/13/devoxxbelgium-serialization/
- JVMLS: Project Leyden
https://inside.java/2024/08/25/jvmls-leyden/
- A Preview of What's Coming in Project Leyden
https://inside.java/2024/10/17/newscast-78/
- Big News from Project Valhalla
https://inside.java/2024/10/03/newscast-77/
- Java's Fraught Relationship with Cyclic Object Graphs
https://inside.java/2024/10/15/devoxxbelgium-cyclic-object-graphs/
~
As usual, please ping me if you have questions, suggestions or if you encounter any issues with JDK 24 early-access builds. If you don't want to receive these OpenJDK Quality Outreach updates anymore, please let me know.
--
David Delabassée