RELEASE NOTES: JDK 17.0.17

Notes generated: Sat Jul 19 06:32:13 CEST 2025

JEPs

None.

RELEASE NOTES

security-libs/javax.xml.crypto

Issue Description
JDK-8344137

Update XML Security for Java to 3.0.5


The XML Signature implementation has been updated to Santuario 3.0.5. Support for four new SHA-3 based ECDSA SignatureMethod algorithms have been added: SignatureMethod.ECDSA_SHA3_224, SignatureMethod.ECDSA_SHA3_256, SignatureMethod.ECDSA_SHA3_384, and SignatureMethod.ECDSA_SHA3_512.


core-libs/javax.naming

Issue Description
JDK-8290368

Introduce LDAP and RMI Protocol Specific Object Factory Filters to JNDI Implementation


In this release, new system and security properties are introduced to allow more granular control over the set of JNDI object factories allowed to reconstruct Java objects from JNDI/LDAP and JNDI/RMI contexts:

  • The new jdk.jndi.ldap.object.factoriesFilter property specifies which object factory classes are allowed to instantiate Java objects from object references returned by JNDI/LDAP contexts. Its default value only allows object factories defined in the java.naming module.

  • The new jdk.jndi.rmi.object.factoriesFilter property specifies which object factory classes are allowed to instantiate Java objects from object references returned by JNDI/RMI contexts. Its default value only allows object factories defined in the jdk.rmi module.

These new factory filter properties complement the jdk.jndi.object.factoriesFilter global factories filter property by determining if a specific object factory is permitted to instantiate objects for the LDAP or RMI protocols used in JNDI.

An application depending on custom object factories to recreate Java objects from JNDI/LDAP or JNDI/RMI contexts will need to supply a security or system property with an updated value to allow such third-party object factories to reconstruct LDAP or RMI objects. If usage of a factory is denied, the lookup operation may result in a plain instance of javax.naming.Reference instance returned, which may lead to a ClassCastException being thrown in the application.

For more information, see the java.naming and jdk.naming.rmi module-info documentation.


Introduce LDAP and RMI Protocol Specific Object Factory Filters to JNDI Implementation


In this release, new system and security properties are introduced to allow more granular control over the set of JNDI object factories allowed to reconstruct Java objects from JNDI/LDAP and JNDI/RMI contexts:

  • The new jdk.jndi.ldap.object.factoriesFilter property specifies which object factory classes are allowed to instantiate Java objects from object references returned by JNDI/LDAP contexts. Its default value only allows object factories defined in the java.naming module.

  • The new jdk.jndi.rmi.object.factoriesFilter property specifies which object factory classes are allowed to instantiate Java objects from object references returned by JNDI/RMI contexts. Its default value only allows object factories defined in the jdk.naming.rmi module.

These new factory filter properties complement the jdk.jndi.object.factoriesFilter global factories filter property by determining if a specific object factory is permitted to instantiate objects for the LDAP or RMI protocols used in JNDI.

An application depending on custom object factories to recreate Java objects from JNDI/LDAP or JNDI/RMI contexts will need to supply a security or system property with an updated value to allow such third-party object factories to reconstruct LDAP or RMI objects. If usage of a factory is denied, the lookup operation may result in a plain instance of javax.naming.Reference instance returned, which may lead to a ClassCastException being thrown in the application.


Introduce LDAP and RMI Protocol Specific Object Factory Filters to JNDI Implementation


In this release, new system and security properties are introduced to allow more granular control over the set of JNDI object factories allowed to reconstruct Java objects from JNDI/LDAP and JNDI/RMI contexts:

  • The new jdk.jndi.ldap.object.factoriesFilter property specifies which object factory classes are allowed to instantiate Java objects from object references returned by JNDI/LDAP contexts. By default, only object factories defined with the setting of the property 'jdk.jndi.ldap.object.factoriesFilter=com.sun.jndi.ldap.*;!' are allowed.

  • The new jdk.jndi.rmi.object.factoriesFilter property specifies which object factory classes are allowed to instantiate Java objects from object references returned by JNDI/RMI contexts. By default, only object factories defined with the setting of the property jdk.jndi.rmi.object.factoriesFilter=com.sun.jndi.rmi.**;!* are allowed.

These new factory filter properties complement the jdk.jndi.object.factoriesFilter global factories filter property by determining if a specific object factory is permitted to instantiate objects for the LDAP or RMI protocols used in JNDI.

An application depending on custom object factories to recreate Java objects from JNDI/LDAP or JNDI/RMI contexts will need to supply a security or system property with an updated value to allow such third-party object factories to reconstruct LDAP or RMI objects. If usage of a factory is denied, the lookup operation may result in a plain instance of javax.naming.Reference instance returned, which may lead to a ClassCastException being thrown in the application.


tools/launcher

Issue Description
JDK-8337506

Disable "best-fit" Mapping on Windows Command Line


Command line arguments to the Java launcher are no longer converted with Windows' "best-fit" mapping when the arguments include unmappable characters for the ANSI code page. This mapping has been intervening in the Java launcher's argument parsing. Unmappable characters are now replaced with the default replacement character, such as '?' in some cases. For rare cases, where applications need those unmappable characters on the command line, select UTF-8 in Windows Regional Settings.


security-libs/java.security

Issue Description
JDK-8313367

SunMSCAPI Provider Opens the Windows Local Computer Key Store in Read-Only Mode in Non-Elevated Processes


The Local Computer key store is accessed using the CERT_STORE_MAXIMUM_ALLOWED_FLAG. Since this store is typically managed by administrators for security reasons, processes are only given read-only access to specific private keys. By opening the store in read-only mode, non-elevated processes can now securely use these keys without requiring elevated permissions.


FIXED ISSUES

client-libs

Priority Bug Summary
P4 JDK-8355515 Clarify the purpose of forcePass() and forceFail() methods
P4 JDK-8276046 codestrings.validate_vm gtest fails on ppc64, s390
P4 JDK-8345566 Deproblemlist test/jdk/javax/swing/JComboBox/6559152/bug6559152.java
P4 JDK-8355441 Remove antipattern from PassFailJFrame.forcePass javadoc
P5 JDK-8352624 Add missing {@code} to PassFailJFrame.Builder.splitUI

client-libs/2d

Priority Bug Summary
P3 JDK-8312191 ColorConvertOp.filter for the default destination is too slow
P3 JDK-8355528 Update HarfBuzz to 11.2.0

client-libs/java.awt

Priority Bug Summary
P3 JDK-8203867 Delete test java/awt/TrayIcon/DblClickActionEventTest/DblClickActionEventTest.html
P3 JDK-8225777 java/awt/Mixing/MixingOnDialog.java fails on Ubuntu
P4 JDK-8343977 Convert java/awt/TextArea/TextAreaCursorTest/HoveringAndDraggingTest to main
P4 JDK-8355366 Fix the wrong usage of PassFailJFrame.forcePass() in some manual tests
P4 JDK-8196017 java/awt/Mouse/GetMousePositionTest/GetMousePositionWithPopup.java fails
P4 JDK-8339561 The test/jdk/java/awt/Paint/ListRepaint.java may fail after JDK-8327401

client-libs/javax.swing

Priority Bug Summary
P3 JDK-8042381 Test javax/swing/JRootPane/4670486/bug4670486.java fails with Action has not been received
P4 JDK-8328089 Automate javax/swing/JTable/4222153/bug4222153.java applet test
P4 JDK-8328087 Automate javax/swing/JTable/TAB/TAB.java applet test
P4 JDK-8327969 Convert javax/swing/border/Test6910490.java applet test to main
P4 JDK-8327750 Convert javax/swing/JFileChooser/FileFilterDescription/FileFilterDescription.java applet test to main
P4 JDK-8327751 Convert javax/swing/JInternalFrame/6726866/bug6726866.java applet test to main
P4 JDK-8327752 Convert javax/swing/JOptionPane/4174551/bug4174551.java applet to main
P4 JDK-8327754 Convert javax/swing/JPopupMenu/7160604/bug7160604.java applet to main
P4 JDK-8327755 Convert javax/swing/JScrollBar/8039464/Test8039464.java applet to main
P4 JDK-8327872 Convert javax/swing/JToolTip/4644444/bug4644444.java applet test to main
P4 JDK-8327874 Convert javax/swing/JTree/4314199/bug4314199.java applet test to main
P4 JDK-8280818 Expand bug8033699.java to iterate over all LaFs
P4 JDK-8345767 javax/swing/JSplitPane/4164779/JSplitPaneKeyboardNavigationTest.java fails in ubuntu22.04
P4 JDK-8344338 javax/swing/JTextArea/bug4265784.java fails on Ubuntu 24.04.1
P4 JDK-8351884 Refactor bug8033699.java test code
P4 JDK-8326606 Test javax/swing/text/BoxView/6494356/bug6494356.java performs a synchronization on a value based class

core-libs

Priority Bug Summary
P4 JDK-8335252 Reduce size of j.u.Formatter.Conversion#isValid
P4 JDK-8339834 Replace usages of -mx and -ms in some tests

core-libs/java.io

Priority Bug Summary
P4 JDK-8136895 Writer not closed with disk full error, file resource leaked

core-libs/java.lang

Priority Bug Summary
P4 JDK-8334394 Race condition in Class::protectionDomain

core-libs/java.net

Priority Bug Summary
P3 JDK-8299338 AssertionError in ResponseSubscribers$HttpResponseInputStream::onSubscribe
P3 JDK-8294916 Cancelling a request must eventually cause its response body subscriber to be unregistered
P3 JDK-8277969 HttpClient SelectorManager shuts down when custom Executor rejects a task
P3 JDK-8297424 java/net/httpclient/AsyncExecutorShutdown.java fails in AssertionError due to misplaced assert
P3 JDK-8298340 java/net/httpclient/CancelRequestTest.java fails with AssertionError: Found some subscribers for testPostInterrupt
P3 JDK-8298931 java/net/httpclient/CancelStreamedBodyTest.java fails with AssertionError due to Pending TCP connections: 1
P4 JDK-8274453 (sctp) com/sun/nio/sctp/SctpChannel/CloseDescriptors.java test should be resilient to lsof warnings
P4 JDK-8355578 [java.net] Use @requires tag instead of exiting based on "os.name" property value
P4 JDK-8353662 Add test for non-local file URL fallback to FTP
P4 JDK-8276681 Additional malformed Javadoc inline tags in JDK source
P4 JDK-8286194 ExecutorShutdown test fails intermittently
P4 JDK-8301255 Http2Connection may send too many GOAWAY frames
P4 JDK-8288746 HttpClient resources could be reclaimed more eagerly
P4 JDK-8301004 httpclient: Add more debug to HttpResponseInputStream
P4 JDK-8297075 java/net/httpclient/CancelStreamedBodyTest.java fails with "java.lang.AssertionError: WARNING: tracker for HttpClientImpl(1) has outstanding operations"
P4 JDK-8217914 java/net/httpclient/ConnectTimeoutHandshakeSync.java failed on connection refused while doing POST
P4 JDK-8297200 java/net/httpclient/SpecialHeadersTest.java failed once in AssertionError due to selector thread remaining alive
P4 JDK-8301169 java/net/httpclient/ThrowingSubscribersAsInputStream.java,ThrowingSubscribersAsInputStreamAsync.java, and other httpclient tests failing on windows: Unable to establish loopback connection
P4 JDK-8358617 java/net/HttpURLConnection/HttpURLConnectionExpectContinueTest.java fails with 403 due to system proxies
P4 JDK-8314978 Multiple server call from connection failing with expect100 in getOutputStream
P4 JDK-8302635 Race condition in HttpBodySubscriberWrapper when cancelling request
P4 JDK-8297149 REDO JDK-8296889: Race condition when cancelling a request
P4 JDK-8317522 Test logic for BODY_CF in AbstractThrowingSubscribers.java is wrong
P4 JDK-8343074 test/jdk/com/sun/net/httpserver/docs/test1/largefile.txt could be generated
P4 JDK-8355475 UNCTest should use an existing UNC path
P4 JDK-8276401 Use blessed modifier order in java.net.http
P4 JDK-8352895 UserCookie.java runs wrong test class
P5 JDK-8275079 Remove unnecessary conversion to String in java.net.http

core-libs/java.nio.charsets

Priority Bug Summary
P4 JDK-8167252 Some of Charset.availableCharsets() does not contain itself

core-libs/java.text

Priority Bug Summary
P4 JDK-8340554 Improve MessageFormat readObject checks

core-libs/java.util

Priority Bug Summary
P4 JDK-8282144 RandomSupport.convertSeedBytesToLongs sign extension overwrites previous bytes
P4 JDK-8294509 The sign extension bug applies to 'public static int[] convertSeedBytesToInts(byte[] seed, int n, int z)' in RandomSupport

core-libs/java.util.concurrent

Priority Bug Summary
P4 JDK-8351933 Inaccurate masking of TC subfield decrement in ForkJoinPool

core-libs/java.util.jar

Priority Bug Summary
P4 JDK-8346871 Improve robustness of java/util/zip/EntryCount64k.java test

core-libs/java.util:i18n

Priority Bug Summary
P4 JDK-8348365 Bad format string in CLDRDisplayNamesTest
P4 JDK-8353713 Improve Currency.getInstance exception handling
P4 JDK-8314611 Provide more explicative error message parsing Currencies
P4 JDK-8343804 Show the default time zone with -XshowSettings option

core-libs/javax.naming

Priority Bug Summary
P3 JDK-8290368 Introduce LDAP and RMI protocol-specific object factory filters to JNDI implementation

core-svc/debugger

Priority Bug Summary
P3 JDK-8298907 nsk JDI tests pass if the debuggee failed to launch
P4 JDK-8317804 com/sun/jdi/JdwpAllowTest.java fails on Alpine 3.17 / 3.18
P4 JDK-8355453 nsk.share.jdi.Debugee.waitingEvent() does not timeout properly
P4 JDK-8330535 Update nsk/jdb tests to use driver instead of othervm
P4 JDK-8298514 vmTestbase/nsk/jdi/EventRequestManager/threadDeathRequests/thrdeathreq002/TestDescription.java fails with usage tracker
P4 JDK-8285032 vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy008/ fails with "eventSet.suspendPolicy() != policyExpected"

core-svc/java.lang.management

Priority Bug Summary
P3 JDK-8132785 java/lang/management/ThreadMXBean/ThreadLists.java fails intermittently
P4 JDK-8332551 Test vmTestbase/nsk/monitoring/MemoryNotificationInfo/from/from001/TestDescription.java timed out

core-svc/tools

Priority Bug Summary
P3 JDK-8226919 attach in linux hangs due to permission denied accessing /proc/pid/root

hotspot/compiler

Priority Bug Summary
P3 JDK-8273539 [PPC64] gtest build error after JDK-8264207
P3 JDK-8354941 Build failure with glibc 2.42 due to uabs() name collision
P3 JDK-8342330 C2: "node pinned on loop exit test?" assert failure
P3 JDK-8274039 codestrings gtest fails when hsdis is present
P3 JDK-8294839 Disable StressLongCountedLoop in compiler/loopopts/TestRemoveEmptyLoop.java
P4 JDK-8350483 AArch64: turn on signum intrinsics by default on Ampere CPUs
P4 JDK-8330106 C2: VectorInsertNode::make() shouldn't call ConINode::make() directly
P4 JDK-8345471 Clean up compiler/intrinsics/sha/cli tests
P4 JDK-8264207 CodeStrings does not honour fixed address assumption.
P4 JDK-8295005 compiler/loopopts/TestRemoveEmptyLoop.java fails with release VMs after JDK-8294839
P4 JDK-8315505 CompileTask timestamp printed can overflow
P4 JDK-8295210 IR framework should not whitelist -XX:-UseTLAB

hotspot/gc

Priority Bug Summary
P2 JDK-8340389 vmTestbase/gc/gctests/PhantomReference/phantom001/TestDescription.java Test exit code: 97 with -Xcomp UseAVX=3
P3 JDK-8340146 ZGC: TestAllocateHeapAt.java should not run with UseLargePages
P4 JDK-8332494 java/util/zip/EntryCount64k.java failing with java.lang.RuntimeException: '\\A\\Z' missing from stderr
P4 JDK-8297499 Parallel: Missing iteration over klass when marking objArrays/objArrayOops during Full GC
P4 JDK-8285773 Replace Algorithms.eatMemory(...) with WB.fullGC() in vmTestbase/gc/gctests/ReferencesGC/ReferencesGC.java
P4 JDK-8285951 Replace Algorithms.eatMemory(...) with WB.fullGC() in vmTestbase_vm_gc_ref tests
P4 JDK-8297740 runtime/ClassUnload/UnloadTest.java failed with "Test failed: should still be live"
P5 JDK-8345173 BlockLocationPrinter::print_location misses a ResourceMark

hotspot/jfr

Priority Bug Summary
P4 JDK-8353235 Test jdk/jfr/api/metadata/annotations/TestPeriod.java fails with IllegalArgumentException
P4 JDK-8352879 TestPeriod.java and TestGetContentType.java run wrong test class

hotspot/jvmti

Priority Bug Summary
P3 JDK-8339725 Concurrent GC crashed due to GetMethodDeclaringClass
P4 JDK-8346998 Test nsk/jvmti/ResourceExhausted/resexhausted003 fails with java.lang.OutOfMemoryError when CDS is off

hotspot/runtime

Priority Bug Summary
P2 JDK-8351997 AArch64: Interpreter volatile reference stores with G1 are not sequentially consistent
P3 JDK-8319932 [JVMCI] class unloading related tests can fail on libgraal
P3 JDK-8357793 [PPC64] VM crashes with -XX:-UseSIGTRAP -XX:-ImplicitNullChecks
P3 JDK-8344671 Few JFR streaming tests fail with application not alive error on MacOS 15
P3 JDK-8313083 Print 'rss' and 'cache' as part of the container information
P3 JDK-8297106 Remove the -Xcheck:jni local reference capacity checking
P4 JDK-8286660 codestrings gtest fails on AArch64: "udf" in padding
P4 JDK-8276175 codestrings.validate_vm gtest still broken on ppc64 after JDK-8276046
P4 JDK-8330022 Failure test/hotspot/jtreg/vmTestbase/nsk/sysdict/share/BTreeTest.java: Could not initialize class java.util.concurrent.ThreadLocalRandom
P4 JDK-8350767 Fix -Wzero-as-null-pointer-constant warnings in nsk jni stress tests
P4 JDK-8325910 Rename jnihelper.h
P4 JDK-8334320 Replace vmTestbase/metaspace/share/TriggerUnloadingWithWhiteBox.java with ClassUnloadCommon from testlibrary
P4 JDK-8354327 Rewrite runtime/LoadClass/LoadClassNegative.java
P4 JDK-8357968 RISC-V: Interpreter volatile reference stores with G1 are not sequentially consistent
P4 JDK-8283467 runtime/Thread/StopAtExit.java needs updating
P4 JDK-8352946 SEGV_BND signal code of SIGSEGV missing from our signal-code table
P4 JDK-8353568 SEGV_BNDERR signal code adjust definition

hotspot/test

Priority Bug Summary
P4 JDK-8332252 Clean up vmTestbase/vm/share
P4 JDK-8359272 Several vmTestbase/compact tests timed out on large memory machine

infrastructure/build

Priority Bug Summary
P3 JDK-8360042 GHA: Bump MSVC to 14.44
P4 JDK-8358538 Update GHA Windows runner to 2025

infrastructure/release_eng

Priority Bug Summary
P4 JDK-8358660 Bump update version for OpenJDK: jdk-17.0.17

security-libs/java.security

Priority Bug Summary
P3 JDK-8313367 SunMSCAPI cannot read Local Computer certs w/o Windows elevation
P4 JDK-8349151 Refactor test/java/security/cert/CertificateFactory/slowstream.sh to java test
P5 JDK-8352509 Update jdk.test.lib.SecurityTools jar method to accept List parameter

security-libs/javax.crypto:pkcs11

Priority Bug Summary
P4 JDK-8336499 Failure when creating non-CRT RSA private keys in SunPKCS11

security-libs/javax.net.ssl

Priority Bug Summary
P3 JDK-8350582 Correct the parsing of the ssl value in javax.net.debug

security-libs/javax.xml.crypto

Priority Bug Summary
P3 JDK-8344137 Update XML Security for Java to 3.0.5

security-libs/jdk.security

Priority Bug Summary
P4 JDK-8346285 Update jarsigner compatibility test for change in default digest algorithm

security-libs/org.ietf.jgss:krb5

Priority Bug Summary
P4 JDK-8352719 Add an equals sign to the modules statement

tools/javadoc(tool)

Priority Bug Summary
P4 JDK-8347381 Upgrade jQuery UI to version 1.14.1

tools/jlink

Priority Bug Summary
P4 JDK-8347302 Mark test tools/jimage/JImageToolTest.java as flagless

tools/jpackage

Priority Bug Summary
P4 JDK-8320858 Move jpackage tests to tier3

tools/jshell

Priority Bug Summary
P4 JDK-8312475 org.jline.util.PumpReader signed byte problem

tools/launcher

Priority Bug Summary
P4 JDK-8337506 Disable "best-fit" mapping on Windows command line