Welcome to the latest OpenJDK Quality Outreach update.

JDK 25[1] and JavaFX 25[2] were released as planned a few days ago. Additional 
Java 25 materials, including the "Road to 25" video series, are listed in the 
"Topics of Interest" section at the end of this update. If you missed it, you 
can also rewatch the Java 25 launch stream[3].

Thank you to all the projects that contributed to this release by testing early 
access builds, providing feedback, or identifying issues. Your participation 
helps shape the Java platform!

Let’s now turn our attention to JDK 26[4], which is expected to enter the 
Rampdown Phase in just over two months. As of today, three JEPs have already 
been targeted for inclusion in JDK 26. If you use JavaFX, please pay attention 
to the time-sensitive heads-up below.

[1] https://blogs.oracle.com/java/post/the-arrival-of-java-25
[2] https://inside.java/2025/09/23/javafx-25/
[3] https://inside.java/2025/09/17/java25-launch-stream/
[4] https://openjdk.org/projects/jdk/26/


# Heads-up - JavaFX 26: Temporary switch to macOS Metal Rendering Pipeline

On macOS, the default JavaFX rendering pipeline has been temporarily switched 
to Metal since JavaFX 26 early access build 5. This change will remain in place 
until October 8, 2025. The goal is to enable wider testing of the Metal 
rendering pipeline.

If you need to revert to the previous macOS ES2 pipeline, you can do so by 
adding the `-Dprism.order=es2` flag to your Java command.

The latest JavaFX 26 EA builds are now available for download[5] and testing. 
You can share your feedback on the openjfx-dev[6] list (registration required), 
through JBS[7] or bugreport.java.com[8].

[5] https://jdk.java.net/javafx26/
[6] https://mail.openjdk.org/mailman/listinfo/openjfx-dev
[7] https://bugs.openjdk.org/
[8] https://bugreport.java.com


# Heads-up - New Leyden Early-Access Builds

The purpose of Leyden early eccess builds is to prototype improvements in 
startup time, time to peak performance, and footprint of Java programs, with 
the hope that some of these enhancements can eventually be incorporated into 
future JDK releases. The Java community is invited  to test these prototypes 
and provide feedback to the Project Leyden team.

The latest Leyden "premain" prototype[9] introduces several experimental 
Ahead-of-Time (AOT) optimizations not yet part of the JDK mainline. These 
include AOT code compilation for frequently used methods, AOT generation of 
dynamic proxies and reflection data to improve start-up time, and a cache for 
failed class lookups to speed up repeated attempts. All these experimental 
features are, in the Leyden EA2 builds, enabled by default when creating an AOT 
cache and can be disabled via specific flags.

More details on how to use these features can be found in the EA2 Release 
Notes[10]. Feedback should be sent to the leyden-dev[11] mailing list 
(registration required).

[9] https://jdk.java.net/leyden/
[10] https://github.com/openjdk/leyden/blob/leyden-ea2-release-notes/README.md
[11] https://mail.openjdk.org/mailman/listinfo/leyden-dev


# JDK 26 Early-Access Builds

The JDK 26 early access builds 16 are available[12], and are provided under the 
GNU General Public License v2, with the Classpath Exception. You can review the 
Release Notes here[13].

## JEPs targeted to JDK 26, so far:
- JEP 504: Remove the Applet API
- JEP 517: HTTP/3 for the HTTP Client API
- JEP 522: G1 GC: Improve Throughput by Reducing Synchronization

## Changes in recent JDK 26 EA builds that may be of interest:
- JDK-8244336: Restrict algorithms at JCE layer
- JDK-8366911: (fs) Remove support for normalizing file names to Unicode 
normalized form D (macOS)
- JDK-8367112: HttpClient does not support Named Groups set on SSLParameters
- JDK-8367031: [backout] Change java.time month/day field types to 'byte'
- JDK-8366434: THP not working properly with G1 after JDK-8345655
- JDK-8365086: CookieStore.getURIs() and get(URI) should return an immutable 
List
- JDK-8364993: JFR: Disable jdk.ModuleExport in default.jfc
- JDK-8364556: JFR: Disable SymbolTableStatistics and StringTableStatistics in 
default.jfc
- JDK-8359443: Make jcmd command available in the headless JDK RPM
- JDK-8362304: Fix JDWP spec w.r.t. OPAQUE_FRAME and INVALID_SLOT errors
- JDK-8277585: Remove the terminally deprecated finalize() method from 
javax.imageio.stream APIs
- JDK-8362448: Make use of the Double.toString(double) algorithm in 
java.text.DecimalFormat
- JDK-8309400: JDI spec needs to clarify when OpaqueFrameException and 
NativeMethodException are thrown
- JDK-8363972: Lenient parsing of minus sign pattern in 
DecimalFormat/CompactNumberFormat
- JDK-8329829: HttpClient: Add a BodyPublishers.ofFileChannel method
- JDK-8364227: MBeanServer registerMBean throws NPE
- JDK-8361614: Missing sub-int value validation in the Class-File API
- JDK-8361635: Missing List length validation in the Class-File API
- JDK-8364751: ConstantBootstraps.explicitCast contradictory specification for 
null-to-primitive
- JDK-8361613: System.console() should only be available for interactive 
terminal
- JDK-8365676: javac incorrectly allows calling interface static method via 
type variable

Note: A more exhaustive list of changes can be found here[14].

[12] https://jdk.java.net/26/
[13] https://jdk.java.net/26/release-notes
[14] https://github.com/openjdk/jdk/compare/jdk-26+10...jdk-26+16


# Topics of Interest

- Java 25 Launch Stream
https://inside.java/2025/09/17/java25-launch-stream/

- The Arrival of Java 25
https://blogs.oracle.com/java/post/the-arrival-of-java-25

- JDK 25: G1/Parallel/Serial GC changes
https://tschatzl.github.io/2025/08/12/jdk25-g1-serial-parallel-gc-changes.html

- JavaFX 25 Highlights
https://inside.java/2025/09/23/javafx-25/

- Road To 25: All API Additions From Java 21 to 25
https://inside.java/2025/09/09/roadto25-api/

- Road To 25: How to Handle Security Changes in Java 25
https://inside.java/2025/09/07/roadto25-security/

- Road To 25: Java 21 ⮕ 25 - Performance and Runtime Enhancements
https://inside.java/2025/09/05/roadto25-performance/

- Road To 25: All New Java Language Features Since Java 21
https://inside.java/2025/08/31/roadto25-java-language/

- Road To 25: Ahead-of-Time Computation
https://inside.java/2025/08/28/roadto25-aot/

- Road To 25: How to Upgrade to Java 25
https://inside.java/2025/08/24/roadto25-upgrade/

- JVMLS: Growing the Java Language
https://inside.java/2025/08/21/jvmls-growing-java-language/

- JVMLS: Auto-Vectorization in HotSpot
https://inside.java/2025/08/16/jvmls-hotspot-auto-vectorization/

- JVMLS: Paths to Support Additional Numeric Types on the Java Platform
https://inside.java/2025/09/21/jvmls-java-additional-numeric-types/

- Java Architects Answer Your Questions
https://inside.java/2025/08/14/newscast-97/

- GC-Agnostic Load Barriers for Ahead-of-Time Compilation
https://inside.java/2025/08/27/thesis-gc-agnostic-load-barriers/

~


This concludes the update. Please don’t hesitate to reach out if you encounter 
any issues while testing your projects with the latest JDK 26 early access 
builds.

P.S.: If you no longer wish to receive these Quality Outreach updates, please 
let me know.

--David

Reply via email to