Release date: April 15, 2025
The full version string for this update release is 11.0.27+8 (where "+" means "build"). The version number is 11.0.27. This JDK conforms to version 11.3 of the Java SE Specification (JSR 384 MR 3 2024-07-02).
JDK 11.0.27 contains IANA time zone data 2025a which contains the following changes:
For more information, refer to Timezone Data Versions in the JRE Software.
The security baselines for the Java Runtime at the time of the release of JDK 11.0.27 are specified in the following table:
Java Family Version | Security Baseline (Full Version String) |
---|---|
11 | 11.0.27+8 |
8 | 1.8.0_451-b10 |
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 11.0.27) be used after the next critical patch update scheduled for July 15, 2025.
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.
The command-line flag -XX:+ExtensiveErrorReports
has been added to allow more extensive reporting of information related to a crash as reported in the hs_err<pid>.log
file. Disabled by default in product builds, the flag can be turned on in environments where maximal information is desired - even if the resulting logs may be quite large and/or contain information that might be considered sensitive.
Native PKCS11 mechanisms which support decryption but not encryption, or signature verification but not signing, are considered legacy and are disabled by default. The legacy mechanism check in SunPKCS11 provider is enhanced with the service type. For example, prior to this fix, a mechanism supporting encryption, decryption, and verification but not signing, is considered legacy and can't be used at all. After this fix, the corresponding Cipher service using this mechanism is available since both encryption and decryption are supported. However, the corresponding Signature service is not since only verification is supported. To bypass the legacy mechanism check, set the PKCS11 provider configuration attribute "allowLegacy" to true. The default value is false. Note that it is the caller's responsibility to make sure the legacy mechanism is not used for the unsupported functionality.
The JDK will stop trusting TLS server certificates issued after April 15, 2025 and anchored by Camerfirma root certificates, in line with similar plans announced by Google, Mozilla, Apple, and Microsoft.
TLS server certificates issued on or before April 15, 2025 will continue to be trusted until they expire. Certificates issued after that date, and anchored by any of the Certificate Authorities in the table below, will be rejected.
The restrictions are enforced in the JDK implementation (the SunJSSE
Provider) of the Java Secure Socket Extension (JSSE) API. A TLS session will not be negotiated if the server's certificate chain is anchored by any of the Certificate Authorities in the table below and the certificate has been issued after April 15, 2025.
An application will receive an exception with a message indicating the trust anchor is not trusted, for example:
"TLS Server certificate issued after 2025-04-15 and anchored by a distrusted legacy
Camerfirma root CA: CN=Chambers of Commerce Root - 2008, O=AC Camerfirma S.A.,
SERIALNUMBER=A82743287, L=Madrid (see current address at www.camerfirma.com/address), C=EU"
The JDK can be configured to trust these certificates again by removing "CAMERFIRMA_TLS" from the jdk.security.caDistrustPolicies
security property in the java.security
configuration file.
The restrictions are imposed on the following Camerfirma Root certificates included in the JDK:
Distinguished Name | SHA-256 Fingerprint |
---|---|
CN=Chambers of Commerce Root, OU=http://www.chambersign.org, O=AC Camerfirma SA CIF A82743287, C=EU |
0C:25:8A:12:A5:67:4A:EF:25:F2:8B:A7:DC:FA:EC:EE:A3:48:E5:41:E6:F5:CC:4E:E6:3B:71:B3:61:60:6A:C3 |
CN=Chambers of Commerce Root - 2008, O=AC Camerfirma S.A., SERIALNUMBER=A82743287, L=Madrid (see current address at www.camerfirma.com/address), C=EU |
06:3E:4A:FA:C4:91:DF:D3:32:F3:08:9B:85:42:E9:46:17:D8:93:D7:FE:94:4E:10:A7:93:7E:E2:9D:96:93:C0 |
CN=Global Chambersign Root - 2008, O=AC Camerfirma S.A., SERIALNUMBER=A82743287, L=Madrid (see current address at www.camerfirma.com/address), C=EU |
13:63:35:43:93:34:A7:69:80:16:A0:D3:24:DE:72:28:4E:07:9D:7B:52:20:BB:8F:BD:74:78:16:EE:BE:BA:CA |
You can also use the keytool
utility from the JDK to print out details of the certificate chain, as follows:
keytool -v -list -alias <your_server_alias> -keystore <your_keystore_filename>
If any of the certificates in the chain are issued by one of the root CAs in the table above are listed in the output you will need to update the certificate or contact the organization that manages the server.
String concatenation has been changed to evaluate each argument and eagerly convert it to a string, in left-to-right order. This fixes a bug in the invokedynamic-based string concatentation strategies introduced in JEP 280.
For example, the following now prints "foofoobar"
, not "foobarfoobar"
:
StringBuilder builder = new StringBuilder("foo");
System.err.println("" + builder + builder.append("bar"));
The JarInputStream
class now treats a signed JAR as unsigned if it detects a second manifest within the first two entries in the JAR file. A warning message "WARNING: Multiple MANIFEST.MF found. Treat JAR file as unsigned."
is logged if the system property, -Djava.security.debug=jar
, is set.
On Solaris, the CKM_TLS_KEY_AND_MAC_DERIVE
mechanism offered by the SunPKCS11-Solaris provider and specific to TLSv1.0, can derive incorrect key data causing TLSv1.0 communication failure. That mechanism has been disabled via the $JAVA_HOME/conf/security/sunpkcs11-solaris.cfg
configuration file. The JCE provider now manages these cryptographic requests.
The implementation of the ExpandEntityReferences
feature was changed to comply with the specification of the DocumentBuilderFactory.setExpandEntityReferences
method. Specifically, now when the method is set to false
and encounters an entity reference, a DOM parser created by the DocumentBuilderFactory
adds the EntityReference
node to the DOM tree without the expanded Text node. Before the change, the implementation incorrectly added both nodes.
With the change, the DOM parser no longer reads and resolves entity references when the feature ExpandEntityReferences
is set to false. For applications that intend to avoid resolving entity references, it will work as expected.
This change also affects the DOM Load and Save parser. The entities
parameter is aligned with the ExpandEntityReferences
feature, so that setting the entities
parameter to true
is equivalent to setting ExpandEntityReferences
to false
. In the following code snippet, the document
will contain EntityReference
nodes but not expanded Text
nodes:
LSParser domParser = domImplementationLS.createLSParser(MODE_SYNCHRONOUS, null);
domParser.getDomConfig().setParameter("entities", true);
LSInput src = domImplementationLS.createLSInput();
src.setStringData(source);
Document document = domParser.parse(src);
Because the references are not resolved, the resulting string will contain entity references without the text when the document
is serialized:
LSSerializer lsSerializer = domImplementationLS.createLSSerializer();
lsSerializer.getDomConfig().setParameter("format-pretty-print", true);
String result = lsSerializer.writeToString(document);
This release also contains fixes for security vulnerabilities described in the Oracle Critical Patch Update.
➜ Issues fixed in 11.0.27:
# | JBS | Component | Summary |
---|---|---|---|
1 | JDK-8274893 | client-libs | Update java.desktop classes to use try-with-resources |
2 | JDK-8231231 | client-libs/2d | The printing result is different from the case instruction. |
3 | JDK-8061381 | client-libs/java.awt | [macosx] Accelerators does not spelled for JMenuItems by Voice Over |
4 | JDK-8312518 | client-libs/java.awt | [macos13] setFullScreenWindow() shows black screen on macOS 13 & above |
5 | JDK-8309733 | client-libs/javax.accessibility | [macOS, Accessibility] VoiceOver: Incorrect announcements of JRadioButton |
6 | JDK-8311160 | client-libs/javax.accessibility | [macOS, Accessibility] VoiceOver: No announcements on JRadioButtonMenuItem and JCheckBoxMenuItem |
7 | JDK-8283214 | client-libs/javax.accessibility | [macos] Screen magnifier does not show the magnified text for JComboBox |
8 | JDK-8283387 | client-libs/javax.accessibility | [macos] a11y : Screen magnifier does not show selected Tab |
9 | JDK-8339728 | client-libs/javax.accessibility | [Accessibility,Windows,JAWS] Bug in the getKeyChar method of the AccessBridge class |
10 | JDK-8332866 | client-libs/javax.imageio | Crash in ImageIO JPEG decoding when MEM_STATS in enabled |
11 | JDK-8347911 | client-libs/javax.imageio | Limit the length of inflated text chunks |
12 | JDK-8213071 | client-libs/javax.swing | [macos] The focus disappears after pressing return to close the "That was a pretty good movie!" dialog. |
13 | JDK-8301989 | client-libs/javax.swing | new javax.swing.text.DefaultCaret().setBlinkRate(N) results in NPE |
14 | JDK-8221730 | core-svc/tools | jcmd process name matching broken |
15 | JDK-8208582 | hotspot/compiler | Introduce native oop barriers in C1 for OopHandle |
16 | JDK-8239477 | hotspot/compiler | jdk/jfr/jcmd/TestJcmdStartStopDefault.java fails -XX:+VerifyOops with "verify_oop: rsi: broken oop" |
17 | JDK-8228764 | hotspot/runtime | New library dependencies due to JDK-8222720 |
18 | JDK-8331959 | security-libs/javax.crypto:pkcs11 | Update PKCS#11 Cryptographic Token Interface to v3.1 |
19 | JDK-8331958 | security-libs/javax.smartcardio | Update PC/SC Lite for Suse Linux to 2.3.0 |