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 [2] 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/ [4] https://jdk.java.net/25/release-notes [5] 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/ [7] https://jdk.java.net/26/release-notes [8] 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/ - JDK 25: 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/ - Java 25 is ALSO no LTS Version 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/ - HTTP/3 in Java 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/ - Java Security Evolution - Out with the Old, In with the New https://inside.java/2025/07/20/javaone-security/ - Java GPGPU Enablement: Are We There Yet? https://inside.java/2025/07/14/javaone-hat/ - Podcast “Deprecations & Removals” with Stuart Marks https://inside.java/2025/07/28/podcast-039/ - Podcast “Integrity by Default” with Ron Pressler https://inside.java/2025/06/24/podcast-038/ - A New Model for Java 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/ - Marshalling: Data-Oriented Serialization 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/ - FFM vs. Unsafe. Safety (Sometimes) Has a Cost https://inside.java/2025/06/12/ffm-vs-unsafe/ - Java Gets a JSON API 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