java

JDK 25.0.5 Release Notes

Java SE 25.0.5 - Bundled Patch Release (BPR) - Bug Fixes and Updates

The following sections summarize changes made in all Java SE 25.0.5 BPR releases. The BPR releases are listed below in date order, most current BPR first. Note that bug fixes in previous BPRs are also included in the current BPR.

 

Changes in Java SE 25.0.5.0.1

The 25.0.5.0.1 BPR is available to all users here.

Bug Fixes

Release date: October 20, 2026
BugId Category Subcategory Summary
JDK-8384557 hotspot runtime (tz) Allow configuration of the JVM's temporary directory on Linux
JDK-8392377 core-libs java.time (tz) Update Timezone Data to 2026d
JDK-8392519 core-libs java.util:i18n Cherry-pick metazone changes from CLDR for tzdata2026d, for JDK update release
JDK-8392526 core-libs java.util:i18n Cherry-pick BCP 47 time zone changes from CLDR for tzdata2026d, for JDK update releases
JDK-8393337 core-libs java.time (tz) Update Timezone Data to 2026e
JDK-8393344 core-libs java.util:i18n Cherry-pick metazone changes from CLDR to support tzdata2026e for JDK update releases
JDK-8392538 core-libs java.util:i18n Align the JDK with Microsoft's new timezone names for British Columbia/Alberta
JDK-8393848 core-libs java.util:i18n Align the JDK with Microsoft's new timezone name for Manitoba

Java™ SE Development Kit 25, Update 25.0.5 (JDK 25.0.5)

Release date: October 20, 2026

The full version string for this update release is 25.0.5+9 (where "+" means "build"). The version number is 25.0.5. This JDK conforms to version 25 of the Java SE Specification (JSR 400 2025-09-16).

 

IANA TZ Data 2026c

JDK 25.0.5 contains IANA time zone data 2026c which contains the following changes:

  • Alberta moved to permanent -06 on 2026-06-18.
  • Morocco moves to permanent +00 on 2026-09-20.

For more information, refer to Timezone Data Versions in the JRE Software.

 

Security Baselines

The security baselines for the Java Runtime Environment (JRE) at the time of the release of JDK 25.0.5 are specified in the following table:

JRE Family Version JRE Security Baseline (Full Version String)
2525.0.5+9
2121.0.13+10
1717.0.21+9
1111.0.33+9
81.8.0_511-b09

 

Keeping the JDK up to Date

Oracle recommends that the JDK is updated with each Critical Patch Update. In order to determine if a release is the latest, the Security Baseline page can be used to determine which is the latest version for each release family.

Critical patch updates, which contain security vulnerability fixes, are announced one year in advance on Critical Patch Updates, Security Alerts and Bulletins. It is not recommended that this JDK (version 25.0.5) be used after the next critical patch update scheduled for November 17, 2026.

Java Management Service, available to all users, can help you find vulnerable Java versions in your systems. Java SE Subscribers and customers running in Oracle Cloud can use Java Management Service to update Java Runtimes and to do further security reviews like identifying potentially vulnerable third party libraries used by your Java programs. Existing Java Management Service user click here to log in to your dashboard. The Java Management Service Documentation provides a list of features available to everyone and those available only to customers. Learn more about using Java Management Service to monitor and secure your Java Installations.

 

Other Notes

security-libs/java.security
➜ PKCS12 KeyStore Support for RFC 9879: Use of Password-Based Message Authentication Code 1 (PBMAC1) (JDK-8343232)

The JDK PKCS12 KeyStore implementation now supports the more modern PBMAC1 algorithm for integrity protection. To use the PBMAC1 algorithm, set the keystore.pkcs12.macAlgorithm property in the java.security configuration file to a PBMAC1 algorithm, for example, PBEWithHmacSHA256. Existing PKCS12 keystore files will continue to use the integrity algorithm it was created with, but new keystore files will use the PBMAC1 algorithm.

In a future JDK release, the default value of the keystore.pkcs12.macAlgorithm security property will be changed to a PBMAC1 algorithm.

security-libs/java.security
➜ Policy for Distrusting Certain TLS Server Certificates has Changed (JDK-8382178 (not public))

All TLS server certificates anchored by Symantec, Entrust, and Camerfirma root CAs are now distrusted, regardless of their issuing date. TLS server certificates anchored by Chunghwa root CAs will be completely distrusted as of April 19, 2027. The jdk.security.caDistrustPolicies security property in the java.security configuration file has been updated to reflect these new policies.

core-libs/java.net
➜ HttpServer Validates the Host Request Header (JDK-8386525 (not public))

The com.sun.net.http.HttpServer has been updated to validate the Host request header as described in RFC 9112. HTTP/1.1 requests without a Host header or with multiple Host headers are now rejected with an HTTP 400 Bad Request response.

The validation can be disabled by setting the system property sun.net.httpserver.disableHostValidation to true.

core-libs/java.sql
➜ Clarification of WebRowSet.readXml Exception Behavior (JDK-8383301 (not public))

The implementation of the WebRowSet.readXml methods has been updated to consistently report XML parsing and validation failures as SQLException.

WebRowSet.readXml validates XML input against the standard WebRowSet XML schema. Applications should expect malformed XML, schema validation failures, unsupported external entities, and other XML processing errors to be reported as SQLException. Validation can be disabled by setting the system property jdk.sql.rowset.webrowsetValidation to false.

The existing method signatures remain unchanged. No specification changes are included in this update.

core-libs/javax.naming
➜ Extend the Scope of com.sun.jndi.ldap.object.trustSerialData System Property to cover RMI URL References Obtained From an LDAP Context (JDK-8382407 (not public))

The scope of the com.sun.jndi.ldap.object.trustSerialData system property is extended to cover transparent processing of URL RMI References obtained from an LDAP context.

A URL context factory is a special type of ObjectFactory that will be used to look up an object referred to from a JNDI javax.naming.Reference that does not specify any factory name, but contains a simple reference address in the form of a URL string. When deserialization of Java objects from LDAP is disabled, the JDK built-in implementation of the JNDI/LDAP provider will no longer transparently use any URL context factory when processing Reference objects containing a URL reference whose scheme is rmi.

To make it possible to have a finer-grain control over which URL schemes should be disabled when processing URL string reference addresses from the built-in JNDI/LDAP provider, a new system property, jdk.jndi.ldap.disabledURLSchemes, is introduced. The value of this property is a comma-separated list of URL schemes that are disabled. The JDK built-in implementation of the JNDI/LDAP provider will no longer transparently use any URL context factory when processing Reference objects containing a URL reference whose scheme corresponds (case insensitively) to one of the schemes in this list of disabled schemes. The default value for that property is "rmi" if trustSerialData is false (the default), and empty if trustSerialData is true. If a custom value for this new property is provided on the Java command line then only schemes listed in that property value are disabled, regardless of the value of trustSerialData.

If rmi is included in this list (the default when no custom values have been supplied for com.sun.jndi.ldap.object.trustSerialData or jdk.jndi.ldap.disabledURLSchemes), then a javax.naming.Reference object will be returned to the application instead of the object that would have been created by processing the RMI reference and looking up its URL from the context returned by a URL context factory.

An application that depends on following RMI URLs contained in a Reference obtained from a JNDI/LDAP context may need to process the Reference object explicitly, or provide a custom value for the jdk.jndi.ldap.disabledURLSchemes system property that does not include the rmi scheme.

An application that wants to prevent transparent processing of other kinds of URL schemes can now do so by supplying a custom value for the jdk.jndi.ldap.disabledURLSchemes system property that also includes them.

security-libs/java.security
➜ LuxTrust Global Root CA Removed (JDK-8387123)

The following root certificate has been removed from the cacerts keystore:

+ alias name "luxtrustglobalrootca [jdk]"

  Distinguished Name: CN=LuxTrust Global Root, O=LuxTrust s.a., C=LU

security-libs/javax.net.ssl
➜ Post-Quantum Hybrid Key Exchange for TLS 1.3 (JDK-8314323)

Hybrid key exchange algorithms for TLS 1.3 have been implemented, enhancing the security of Java applications that require secure network communication. These algorithms defend against future quantum computing attacks by combining a quantum-resistant algorithm with a traditional algorithm.

The following three new hybrid key exchange algorithms are supported: X25519MLKEM768, SecP256r1MLKEM768, and SecP384r1MLKEM1024. The X25519MLKEM768 group is enabled by default and is the most preferred group. This feature works out of the box. No API or configuration change is needed, as long as both peers support the X25519MLKEM768 group and it is the most preferred group. X25519MLKEM768 is the most widely deployed hybrid group.

To verify that a post-quantum hybrid group was negotiated by the TLS handshake, enable JSSE debugging by setting the system property javax.net.debug to ssl:handshake and inspect the contents of the key_share extension of the ServerHello message, ex:

"key_share (51)": {

  "server_share": {
    "named group": x25519mlkem768
  }
}

For more details, see JEP 527: Post-Quantum Hybrid Key Exchange for TLS 1.3.

tools/jshell
➜ New JShell Remote Agent Launch Protocol (JDK-8384736 (not public))

The way JShell's remote agents are invoked has changed. Existing agents will need to be updated to use the new protocol. See the jdk.jshell.execution.RemoteExecutionControl JavaDoc API documentation for the new protocol.

xml/jaxp
➜ JAXP Templates Class Deserialization Is Disabled (JDK-8384654 (not public))

Deserialization of the com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl class is now disabled by default. (This is an internal class that implements the javax.xml.transform.Templates interface.) An application attempting to deserialize an instance of this class will receive UnsupportedOperationException. To re-enable deserialization of this class, set the system property jdk.xml.enableTemplatesImplDeserialization to true. To take effect, this property must be set on the command line, in the jaxp.properties file, or in a user-defined JAXP configuration file.

 

Fixes

This release contains fixes for security vulnerabilities described in the Oracle Critical Patch Update.

➜ Issues fixed in 25.0.5:
# JBS Component/Subcomponent Summary
1JDK-8385490client-libs/2dUpdate HarfBuzz to 14.2.0
2JDK-8385390client-libs/2dUpdate FreeType to 2.14.3
3JDK-8387593client-libs/2dUsing XOR mode to clear the content leaves some traces in metal
4JDK-8341382client-libs/java.awtEXCEPTION_ACCESS_VIOLATION in awt.dll after JDK-8185862
5JDK-8384902client-libs/java.awtUpdate GIFlib to 6.1.3
6JDK-8384495client-libs/java.awtUpdate Libpng to 1.6.58
7JDK-8377992core-libs/java.nio(zipfs) Align ZipFileSystem END header validation with the ZipFile implementation
8JDK-8381670core-libs/java.util.jarRevert the changes to GZIPInputStream related to InputStream.available() usage
9JDK-8381379core-libs/java.util:i18nSupport std/dstOffset attributes in CLDR's metazone definitions
10JDK-8390388core-libs/java.util:i18nCherry-pick tz attributes from newer CLDR data for jdk25u and earlier
11JDK-8390380core-libs/java.util:i18nCherry-pick metazone changes from CLDR to support tzdata2026c for JDK update releases
12JDK-8386852hotspot/compilerLower peak throughput with AOTCache
13JDK-8388703hotspot/compilerLaunching with AOT cache fatally crashes with SIGILL (0x4) depending on available CPU instructions
14JDK-8386578hotspot/compilerdouble_keccak stub does not set its return value on x86
15JDK-8360934hotspot/compilerAdd AVX-512 intrinsics for ML-KEM - enhancement on AVX512_VBMI
16JDK-8377811hotspot/gc [25u] G1: Optional Evacuations may evacuate pinned objects
17JDK-8364106hotspot/runtimeInclude java.runtime.version in thread dump output
18JDK-8357220hotspot/runtimeIntroduce a BSMAttributeEntry struct
19JDK-8375125hotspot/runtimeassert(false) failed: "Attempting to acquire lock NativeHeapTrimmer_lock/nosafepoint out of order with lock ConcurrentHashTableResize_lock/nosafepoint-2 -- possible deadlock" when using native heap trimmer
20JDK-8367656hotspot/runtimeRefactor Constantpool's operand array into two
21JDK-8381771security-libs/java.securityAdd a check for DNS label not to end with a hyphen
22JDK-8367008security-libs/java.securityAlgorithm identifiers for HmacSHA* should always have NULL as params
23JDK-8374755security-libs/javax.cryptoML-KEM's 12-bit decompression can be simplified on aarch64
24JDK-8368694security-libs/javax.crypto:pkcs11PKCS11-NSS generic keys generated by DH have leading zeroes stripped
25JDK-8375275security-libs/javax.net.sslError handling to raise illegal_parameter or internal_error alert in hybrid key exchange
26JDK-8379433security-libs/javax.net.sslThrowing proper exception for invalid encapsulation length in Hybrid
27JDK-8386600security-libs/javax.net.sslFix comparison checks in DHasKEM