Predefined ISO-8601 based formatters in the
DateTimeFormatter class that accept zone offsets (for
example, ISO_DATE) now support short zone offsets for
parsing. In previous releases, parsing offsets without seconds or
nanoseconds (for example, +01) resulted in a
DateTimeParseException with some ISO formatters. These
offsets are now parsed successfully by all predefined ISO
formatters that accept zone offsets.
JDK 27 Early-Access Release Notes
This is a draft of the release notes that will accompany JDK 27. The contents are subject to change until release.
Features
Enhance the security of Java applications that require secure
network communication by implementing hybrid
key exchange algorithms for TLS 1.3. Such algorithms
defend against future quantum computing attacks by combining a
quantum-resistant algorithm with a traditional algorithm.
Applications that use the javax.net.ssl APIs will
benefit from these improved algorithms by default, without change
to existing code.
Build 8
Predefined ISO-8601 Formatters Support Short Zone Offsets (JDK-8210336)
Build 7
TLS 1.3 KeyAgreement now Uses the Generic Key
Algorithm (JDK-8328046)
TLS 1.3 KeyAgreement has been changed to use the
Generic key algorithm for Diffie-Hellman shared
secrets instead of the TlsPremasterSecret algorithm.
This is an implementation detail that should be transparent to the
users of the SunJSSE provider, but it may cause handshake failures
when using JCE providers that do not support Generic
keys.
Build 2
Removal of ThreadPoolExecutor.finalize() (JDK-8371748)
The finalize() method has been removed from
java.util.concurrent.ThreadPoolExecutor.
ThreadPoolExecutor.finalize() was deprecated in JDK
9 as part of deprecating finalization for removal JEP 421. The method was
re-specified in JDK 11 to "do nothing" and deprecated for removal
in JDK 18.
The removal of this method means that any existing code that
extends ThreadPoolExecutor and overrides
finalize() to call super.finalize() (or
calls finalize() directly) will now call
Object.finalize(). This code may no longer compile as
Object.finalize() throws Throwable
whereas the removed ThreadPoolExecutor.finalize() did
not declare any checked exceptions. Developers are strongly
encouraged to stop using finalization but if necessary, the source
compatibility issue can be worked around using a
try-catch.
Removal of the java.locale.useOldISOCodes System
Property (JDK-8355522)
Support for the java.locale.useOldISOCodes system
property in the
java.util.Locale class has been removed.
Originally introduced in JDK 17, this property allowed applications
to revert to legacy ISO 639 language codes ("iw" for Hebrew, "ji"
for Yiddish, and "in" for Indonesian). It was deprecated in JDK 25
and, starting with JDK 27, specifying this property has no effect
and triggers a warning at runtime. Users who still rely on the old
codes are encouraged to transition to the current standard codes:
"he" for Hebrew, "yi" for Yiddish, and "id" for Indonesian.