Welcome to the OpenJDK Quality Outreach summer update!
Everything is on track for the General Availability of Java 25 on
September 16 as the JDK 25 Release Candidate builds (RC1 - builds 35)
are now available[1]. If you haven't done so yet, please start testing
your project(s) using JDK 26 early-access builds and let us know the
results.
Changing topics, the JVM Language Summit (JVMLS) was held last week in
Santa Clara (California). JVMLS is a unique event that brings together
Java and JVM architects and OpenJDK developers to discuss the
evolution and future directions of the platform. The first JVMLS video
has just been published, with more to follow. To stay informed about
the latest developments, keep an eye on this JVMLS playlist[2].
[1] https://mail.openjdk.org/pipermail/jdk-dev/2025-August/010296.html
<https://mail.openjdk.org/pipermail/jdk-dev/2025-August/010296.html>
[2]
https://www.youtube.com/playlist?list=PLX8CzqL3ArzUOgZpIX6GsoRhPbnij-sco
<https://www.youtube.com/playlist?list=PLX8CzqL3ArzUOgZpIX6GsoRhPbnij-sco>
# JDK 25
The JDK 25 early-access builds 35 are available[3], and are provided
under the GNU General Public License v2, with the Classpath Exception.
The Release Notes are available here[4]. For more details on Java 25,
please refer to the “Topics of Interest” section below.
## JEPs Integrated into JDK 25:
- JEP 470: PEM Encodings of Cryptographic Objects (Preview)
- JEP 502: Stable Values (Preview)
- JEP 503: Remove the 32-bit x86 Port
- JEP 505: Structured Concurrency (5th Preview)
- JEP 506: Scoped Values
- JEP 507: Primitive Types in Patterns, instanceof, and switch (3rd
Preview)
- JEP 508: Vector API (1Oth Incubator)
- JEP 509: JFR CPU-Time Profiling (Experimental)
- JEP 510: Key Derivation Function API
- JEP 511: Module Import Declarations
- JEP 512: Compact Source Files and Instance Main Methods
- JEP 513: Flexible Constructor Bodies
- JEP 514: Ahead-of-Time Command-Line Ergonomics
- JEP 515: Ahead-of-Time Method Profiling
- JEP 518: JFR Cooperative Sampling
- JEP 519: Compact Object Headers
- JEP 520: JFR Method Timing & Tracing
- JEP 521: Generational Shenandoah
## Changes in Recent JDK 25 Builds of Interest:
- JDK-8359596: Behavior change when both -Xlint:options and
-Xlint:-options flags are given [Reported by Apache Lucene]
- JDK-8356698: JFR: @Contextual
- JDK-8351594: JFR: Rate-limited sampling of Java events
- JDK-8241678: Remove PerfData sampling via StatSampler
- JDK-8356870: HotSpotDiagnosticMXBean.dumpThreads and jcmd
Thread.dump_to_file updates
- JDK-8350689: Turn on timestamp and thread metadata by default for
java.security.debug
- JDK-8354450: A File should be invalid if an element of its name
sequence ends with a space
- JDK-8350880: (zipfs) Add support for read-only zip file systems
- JDK-8341346: Add support for exporting TLS Keying Material
- JDK-8345431: Improve jar --validate to detect duplicate or invalid
entries
- JDK-8359170: Added 4 New Root Certificates from Sectigo Limited
- JDK-8358590: JFR: Include min and max in MethodTiming event
- JDK-8228773: URLClassLoader constructors should include API note
warning that the parent should not be null
- JDK-8356049: Need a simple way to play back a sound clip
- JDK-8357955: java.lang.classfile.Signature.ArrayTypeSig.of IAE not
thrown for dims > 255
- JDK-8359729: Remove the multiplex protocol from the RMI specification
Note: A more exauhstive list of changes can be found here[5].
[3] https://jdk.java.net/25/ <https://jdk.java.net/25/>
[4] https://jdk.java.net/25/release-notes
<https://jdk.java.net/25/release-notes>
[5] https://github.com/openjdk/jdk/compare/jdk-25+25...jdk-25+35
<https://github.com/openjdk/jdk/compare/jdk-25+25...jdk-25+35>
# JDK 26
The JDK 26 early-access builds 10 are available[6] and are provided
under the GNU General Public License v2, with the Classpath Exception.
The release notes are available here[7].
## Changes in Recent JDK 26 Builds of Interest:
- JDK-8361380: ARM32: Atomic stubs should be in pre-universe [Reported
by JaCoCo]
- JDK-8359170: Add 2 TLS and 2 CS Sectigo roots
- JDK-8359809: AttributeList, RoleList and UnresolvedRoleList should
never accept other types of Object
- JDK-8268406: Deallocate jmethodID native memory
- JDK-8314180: Disable XPath in XML Signatures
- JDK-8330940: Impossible to create a socket backlog greater than 200
on Windows 8+
- JDK-8357653: Inner classes of type parameters emitted as raw types
in signatures
- JDK-8347114: JMXServiceURL should require an explicit protocol
- JDK-8309399: JVMTI spec needs to clarify when OPAQUE_FRAME is thrown
for reasons other than a native method
- JDK-8361212: Remove AffirmTrust root CAs
- JDK-8353925: Remove Sun Microsystems JCE Code Signing Root CA
- JDK-8361964: Remove outdated algorithms from requirements and add
PBES2 algorithms
- JDK-8332623: Remove setTTL()/getTTL() methods from
DatagramSocketImpl/MulticastSocket and
MulticastSocket.send(DatagramPacket, byte)
- JDK-8359760: Remove the jdk.jsobject module
- JDK-8356557: Update CodeSource::implies API documentation and
deprecate java.net.SocketPermission class for removal
- JDK-8310932: [win] Install the JDK in a per-release directory
pointed to by a shared junction
- JDK-8359956: Support algorithm constraints and certificate checks in
SunX509 key manager
- JDK-8359395: XML signature generation does not support user provided
SecureRandom
- JDK-8356645: Javac should utilize new ZIP file system read-only
access mode
Note: A complete list of changes can be found here[8].
[6] https://jdk.java.net/26/ <https://jdk.java.net/26/>
[7] https://jdk.java.net/26/release-notes
<https://jdk.java.net/26/release-notes>
[8] https://github.com/openjdk/jdk/compare/jdk-26+1...jdk-26+10
<https://github.com/openjdk/jdk/compare/jdk-26+1...jdk-26+10>
# Topics of Interest
- Java 25 Encodes PEM
https://inside.java/2025/06/19/newscast-93/
<https://inside.java/2025/06/19/newscast-93/>
- JDK 25: Just Be Lazy
https://inside.java/2025/07/29/just-be-lazy/
<https://inside.java/2025/07/29/just-be-lazy/>
- JDK 25: A Sneak Peek at the Stable Values API
https://inside.java/2025/07/22/javaone-stablevalues/
<https://inside.java/2025/07/22/javaone-stablevalues/>
- Java 25 is ALSO no LTS Version
https://inside.java/2025/07/03/newscast-94/
<https://inside.java/2025/07/03/newscast-94/>
- JVMLS: The not-so-final word on `final`
https://inside.java/2025/08/12/jvmls-final-to-immutable/
<https://inside.java/2025/08/12/jvmls-final-to-immutable/>
- HTTP/3 in Java
https://inside.java/2025/07/31/newscast-96/
<https://inside.java/2025/07/31/newscast-96/>
- Project Leyden's AOT / Shifting Java Startup into High Gear
https://inside.java/2025/06/29/javaone-leyden-aot/
<https://inside.java/2025/06/29/javaone-leyden-aot/>
- Java Security Evolution - Out with the Old, In with the New
https://inside.java/2025/07/20/javaone-security/
<https://inside.java/2025/07/20/javaone-security/>
- Java GPGPU Enablement: Are We There Yet?
https://inside.java/2025/07/14/javaone-hat/
<https://inside.java/2025/07/14/javaone-hat/>
- Podcast “Deprecations & Removals” with Stuart Marks
https://inside.java/2025/07/28/podcast-039/
<https://inside.java/2025/07/28/podcast-039/>
- Podcast “Integrity by Default” with Ron Pressler
https://inside.java/2025/06/24/podcast-038/
<https://inside.java/2025/06/24/podcast-038/>
- A New Model for Java Object Initialization
https://inside.java/2025/07/27/javaone-object-initialization/
<https://inside.java/2025/07/27/javaone-object-initialization/>
- ZGC: Paving the GC On-Ramp
https://inside.java/2025/07/10/javaone-zgc/
<https://inside.java/2025/07/10/javaone-zgc/>
- Marshalling: Data-Oriented Serialization
https://inside.java/2025/07/08/javaone-marshalling/
<https://inside.java/2025/07/08/javaone-marshalling/>
- Interconnecting Java and Native Code with the FFM API
https://inside.java/2025/06/14/javaone-ffm/
<https://inside.java/2025/06/14/javaone-ffm/>
- FFM vs. Unsafe. Safety (Sometimes) Has a Cost
https://inside.java/2025/06/12/ffm-vs-unsafe/
<https://inside.java/2025/06/12/ffm-vs-unsafe/>
- Java Gets a JSON API
https://inside.java/2025/07/17/newscast-95/
<https://inside.java/2025/07/17/newscast-95/>
~
That’s it for now. If you run into any issues while testing your
projects with the latest JDK 26 early-access builds, don’t hesitate to
reach out. The end of summer is going to be exciting and busy with the
Java 25 launch coming up, so stay tuned!
--David