java

JDK 21.0.12 Release Notes

Java™ SE Development Kit 21, Update 21.0.12 (JDK 21.0.12)

Release date: July 21, 2026

The full version string for this update release is 21.0.12+7 (where "+" means "build"). The version number is 21.0.12. This JDK conforms to version 21 of the Java SE Specification (JSR 396 2023-09-19).

 

IANA TZ Data 2026b

JDK 21.0.12 contains IANA time zone data 2026b which contains the following changes:

  • British Columbia last daylight saving time change was 2026-03-08 spring forward.

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 21.0.12 are specified in the following table:

Java Family Version Security Baseline (Full Version String)
2121.0.12+7
1717.0.20+7
1111.0.32+7
81.8.0_501-b08

 

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 21.0.12) be used after the next Critical Security Patch Update scheduled for August 18, 2026. Oracle is transitioning to more frequent security updates, see the recently published blog for more information.

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.

 

Availability of Oracle JDK 21 under NFTC

Oracle JDK 21 LTS, released in September 2023, has been permissively licensed under the free Java license and will continue to be so until one year after the subsequent LTS release. Oracle designated Oracle JDK 25, released in September of 2025, as a Long Term Support (LTS) release. Therefore, update releases of Oracle JDK 21 after September of 2026 will switch to the Java SE OTN license, the same license under which we offer updates to Java 8, 11, and 17. Users wishing to receive updates of the Oracle JDK under the free Java license should migrate to Oracle JDK 25.

A similar licensing change will take effect for JavaFX 21 updates released after September 2026.

 

Other Notes

security-libs/java.security
 Added WISeKey Global GB and GC Root CA Certificates (JDK-8372351)

The following root certificates have been added to the cacerts truststore:

+ WISeKey

  + wisekeyglobalrootgbca
    DN: CN=OISTE WISeKey Global Root GB CA, OU=OISTE Foundation Endorsed, O=WISeKey, C=CH

+ WISeKey
  + wisekeyglobalrootgcca
    DN: CN=OISTE WISeKey Global Root GC CA, OU=OISTE Foundation Endorsed, O=WISeKey, C=CH

security-libs/javax.net.ssl
 Include Client's Host and Port in DTLS Cookie (JDK-8373275 (not public))

The DTLS implementation in the SunJSSE security provider has been enhanced to generate HelloVerifyRequest cookies as recommended by RFC 6347. To use this feature, applications must create the SSLEngine with the SSLContext.createSSLEngine(String peerHost, int peerPort) API.

security-libs/java.security
 Limiting the Size of Certificate Revocation List (CRL) Downloads (JDK-8381796 (not public))

A new system and security property, com.sun.security.crl.maxSize, has been added to limit the maximum length of a CRL that is downloaded through URIs in the CRL Distribution Points certificate extension during path validation. The value of these properties is the size in bytes of the DER-encoded CRL. For protocols that can return multivalue responses, such as LDAP, the size threshold is the sum of all CRLs downloaded from a single search query. CRLs that exceed this length will not be processed during certificate path validation. This size limit does not apply to CRLs that are imported through non-network-based means. A negative value disables this size limitation. A non-numeric value will be ignored, and the default size will be used instead. The default size limit is 20 MiB. For cases where both the security and system properties are set, the system property takes precedence. Enabling certificate path logging by setting java.security.debug=certpath will output the current size limit and note any discarded CRLs.

 

Fixes

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

Issues fixed in 21.0.12:
# JBS Component/Subcomponent Summary
1JDK-8369561client-libs/2dsun/java2d/OpenGL/DrawBitmaskImage.java#id0: Incorrect color for first pixel (actual=ff000000)
2JDK-8378201client-libs/2d[OGL] glXMakeContextCurrent() drops the buffers of the unbound drawable
3JDK-8378417client-libs/2dPrinting All pages results in NPE for 1.1 PrintJob
4JDK-8375057client-libs/2dUpdate HarfBuzz to 12.3.2
5JDK-8297191client-libs/2d[macos] Printing a page range with starting page > 1 results in missing pages
6JDK-8376233client-libs/java.awtClean up code in Desktop native peer
7JDK-8379256client-libs/java.awtUpdate GIFlib to 6.1.1
8JDK-8380959client-libs/java.awtUpdate Libpng to 1.6.56
9JDK-8380078client-libs/java.awtUpdate GIFlib to 6.1.2
10JDK-8382047client-libs/java.awtUpdate Libpng to 1.6.57
11JDK-8377526client-libs/java.awtUpdate Libpng to 1.6.55
12JDK-8347826client-libs/java.beansIntrospector shows wrong method list after 8071693
13JDK-8286258client-libs/javax.accessibility[Accessibility,macOS,VoiceOver] VoiceOver reads the spinner value wrong and sometime partially
14JDK-8374506client-libs/javax.swingIncorrect positioning of arrow icon in parent JMenu in Windows L&F
15JDK-8365379client-libs/javax.swingSU3.applyInsets may produce wrong results
16JDK-8377727client-libs/javax.swingGhost caret and focus appear in non‑editable text fields
17JDK-8365625client-libs/javax.swingCan't change accelerator colors in Windows L&F
18JDK-8321514core-libs/java.langUTF16 string gets constructed incorrectly from codepoints if CompactStrings is not enabled
19JDK-8353698core-libs/java.netOutput of Simple Web Server is garbled if the console's encoding is not UTF-8
20JDK-8376031core-libs/java.netHttpsURLConnection.getServerCertificates() throws "java.lang.IllegalStateException: connection not yet open" for the HEAD method
21JDK-8304701core-libs/java.netRequest with timeout aborts later in-flight request on HTTP/1.1 cxn
22JDK-8378631core-libs/java.util.jarUpdate Zlib Data Compression Library to Version 1.3.2
23JDK-8348328core-libs/java.util:i18nUpdate IANA Language Subtag Registry to Version 2025-05-15
24JDK-8362428core-libs/java.util:i18nUpdate IANA Language Subtag Registry to Version 2025-08-25
25JDK-8318509hotspot/compilerx86 count_positives intrinsic broken for -XX:AVX3Threshold=0
26JDK-8324345hotspot/compilerStack overflow during C2 compilation when splitting memory phi
27JDK-8373894hotspot/gcG1: Count evacuation-failed garbage collections in gc cpu usage
28JDK-8322142hotspot/jfrJFR: Periodic tasks aren't orphaned between recordings
29JDK-8341427hotspot/jfrJFR: Adjust object sampler span handling
30JDK-8364190hotspot/jfrJFR: RemoteRecordingStream withers don't work
31JDK-8382242hotspot/jfrJFR: Metadata reconstruction invalidates ConstantMap for java.lang.String
32JDK-8368670hotspot/jfrDeadlock in JFR on event register + class load
33JDK-8380474hotspot/runtimeCrash SEGV in ThreadIdTable::lazy_initialize after JDK-8323792
34JDK-8357086hotspot/runtimeos::xxx functions returning memory size should return size_t
35JDK-8368551hotspot/runtimeCore dump warning may be confusing
36JDK-8356868hotspot/runtimeNot all cgroup parameters are made available
37JDK-8338883hotspot/runtimeShow warning when CreateCoredumpOnCrash set, but core dump will not happen
38JDK-8323792hotspot/svcThreadSnapshot::initialize can cause assert in Thread::check_for_dangling_thread_pointer (possibility of dangling Thread pointer)
39JDK-8357062security-libs/java.securityUpdate Public Suffix List to 823beb1
40JDK-8373690security-libs/java.securityUnexpected Keystore message using jdk.crypto.disabledAlgorithms
41JDK-8350749tools/jshellUpgrade JLine to 3.29.0
42JDK-8373928tools/launcher4 Dangling pointer defect groups in java.c