RELEASE NOTES: JDK 17.0.21

Notes generated: Tue Sep 01 05:44:00 CEST 2026

JEPs

None.

RELEASE NOTES

hotspot/compiler

Issue Description
JDK-8348561

ML-DSA Performance Improved


The performance of the ML-DSA key generation, sign, and verify operations has been improved significantly, 1.5 - 2.5 times depending on operation type and input, on the aarch64 and AVX-512 platforms.


JDK-8349721

ML-KEM Performance Improved


The performance of the ML-KEM key generation, encapsulation, and decapsulation operations has been improved significantly, 1.9 - 2.7 times depending on operation type and platform, on the aarch64 and AVX-512 platforms.


security-libs/javax.crypto

Issue Description
JDK-8347938

Added Support for the Latest ML-KEM and ML-DSA Private Key Encodings


The JDK now encodes ML-KEM and ML-DSA private keys in PKCS #8 format using the DER-encoded ASN.1 CHOICE formats defined in Section 6, "Private Key Format" of RFC 9935 and Section 6, "Private Key Format" of RFC 9881. Two new security properties, jdk.mlkem.pkcs8.encoding and jdk.mldsa.pkcs8.encoding, control the encoding used when generating new keys with a KeyPairGenerator or when translating keys with a KeyFactory. Valid values are seed, expandedKey, and both (case-insensitive). If a system property of the same name is also specified, it supersedes the security property value. All three formats are supported when decoding previously encoded private keys with a KeyFactory.

When these algorithms were introduced in JDK 24, the encoding format was equivalent to the expandedKey value. This release changes the default value to seed. As a result, ML-KEM and ML-DSA private keys generated by this JDK release will not be accepted by older releases by default, although keys generated by older releases are still readable by this release. To enable older JDK releases to accept ML-KEM and ML-DSA private keys generated by this JDK release, set the jdk.mlkem.pkcs8.encoding or jdk.mldsa.pkcs8.encoding property (whichever property is relevant to your use case) to expandedKey, and use KeyFactory.translateKey to convert the key to the older format.


Added Support for the Latest ML-KEM and ML-DSA Private Key Encodings


The JDK now encodes ML-KEM and ML-DSA private keys in PKCS #8 format using the DER-encoded ASN.1 CHOICE formats defined in Section 6, "Private Key Format" of RFC 9935 and Section 6, "Private Key Format" of RFC 9881. Two new security properties, jdk.mlkem.pkcs8.encoding and jdk.mldsa.pkcs8.encoding, control the encoding used when generating new keys with a KeyPairGenerator or when translating keys with a KeyFactory. Valid values are seed, expandedKey, and both (case-insensitive). If a system property of the same name is also specified, it supersedes the security property value. All three formats are supported when decoding previously encoded private keys with a KeyFactory.

The default encoding for newly generated ML-KEM and ML-DSA private keys is seed. Applications that require a particular private-key encoding can configure the relevant security property or equivalent system property.


security-libs/java.security

Issue Description
JDK-8354305

SHAKE128-256 and SHAKE256-512 as MessageDigest Algorithms


Two new MessageDigest algorithms, SHAKE128-256 and SHAKE256-512, have been added to the SUN provider. These are fixed-length versions of the SHAKE128 and SHAKE256 Extendable-Output Functions (XOFs) defined in NIST FIPS 202. For more information, see The SUN Provider.


JDK-8333867

SHA3 Performance Improved


The performance of the MessageDigest implementations that belong to the SHA3 family (SHA3-224, SHA3-256, SHA3-384, and SHA3-512) has been improved by 6-27%, depending on digested message length and on the platform used. An additional 30-40% can be experienced on AVX-512 capable platforms due to new intrinsic implementations on that platform.


JDK-8387123

LuxTrust Global Root CA removed


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

```


FIXED ISSUES

client-libs/2d

Priority Bug Summary
P3 JDK-8378506 [macOS] Window content not updated when rendering to multiple windows
P4 JDK-8365426 [macos26] Graphics2D tests fail on new macOS 26
P4 JDK-8300167 Add validation of the raster's layout before using in native
P4 JDK-8284965 closed test sun/java2d/OpenGL/XORPaint.java is unstable
P4 JDK-8298240 Replace the usage of ImageLayoutException by the CMMException

client-libs/java.awt

Priority Bug Summary
P3 JDK-8164464 Consistent failure of java/awt/dnd/MissingEventsOnModalDialog/MissingEventsOnModalDialogTest.java
P3 JDK-8386991 Insets are incorrectly set in newer Gnome versions
P3 JDK-8023814 Test java/awt/im/memoryleak/InputContextMemoryLeakTest.java fails
P4 JDK-6626492 Event time in future part 2, now on X
P4 JDK-8129778 Few awt test fail for Solaris 11 with RuntimeException
P4 JDK-8168388 GetMousePositionTest fails with the message "Mouse position should not be null"
P4 JDK-8202932 java/awt/Component/NativeInLightShow/NativeInLightShow.java fails
P4 JDK-8196367 java/awt/List/SingleModeDeselect/SingleModeDeselect.java times out
P4 JDK-8196018 java/awt/Scrollbar/ScrollbarMouseWheelTest/ScrollbarMouseWheelTest.java fails
P4 JDK-8213120 java/awt/TextArea/AutoScrollOnSelectAndAppend/AutoScrollOnSelectAndAppend.java fails on mac10.13
P4 JDK-8355241 Move NativeDialogToFrontBackTest.java PL test to manual category
P4 JDK-8196440 Regression automated Test 'java/awt/TrayIcon/PopupMenuLeakTest/PopupMenuLeakTest.java' fails
P4 JDK-8343739 Test java/awt/event/KeyEvent/ExtendedKeyCode/ExtendedKeyCodeTest.java failed: Wrong extended key code
P4 JDK-8352149 Test java/awt/Frame/MultiScreenTest.java fails: Window list is empty
P4 JDK-8213530 Test java/awt/Modal/ToFront/DialogToFrontModeless1Test.java fails on Linux
P4 JDK-8148041 Test java/awt/Mouse/TitleBarDoubleClick/TitleBarDoubleClick fails on Ubuntu with mouseReleased event after double click on title bar
P4 JDK-8372546 UnixMultiResolutionSplashTest.java fails intermittently on Ubuntu_24.04

client-libs/javax.accessibility

Priority Bug Summary
P3 JDK-8372757 MacOS, Accessibility: Crash in [MenuAccessibility accessibilityChildren] after JDK-8341311

client-libs/javax.sound

Priority Bug Summary
P3 JDK-7067310 3 tests from closed/javax/sound/sampled caused BSOD on win 7 x86
P4 JDK-8307574 ClipIsRunningAfterStop.java failed with "../nptl/pthread_mutex_lock.c:81: __pthread_mutex_lock: Assertion `mutex->__data.__owner == 0' failed."
P4 JDK-8308395 javax/sound/sampled/Clip/ClipFlushCrash.java timed out
P4 JDK-8373632 Some sound tests failing in CI due to lack of sound key

client-libs/javax.swing

Priority Bug Summary
P3 JDK-8194946 Regression automated Test 'javax/swing/JFileChooser/6738668/bug6738668.java' fails
P4 JDK-8305780 javax/swing/JTable/7068740/bug7068740.java fails on Ubunutu 20.04
P4 JDK-8376151 Test javax/swing/JFileChooser/4966171/bug4966171.java is failing with OOME

core-libs

Priority Bug Summary
P3 JDK-8378180 Compiling OpenJDK with C23 C-Compiler gives warning: initialization discards ‘const’ qualifier from pointer target type
P4 JDK-8340493 Fix some Asserts failure messages

core-libs/java.io

Priority Bug Summary
P4 JDK-8343342 java/io/File/GetXSpace.java fails on Windows with CD-ROM drive

core-libs/java.io:serialization

Priority Bug Summary
P4 JDK-8389492 [21u] java/io/Serializable/records/ProhibitedMethods.java fails after JDK-8307843 backport in othervm mode

core-libs/java.lang

Priority Bug Summary
P3 JDK-8356695 java/lang/StringBuilder/HugeCapacity.java failing with OOME
P4 JDK-8359735 [Ubuntu 25.10] java/lang/ProcessBuilder/Basic.java, java/lang/ProcessHandle/InfoTest.java fail due to rust-coreutils
P4 JDK-8279954 java/lang/StringBuffer(StringBuilder)/HugeCapacity.java intermittently fails

core-libs/java.lang.invoke

Priority Bug Summary
P4 JDK-8373832 Test java/lang/invoke/TestVHInvokerCaching.java tests nothing

core-libs/java.net

Priority Bug Summary
P3 JDK-8304701 Request with timeout aborts later in-flight request on HTTP/1.1 cxn
P4 JDK-8390327 [17u] test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/common/HttpServerAdapters.java fails to compile in Java 17 after JDK-8343855 backport
P4 JDK-8373796 Refactor java/net/httpclient/ThrowingPublishers*.java tests to use JUnit5
P4 JDK-8373866 Refactor java/net/httpclient/ThrowingSubscribers*.java tests to use JUnit5
P4 JDK-8318662 Refactor some jdk/java/net/httpclient/http2 tests to JUnit
P4 JDK-8365983 Tests should throw SkippedException when SCTP not supported

core-libs/java.nio

Priority Bug Summary
P4 JDK-8378878 Refactor java/nio/channels/AsynchronousSocketChannel test to use JUnit

core-libs/java.rmi

Priority Bug Summary
P4 JDK-8365398 TEST_BUG: java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java failing intermittently

core-libs/java.util.concurrent

Priority Bug Summary
P4 JDK-8296405 java/util/concurrent/forkjoin/AsyncShutdownNow.java is too slow

core-libs/java.util.jar

Priority Bug Summary
P4 JDK-8304013 Add a fast, non-manual alternative to test/jdk/java/util/zip/ZipFile/TestTooManyEntries
P4 JDK-8341625 Improve ZipFile validation of the END header

core-libs/java.util:i18n

Priority Bug Summary
P4 JDK-8380993 [REDO] Incorrect Interpretation of POSIX TZ Environment Variable on AIX
P4 JDK-8380223 Refactor test/jdk/sun/util/resources TestNG tests to JUnit

core-svc/java.lang.management

Priority Bug Summary
P4 JDK-8303136 MemoryPoolMBean/isCollectionUsageThresholdExceeded/isexceeded005 failed with "isCollectionUsageThresholdExceeded() returned true, while threshold = 1 and used = 0"
P4 JDK-8345684 OperatingSystemMXBean.getSystemCpuLoad() throws NPE

core-svc/tools

Priority Bug Summary
P4 JDK-8278102 containers/docker/TestJcmd.java failed with "RuntimeException: Could not find specified process"

hotspot/compiler

Priority Bug Summary
P3 JDK-8295698 AArch64: test/jdk/sun/security/ec/ed/EdDSATest.java failed with -XX:+UseSHA3Intrinsics
P3 JDK-8348561 Add aarch64 intrinsics for ML-DSA
P3 JDK-8349721 Add aarch64 intrinsics for ML-KEM
P3 JDK-8354926 Remove remnants of debugging in the fix for JDK-8348561 and JDK-8349721
P4 JDK-8310331 JitTester: Exclude java.lang.Math.random
P4 JDK-8275047 Optimize existing fill stubs for AVX-512 target
P4 JDK-8284813 x86 Code cleanup related to move instructions.

hotspot/gc

Priority Bug Summary
P4 JDK-8377347 jdk/jfr/event/gc/detailed/TestZAllocationStallEvent.java intermittent OOME
P4 JDK-8286737 Test vmTestbase/gc/gctests/WeakReference/weak006/weak006.java fails: Last soft reference has not been cleared

hotspot/jfr

Priority Bug Summary
P3 JDK-8380011 Path-to-gcroots search should not trigger stack overflows
P4 JDK-8365498 jdk/jfr/event/os/TestCPULoad.java fails with Expected at least one event

hotspot/runtime

Priority Bug Summary
P3 JDK-8377991 TestLimitsUpdating.java fails with runtime exception even after JDK-8370492 is fixed
P4 JDK-8375125 assert(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
P4 JDK-8334502 gtest/GTestWrapper.java fails on armhf due to LogDecorations.iso8601_utctime_test

hotspot/svc

Priority Bug Summary
P4 JDK-8387625 Add "dt_socket" to `CheckedFeatures.notImplemented` for Windows/ARM64

infrastructure

Priority Bug Summary
P4 JDK-8385509 Bump update version for OpenJDK: jdk-17.0.21

infrastructure/build

Priority Bug Summary
P3 JDK-8300805 Update autoconf build-aux files with latest from 2022-09-17

performance/libraries

Priority Bug Summary
P4 JDK-8353478 Update crypto microbenchmarks to cover ML-DSA, ML-KEM, and HSS algorithms

security-libs/java.security

Priority Bug Summary
P2 JDK-8345057 ML_KEM NamedParameterSpec constants removed by ML-DSA integration
P2 JDK-8342002 sun/security/tools/keytool/GenKeyPairSigner.java failed due to missing certificate output
P2 JDK-8356051 Update SignatureUtil.java with the new KnownOIDs
P3 JDK-8340327 A common framework to support public key algorithms with standard parameter sets
P3 JDK-8333754 Add a Test against ECDSA and ECDH NIST Test vector
P3 JDK-8374886 CAInterop.java#microsoftrsa2017 test fails as EE certificate does not specify OCSP responder
P3 JDK-8308474 DSA does not reset SecureRandom when initSign is called again
P3 JDK-8300399 EdDSA does not verify when there is no message
P3 JDK-8298387 Implement JEP 497: Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm
P3 JDK-8338587 Internal XOF Methods for SHAKE128 and SHAKE256
P3 JDK-8279800 isAssignableFrom checks in AlgorithmParametersSpi.engineGetParameterSpec appear to be backwards
P3 JDK-8354305 SHAKE128 and SHAKE256 MessageDigest algorithms
P3 JDK-8320192 SHAKE256 does not work correctly if n >= 137
P3 JDK-8345533 Switch ML-DSA implementation to FIPS 204 final
P3 JDK-8349017 Update ML tests to verify against ACVP 1.1.0.38 version
P4 JDK-8390325 [17u] test/jdk/sun/security/x509/GeneralName/DNSNameTest.java fails to compile in Java 17 after JDK-8381771 backport
P4 JDK-8368677 acvp test should throw SkippedException when no ACVP-Server available
P4 JDK-8381771 Add a check for DNS label not to end with a hyphen
P4 JDK-8349759 Add unit test for CertificateBuilder and SimpleOCSPServer test utilities
P4 JDK-8301793 AlgorithmId should not encode a missing parameters field as NULL unless hardcoded
P4 JDK-8385584 CAInterop.java#buypassclass3ca fails with Intermediate Root CA not found in the chain
P4 JDK-8267617 Certificate's IP x509 NameConstraints raises ArrayIndexOutOfBoundsException
P4 JDK-8379515 draft-ietf-lamps-kyber-certificates is now RFC 9935
P4 JDK-8325506 Ensure randomness is only read from provided SecureRandom object
P4 JDK-8381937 Make exceptions in Java_sun_security_mscapi_CKeyPairGenerator generateCKeyPair more specific
P4 JDK-8347606 Optimize Java implementation of ML-DSA
P4 JDK-8387123 Remove LuxTrust Global Root CA
P4 JDK-8345512 Remove wrapper functions for intrinsics in PQC algorithms
P4 JDK-8333867 SHA3 performance can be improved
P4 JDK-8275914 SHA3: changing java implementation to help C2 create high-performance code
P4 JDK-8342442 Static ACVP sample tests

security-libs/javax.crypto

Priority Bug Summary
P2 JDK-8347938 Add Support for the Latest ML-KEM and ML-DSA Private Key Encodings
P3 JDK-8298390 Implement JEP 496: Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism
P4 JDK-8296910 Add EdDSA/XDH/RSASSA-PSS to KeyPairGeneratorBench.java
P4 JDK-8189441 Define algorithm names for keys derived from KeyAgreement
P4 JDK-8350589 Investigate cleaner implementation of AArch64 ML-DSA intrinsic introduced in JDK-8348561
P4 JDK-8374755 ML-KEM's 12-bit decompression can be simplified on aarch64
P4 JDK-8347608 Optimize Java implementation of ML-KEM

security-libs/javax.crypto:pkcs11

Priority Bug Summary
P4 JDK-8368694 PKCS11-NSS generic keys generated by DH have leading zeroes stripped

security-libs/javax.net.ssl

Priority Bug Summary
P4 JDK-8361125 Fix typo in onTradAbsence
P4 JDK-8348309 MultiNST tests need more debugging and timing
P4 JDK-8366182 Some PKCS11Tests are being skipped when they shouldn't
P4 JDK-8333857 Test sun/security/ssl/SSLSessionImpl/ResumeChecksServer.java failed: Existing session was used

security-libs/jdk.security

Priority Bug Summary
P4 JDK-8365863 /test/jdk/sun/security/pkcs11/Cipher tests skip without SkippedException
P4 JDK-8282633 jarsigner output does not explain why an EC key is disabled if its curve has been disabled
P4 JDK-8367096 jdk/open/test/jdk/sun/security/pkcs11/ rsa, ec, config, secmod and sslecc tests are skipping but showing as pass
P4 JDK-8361894 sun/security/krb5/config/native/TestDynamicStore.java ensure that the test is run with sudo
P4 JDK-8360562 sun/security/tools/keytool/i18n.java add an ability to add comment for failures
P4 JDK-8365861 test/jdk/sun/security/pkcs11/Provider/ tests skipped without SkippedException
P4 JDK-8373793 TestDynamicStore.java '/manual' disables use of '/timeout'
P5 JDK-8360395 sun/security/tools/keytool/i18n.java user country is current user location instead of the language

tools

Priority Bug Summary
P4 JDK-8313612 Use JUnit in lib-test/jdk tests

tools/jshell

Priority Bug Summary
P4 JDK-8386776 [17u] Test test/langtools/jdk/jshell/UndefinedClassTest.java fails on JDK 17 with java.lang.ThreadDeath
P4 JDK-8305714 Add an extra test for JDK-8292755
P4 JDK-8365776 Convert JShell tests to use JUnit instead of TestNG
P4 JDK-8374434 Several JShell tests report JUnit discovery warnings

xml/jaxp

Priority Bug Summary
P4 JDK-8349959 Test CR6740048.java passes unexpectedly missing CR6740048.xsd