2021-01-22 13:10:45 +00:00
|
|
|
Key:
|
|
|
|
|
|
|
|
JDK-X - https://bugs.openjdk.java.net/browse/JDK-X
|
|
|
|
CVE-XXXX-YYYY: https://cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY
|
|
|
|
|
2021-10-20 17:32:18 +00:00
|
|
|
New in release OpenJDK 17.0.1 (2021-10-19):
|
|
|
|
===========================================
|
|
|
|
Live versions of these release notes can be found at:
|
|
|
|
* https://builds.shipilev.net/backports-monitor/release-notes-17.0.1.txt
|
|
|
|
|
|
|
|
* Security fixes
|
|
|
|
- JDK-8263314: Enhance XML Dsig modes
|
|
|
|
- JDK-8265167, CVE-2021-35556: Richer Text Editors
|
|
|
|
- JDK-8265574: Improve handling of sheets
|
|
|
|
- JDK-8265580, CVE-2021-35559: Enhanced style for RTF kit
|
|
|
|
- JDK-8265776: Improve Stream handling for SSL
|
|
|
|
- JDK-8266097, CVE-2021-35561: Better hashing support
|
|
|
|
- JDK-8266103: Better specified spec values
|
|
|
|
- JDK-8266109: More Resilient Classloading
|
|
|
|
- JDK-8266115: More Manifest Jar Loading
|
|
|
|
- JDK-8266137, CVE-2021-35564: Improve Keystore integrity
|
|
|
|
- JDK-8266689, CVE-2021-35567: More Constrained Delegation
|
|
|
|
- JDK-8267086: ArrayIndexOutOfBoundsException in java.security.KeyFactory.generatePublic
|
|
|
|
- JDK-8267712: Better LDAP reference processing
|
|
|
|
- JDK-8267729, CVE-2021-35578: Improve TLS client handshaking
|
|
|
|
- JDK-8267735, CVE-2021-35586: Better BMP support
|
|
|
|
- JDK-8268193: Improve requests of certificates
|
|
|
|
- JDK-8268199: Correct certificate requests
|
|
|
|
- JDK-8268205: Enhance DTLS client handshake
|
|
|
|
- JDK-8268500: Better specified ParameterSpecs
|
|
|
|
- JDK-8268506: More Manifest Digests
|
|
|
|
- JDK-8269618, CVE-2021-35603: Better session identification
|
|
|
|
- JDK-8269624: Enhance method selection support
|
|
|
|
- JDK-8270398: Enhance canonicalization
|
|
|
|
- JDK-8270404: Better canonicalization
|
|
|
|
* Other changes
|
|
|
|
- JDK-8225082: Remove IdenTrust certificate that is expiring in September 2021
|
|
|
|
- JDK-8243543: jtreg test security/infra/java/security/cert/CertPathValidator/certification/BuypassCA.java fails
|
|
|
|
- JDK-8248899: security/infra/java/security/cert/CertPathValidator/certification/QuoVadisCA.java fails, Certificate has been revoked
|
|
|
|
- JDK-8261088: Repeatable annotations without @Target cannot have containers that target module declarations
|
|
|
|
- JDK-8262731: [macOS] Exception from "Printable.print" is swallowed during "PrinterJob.print"
|
|
|
|
- JDK-8263531: Remove unused buffer int
|
|
|
|
- JDK-8266182: Automate manual steps listed in the test jdk/sun/security/pkcs12/ParamsTest.java
|
|
|
|
- JDK-8267625: AARCH64: typo in LIR_Assembler::emit_profile_type
|
|
|
|
- JDK-8267666: Add option to jcmd GC.heap_dump to use existing file
|
|
|
|
- JDK-8268019: C2: assert(no_dead_loop) failed: dead loop detected
|
|
|
|
- JDK-8268261: C2: assert(n != __null) failed: Bad immediate dominator info.
|
|
|
|
- JDK-8268427: Improve AlgorithmConstraints:checkAlgorithm performance
|
|
|
|
- JDK-8268963: [IR Framework] Some default regexes matching on PrintOptoAssembly in IRNode.java do not work on all platforms
|
|
|
|
- JDK-8269297: Bump version numbers for JDK 17.0.1
|
|
|
|
- JDK-8269478: Shenandoah: gc/shenandoah/mxbeans tests should be more resilient
|
|
|
|
- JDK-8269574: C2: Avoid redundant uncommon traps in GraphKit::builtin_throw() for JVMTI exception events
|
|
|
|
- JDK-8269763: The JEditorPane is blank after JDK-8265167
|
|
|
|
- JDK-8269851: OperatingSystemMXBean getProcessCpuLoad reports incorrect process cpu usage in containers
|
|
|
|
- JDK-8269882: stack-use-after-scope in NewObjectA
|
|
|
|
- JDK-8269897: Shenandoah: Resolve UNKNOWN access strength, where possible
|
|
|
|
- JDK-8269934: RunThese24H.java failed with EXCEPTION_ACCESS_VIOLATION in java_lang_Thread::get_thread_status
|
|
|
|
- JDK-8269993: [Test]: java/net/httpclient/DigestEchoClientSSL.java contains redundant @run tags
|
|
|
|
- JDK-8270094: Shenandoah: Provide human-readable labels for test configurations
|
|
|
|
- JDK-8270096: Shenandoah: Optimize gc/shenandoah/TestRefprocSanity.java for interpreter mode
|
|
|
|
- JDK-8270098: ZGC: ZBarrierSetC2::clone_at_expansion fails with "Guard against surprises" assert
|
|
|
|
- JDK-8270137: Kerberos Credential Retrieval from Cache not Working in Cross-Realm Setup
|
|
|
|
- JDK-8270280: security/infra/java/security/cert/CertPathValidator/certification/LetsEncryptCA.java OCSP response error
|
|
|
|
- JDK-8270344: Session resumption errors
|
|
|
|
- JDK-8271203: C2: assert(iff->Opcode() == Op_If || iff->Opcode() == Op_CountedLoopEnd || iff->Opcode() == Op_RangeCheck) failed: Check this code when new subtype is added
|
|
|
|
- JDK-8271276: C2: Wrong JVM state used for receiver null check
|
|
|
|
- JDK-8271335: Updating RE Configs for BUILD REQUEST 17.0.1+4
|
|
|
|
- JDK-8271589: fatal error with variable shift count integer rotate operation.
|
|
|
|
- JDK-8271723: Unproblemlist runtime/InvocationTests/invokevirtualTests.java
|
|
|
|
- JDK-8271730: Client authentication using RSASSA-PSS fails after correct certificate requests
|
|
|
|
- JDK-8271925: ZGC: Arraycopy stub passes invalid oop to load barrier
|
|
|
|
- JDK-8272124: Cgroup v1 initialization causes NullPointerException when cgroup path contains colon
|
|
|
|
- JDK-8272131: PhaseMacroExpand::generate_slow_arraycopy crash when clone null CallProjections.fallthrough_ioproj
|
|
|
|
- JDK-8272326: java/util/Random/RandomTestMoments.java had two Gaussian fails
|
|
|
|
- JDK-8272332: --with-harfbuzz=system doesn't add -lharfbuzz after JDK-8255790
|
|
|
|
- JDK-8272472: StackGuardPages test doesn't build with glibc 2.34
|
|
|
|
- JDK-8272581: sun/security/pkcs11/Provider/MultipleLogins.sh fails after JDK-8266182
|
|
|
|
- JDK-8272602: [macos] not all KEY_PRESSED events sent when control modifier is used
|
|
|
|
- JDK-8272700: [macos] Build failure with Xcode 13.0 after JDK-8264848
|
|
|
|
- JDK-8272708: [Test]: Cleanup: test/jdk/security/infra/java/security/cert/CertPathValidator/certification/BuypassCA.java no longer needs ocspEnabled
|
|
|
|
- JDK-8272806: [macOS] "Apple AWT Internal Exception" when input method is changed
|
|
|
|
- JDK-8273358: macOS Monterey does not have the font Times needed by Serif
|
|
|
|
|
|
|
|
Notes on individual issues:
|
|
|
|
===========================
|
|
|
|
|
|
|
|
security-libs/java.security:
|
|
|
|
|
|
|
|
JDK-8271434: Removed IdenTrust Root Certificate
|
|
|
|
===============================================
|
|
|
|
The following root certificate from IdenTrust has been removed from
|
|
|
|
the `cacerts` keystore:
|
|
|
|
|
|
|
|
Alias Name: identrustdstx3 [jdk]
|
|
|
|
Distinguished Name: CN=DST Root CA X3, O=Digital Signature Trust Co.
|
|
|
|
|
2021-09-27 01:42:03 +00:00
|
|
|
New in release OpenJDK 17.0.0 (2021-09-14):
|
2021-01-22 13:10:45 +00:00
|
|
|
===========================================
|
2021-09-27 01:42:03 +00:00
|
|
|
The full list of changes in the interim releases from 11u to 17u can be found at:
|
|
|
|
* https://builds.shipilev.net/backports-monitor/release-notes-12.txt
|
|
|
|
* https://builds.shipilev.net/backports-monitor/release-notes-13.txt
|
|
|
|
* https://builds.shipilev.net/backports-monitor/release-notes-14.txt
|
|
|
|
* https://builds.shipilev.net/backports-monitor/release-notes-15.txt
|
|
|
|
* https://builds.shipilev.net/backports-monitor/release-notes-16.txt
|
|
|
|
* https://builds.shipilev.net/backports-monitor/release-notes-17.txt
|
|
|
|
|
|
|
|
Major changes are listed below. Some changes may have been backported
|
|
|
|
to earlier releases following their first appearance in OpenJDK 12
|
|
|
|
through to 17.
|
|
|
|
|
|
|
|
NEW FEATURES
|
|
|
|
============
|
|
|
|
|
|
|
|
Language Features
|
|
|
|
=================
|
|
|
|
|
|
|
|
Switch Expressions
|
|
|
|
==================
|
|
|
|
https://openjdk.java.net/jeps/325
|
|
|
|
https://openjdk.java.net/jeps/354
|
|
|
|
https://openjdk.java.net/jeps/361
|
|
|
|
|
|
|
|
Extend the `switch` statement so that it can be used as either a
|
|
|
|
statement or an expression, and that both forms can use either a
|
|
|
|
"traditional" or "simplified" scoping and control flow behavior. Both
|
|
|
|
forms can use either traditional `case ... :` labels (with fall
|
|
|
|
through) or new `case ... ->` labels (with no fall through), with a
|
|
|
|
further new statement for yielding a value from a `switch`
|
|
|
|
expression. These changes will simplify everyday coding, and also
|
|
|
|
prepare the way for the use of pattern matching in `switch`.
|
|
|
|
|
|
|
|
This was a preview feature (http://openjdk.java.net/jeps/12) in
|
|
|
|
OpenJDK 12 & 13 and became final in OpenJDK 14.
|
|
|
|
|
|
|
|
Text Blocks
|
|
|
|
===========
|
|
|
|
https://openjdk.java.net/jeps/355
|
|
|
|
https://openjdk.java.net/jeps/368
|
|
|
|
https://openjdk.java.net/jeps/378
|
|
|
|
|
|
|
|
Add text blocks to the Java language. A text block is a multi-line
|
|
|
|
string literal that avoids the need for most escape sequences,
|
|
|
|
automatically formats the string in a predictable way, and gives the
|
|
|
|
developer control over format when desired.
|
|
|
|
|
|
|
|
This was a preview feature (http://openjdk.java.net/jeps/12) in
|
|
|
|
OpenJDK 13 & 14 and became final in OpenJDK 15.
|
|
|
|
|
|
|
|
Pattern Matching for instanceof
|
|
|
|
===============================
|
|
|
|
https://openjdk.java.net/jeps/305
|
|
|
|
https://openjdk.java.net/jeps/375
|
|
|
|
https://openjdk.java.net/jeps/394
|
|
|
|
http://cr.openjdk.java.net/~briangoetz/amber/pattern-match.html
|
|
|
|
|
|
|
|
Enhance the Java programming language with pattern matching for the
|
|
|
|
`instanceof` operator. Pattern matching allows common logic in a
|
|
|
|
program, namely the conditional extraction of components from objects,
|
|
|
|
to be expressed more concisely and safely.
|
|
|
|
|
|
|
|
This was a preview feature (http://openjdk.java.net/jeps/12) in
|
|
|
|
OpenJDK 14 & 15 and became final in OpenJDK 16.
|
|
|
|
|
|
|
|
Records
|
|
|
|
=======
|
|
|
|
https://openjdk.java.net/jeps/359
|
|
|
|
https://openjdk.java.net/jeps/384
|
|
|
|
https://openjdk.java.net/jeps/395
|
|
|
|
|
|
|
|
Enhance the Java programming language with records. Records provide a
|
|
|
|
compact syntax for declaring classes which are transparent holders for
|
|
|
|
shallowly immutable data.
|
|
|
|
|
|
|
|
This was a preview feature (http://openjdk.java.net/jeps/12) in
|
|
|
|
OpenJDK 14 & 15 and became final in OpenJDK 16.
|
|
|
|
|
|
|
|
Sealed Classes
|
|
|
|
==============
|
|
|
|
https://openjdk.java.net/jeps/360
|
|
|
|
https://openjdk.java.net/jeps/397
|
|
|
|
https://openjdk.java.net/jeps/409
|
|
|
|
https://cr.openjdk.java.net/~briangoetz/amber/datum.html
|
|
|
|
|
|
|
|
Enhance the Java programming language with sealed classes and
|
|
|
|
interfaces. Sealed classes and interfaces restrict which other classes
|
|
|
|
or interfaces may extend or implement them.
|
|
|
|
|
|
|
|
This was a preview feature (http://openjdk.java.net/jeps/12) in
|
|
|
|
OpenJDK 15 & 16 and became final in OpenJDK 17.
|
|
|
|
|
|
|
|
Restore Always-Strict Floating-Point Semantics
|
|
|
|
==============================================
|
|
|
|
https://openjdk.java.net/jeps/306
|
|
|
|
|
|
|
|
Make floating-point operations consistently strict, rather than have
|
|
|
|
both strict floating-point semantics (`strictfp`) and subtly different
|
|
|
|
default floating-point semantics. This will restore the original
|
|
|
|
floating-point semantics to the language and VM, matching the
|
|
|
|
semantics before the introduction of strict and default floating-point
|
|
|
|
modes in Java SE 1.2.
|
|
|
|
|
|
|
|
Pattern Matching for switch
|
2021-01-22 13:10:45 +00:00
|
|
|
===========================
|
2021-09-27 01:42:03 +00:00
|
|
|
https://openjdk.java.net/jeps/406
|
2021-01-22 13:10:45 +00:00
|
|
|
|
2021-09-27 01:42:03 +00:00
|
|
|
Enhance the Java programming language with pattern matching for
|
|
|
|
`switch` expressions and statements, along with extensions to the
|
|
|
|
language of patterns. Extending pattern matching to `switch` allows an
|
|
|
|
expression to be tested against a number of patterns, each with a
|
|
|
|
specific action, so that complex data-oriented queries can be
|
|
|
|
expressed concisely and safely.
|
2021-01-22 13:10:45 +00:00
|
|
|
|
2021-09-27 01:42:03 +00:00
|
|
|
This is a preview feature (http://openjdk.java.net/jeps/12) in OpenJDK
|
|
|
|
17.
|
2021-01-22 13:10:45 +00:00
|
|
|
|
2021-09-27 01:42:03 +00:00
|
|
|
Library Features
|
|
|
|
================
|
2021-01-22 13:10:45 +00:00
|
|
|
|
2021-09-27 01:42:03 +00:00
|
|
|
JVM Constants API
|
|
|
|
=================
|
|
|
|
https://openjdk.java.net/jeps/334
|
|
|
|
|
|
|
|
Introduce an API to model nominal descriptions of key class-file and
|
|
|
|
run-time artifacts, in particular constants that are loadable from the
|
|
|
|
constant pool.
|
|
|
|
|
|
|
|
Reimplement the Legacy Socket API
|
|
|
|
=================================
|
|
|
|
https://openjdk.java.net/jeps/353
|
|
|
|
|
|
|
|
Replace the underlying implementation used by the `java.net.Socket`
|
|
|
|
and `java.net.ServerSocket` APIs with a simpler and more modern
|
|
|
|
implementation that is easy to maintain and debug. The new
|
|
|
|
implementation will be easy to adapt to work with user-mode threads,
|
|
|
|
a.k.a. fibers, currently being explored in Project Loom
|
|
|
|
(https://openjdk.java.net/projects/loom).
|
|
|
|
|
|
|
|
JFR Event Streaming
|
|
|
|
===================
|
|
|
|
https://openjdk.java.net/jeps/349
|
|
|
|
|
|
|
|
Expose JDK Flight Recorder data for continuous monitoring.
|
|
|
|
|
|
|
|
Non-Volatile Mapped Byte Buffers
|
|
|
|
================================
|
|
|
|
https://openjdk.java.net/jeps/352
|
|
|
|
|
|
|
|
Add new JDK-specific file mapping modes so that the `FileChannel` API
|
|
|
|
can be used to create `MappedByteBuffer` instances that refer to
|
|
|
|
non-volatile memory.
|
|
|
|
|
|
|
|
Helpful NullPointerExceptions
|
|
|
|
=============================
|
|
|
|
https://openjdk.java.net/jeps/358
|
|
|
|
|
|
|
|
Improve the usability of `NullPointerException`s generated by the JVM
|
|
|
|
by describing precisely which variable was `null`.
|
|
|
|
|
|
|
|
Foreign-Memory Access API
|
|
|
|
=========================
|
|
|
|
https://openjdk.java.net/jeps/370
|
|
|
|
https://openjdk.java.net/jeps/383
|
|
|
|
https://openjdk.java.net/jeps/393
|
|
|
|
|
|
|
|
Introduce an API to allow Java programs to safely and efficiently
|
|
|
|
access foreign memory outside of the Java heap.
|
|
|
|
|
|
|
|
This was a incubation feature (https://openjdk.java.net/jeps/11) in
|
|
|
|
OpenJDK 14, 15 & 16, now superseded by the Foreign Function & Memory
|
|
|
|
API in OpenJDK 17 (see below).
|
|
|
|
|
|
|
|
Edwards-Curve Digital Signature Algorithm (EdDSA)
|
|
|
|
=================================================
|
|
|
|
https://openjdk.java.net/jeps/339
|
|
|
|
|
|
|
|
Implement cryptographic signatures using the Edwards-Curve Digital
|
|
|
|
Signature Algorithm (EdDSA) as described by RFC 8032
|
|
|
|
(https://tools.ietf.org/html/rfc8032).
|
|
|
|
|
|
|
|
Hidden Classes
|
|
|
|
==============
|
|
|
|
https://openjdk.java.net/jeps/371
|
|
|
|
|
|
|
|
Introduce hidden classes, which are classes that cannot be used
|
|
|
|
directly by the bytecode of other classes. Hidden classes are intended
|
|
|
|
for use by frameworks that generate classes at run time and use them
|
|
|
|
indirectly, via reflection. A hidden class may be defined as a member
|
|
|
|
of an access control nest (https://openjdk.java.net/jeps/181), and may
|
|
|
|
be unloaded independently of other classes.
|
|
|
|
|
|
|
|
Reimplement the Legacy DatagramSocket API
|
|
|
|
=========================================
|
|
|
|
https://openjdk.java.net/jeps/373
|
|
|
|
|
|
|
|
Replace the underlying implementations of the
|
|
|
|
`java.net.DatagramSocket` and `java.net.MulticastSocket` APIs with
|
|
|
|
simpler and more modern implementations that are easy to maintain and
|
|
|
|
debug. The new implementations will be easy to adapt to work with
|
|
|
|
virtual threads, currently being explored in Project Loom
|
|
|
|
(https://openjdk.java.net/projects/loom). This is a follow-on to JEP
|
|
|
|
353 (see above), which already reimplemented the legacy Socket API.
|
|
|
|
|
|
|
|
Vector API
|
|
|
|
==========
|
|
|
|
https://openjdk.java.net/jeps/338
|
|
|
|
https://openjdk.java.net/jeps/414
|
|
|
|
|
|
|
|
Provide an initial iteration of an incubator module,
|
|
|
|
`jdk.incubator.vector`, to express vector computations that reliably
|
|
|
|
compile at runtime to optimal vector hardware instructions on
|
|
|
|
supported CPU architectures and thus achieve superior performance to
|
|
|
|
equivalent scalar computations.
|
|
|
|
|
|
|
|
This is an incubation feature (https://openjdk.java.net/jeps/11)
|
|
|
|
introduced in OpenJDK 16.
|
|
|
|
|
|
|
|
Unix-Domain Socket Channels
|
|
|
|
===========================
|
|
|
|
https://openjdk.java.net/jeps/380
|
|
|
|
|
|
|
|
Add Unix-domain (`AF_UNIX`) socket support to the socket channel and
|
|
|
|
server-socket channel APIs in the `java.nio.channels` package. Extend
|
|
|
|
the inherited channel mechanism to support Unix-domain socket channels
|
|
|
|
and server socket channels.
|
|
|
|
|
|
|
|
Foreign Linker API (Incubator)
|
|
|
|
==============================
|
|
|
|
https://openjdk.java.net/jeps/389
|
|
|
|
|
|
|
|
Introduce an API that offers statically-typed, pure-Java access to
|
|
|
|
native code. This API, together with the Foreign-Memory API (see
|
|
|
|
above), will considerably simplify the otherwise error-prone process
|
|
|
|
of binding to a native library.
|
|
|
|
|
|
|
|
This was an incubation feature (https://openjdk.java.net/jeps/11)
|
|
|
|
introduced in OpenJDK 16, now superseded by the Foreign Function &
|
|
|
|
Memory API in OpenJDK 17 (see below).
|
|
|
|
|
|
|
|
Strongly Encapsulate JDK Internals by Default
|
|
|
|
=============================================
|
|
|
|
https://openjdk.java.net/jeps/396
|
|
|
|
https://openjdk.java.net/jeps/403
|
|
|
|
|
|
|
|
Strongly encapsulate all internal elements of the JDK by default,
|
|
|
|
except for critical internal APIs such as `sun.misc.Unsafe`. It will
|
|
|
|
no longer be possible to relax the strong encapsulation of internal
|
|
|
|
elements via a single command-line option, as was possible in OpenJDK
|
|
|
|
9 through 16.
|
|
|
|
|
|
|
|
Enhanced Pseudo-Random Number Generators
|
|
|
|
========================================
|
|
|
|
https://openjdk.java.net/jeps/356
|
|
|
|
|
|
|
|
Provide new interface types and implementations for pseudo-random
|
|
|
|
number generators (PRNGs), including jumpable PRNGs and an additional
|
|
|
|
class of splittable PRNG algorithms (LXM).
|
|
|
|
|
|
|
|
Foreign Function & Memory API
|
|
|
|
=============================
|
|
|
|
https://openjdk.java.net/jeps/412
|
|
|
|
|
|
|
|
Introduce an API by which Java programs can interoperate with code and
|
|
|
|
data outside of the Java runtime. By efficiently invoking foreign
|
|
|
|
functions (i.e., code outside the JVM), and by safely accessing
|
|
|
|
foreign memory (i.e., memory not managed by the JVM), the API enables
|
|
|
|
Java programs to call native libraries and process native data without
|
|
|
|
the brittleness and danger of JNI.
|
|
|
|
|
|
|
|
This API is an incubation feature (https://openjdk.java.net/jeps/11)
|
|
|
|
introduced in OpenJDK 17, and is an evolution of the Foreign Memory
|
|
|
|
Access API (OpenJDK 14 through 16) and Foreign Linker API (OpenJDK
|
|
|
|
16) (see above).
|
|
|
|
|
|
|
|
Context-Specific Deserialization Filters
|
|
|
|
========================================
|
|
|
|
https://openjdk.java.net/jeps/415
|
|
|
|
|
|
|
|
Allow applications to configure context-specific and
|
|
|
|
dynamically-selected deserialization filters via a JVM-wide filter
|
|
|
|
factory that is invoked to select a filter for each individual
|
|
|
|
deserialization operation.
|
|
|
|
|
|
|
|
Tools
|
|
|
|
=====
|
|
|
|
|
|
|
|
Packaging Tool
|
|
|
|
==============
|
|
|
|
https://openjdk.java.net/jeps/343
|
|
|
|
https://openjdk.java.net/jeps/392
|
|
|
|
|
|
|
|
Provide the `jpackage` tool, for packaging self-contained Java
|
|
|
|
applications.
|
|
|
|
|
|
|
|
JVM Features
|
|
|
|
============
|
|
|
|
|
|
|
|
Shenandoah: A Low-Pause-Time Garbage Collector
|
|
|
|
==============================================
|
|
|
|
https://openjdk.java.net/jeps/189
|
|
|
|
https://openjdk.java.net/jeps/379
|
|
|
|
|
|
|
|
Add a new garbage collection (GC) algorithm named Shenandoah which
|
|
|
|
reduces GC pause times by doing evacuation work concurrently with the
|
|
|
|
running Java threads. Pause times with Shenandoah are independent of
|
|
|
|
heap size, meaning you will have the same consistent pause times
|
|
|
|
whether your heap is 200 MB or 200 GB.
|
|
|
|
|
|
|
|
Shenandoah has been provided in Red Hat builds of OpenJDK 8 since
|
|
|
|
8u131 in April 2017 and in all 11u builds.
|
|
|
|
|
|
|
|
Upstream, it was introduced in OpenJDK 12 as an experimental feature
|
|
|
|
and became a production feature in OpenJDK 15. It was backported to
|
|
|
|
OpenJDK 11 with the 11.0.9 release in October 2020.
|
|
|
|
|
|
|
|
Abortable Mixed Collections for G1
|
|
|
|
==================================
|
|
|
|
https://openjdk.java.net/jeps/344
|
|
|
|
|
|
|
|
Make G1 mixed collections abortable if they might exceed the pause
|
|
|
|
target.
|
|
|
|
|
|
|
|
Promptly Return Unused Committed Memory from G1
|
|
|
|
===============================================
|
|
|
|
https://openjdk.java.net/jeps/346
|
|
|
|
|
|
|
|
Enhance the G1 garbage collector to automatically return Java heap
|
|
|
|
memory to the operating system when idle.
|
|
|
|
|
|
|
|
Dynamic CDS Archives
|
|
|
|
====================
|
|
|
|
https://openjdk.java.net/jeps/310
|
|
|
|
https://openjdk.java.net/jeps/350
|
|
|
|
|
|
|
|
Extend application class-data sharing to allow the dynamic archiving
|
|
|
|
of classes at the end of Java application execution. The archived
|
|
|
|
classes will include all loaded application classes and library
|
|
|
|
classes that are not present in the default, base-layer CDS archive.
|
|
|
|
|
|
|
|
ZGC: Uncommit Unused Memory (Experimental)
|
|
|
|
==========================================
|
|
|
|
https://openjdk.java.net/jeps/351
|
|
|
|
|
|
|
|
Enhance ZGC to return unused heap memory to the operating system.
|
|
|
|
|
|
|
|
NUMA-Aware Memory Allocation for G1
|
|
|
|
===================================
|
|
|
|
https://openjdk.java.net/jeps/345
|
|
|
|
|
|
|
|
Improve G1 performance on large machines by implementing NUMA-aware
|
|
|
|
memory allocation.
|
|
|
|
|
|
|
|
ZGC on macOS (Experimental)
|
2021-01-22 13:10:45 +00:00
|
|
|
===========================
|
2021-09-27 01:42:03 +00:00
|
|
|
https://openjdk.java.net/jeps/364
|
|
|
|
|
|
|
|
Port the ZGC garbage collector to macOS.
|
|
|
|
|
|
|
|
ZGC on Windows (Experimental)
|
|
|
|
=============================
|
|
|
|
https://openjdk.java.net/jeps/365
|
|
|
|
|
|
|
|
Port the ZGC garbage collector to Windows.
|
|
|
|
|
|
|
|
ZGC: A Scalable Low-Latency Garbage Collector (Production)
|
|
|
|
==========================================================
|
|
|
|
https://openjdk.java.net/jeps/377
|
|
|
|
|
|
|
|
Change the Z Garbage Collector from an experimental feature into a
|
|
|
|
product feature.
|
|
|
|
|
|
|
|
ZGC: Concurrent Thread-Stack Processing
|
|
|
|
=======================================
|
|
|
|
https://openjdk.java.net/jeps/376
|
|
|
|
|
|
|
|
Move ZGC thread-stack processing from safepoints to a concurrent
|
|
|
|
phase.
|
2021-01-22 13:10:45 +00:00
|
|
|
|
2021-09-27 01:42:03 +00:00
|
|
|
Elastic Metaspace
|
|
|
|
=================
|
|
|
|
https://openjdk.java.net/jeps/387
|
2021-01-22 13:10:45 +00:00
|
|
|
|
2021-09-27 01:42:03 +00:00
|
|
|
Return unused HotSpot class-metadata (i.e., metaspace) memory to the
|
|
|
|
operating system more promptly, reduce metaspace footprint, and
|
|
|
|
simplify the metaspace code in order to reduce maintenance costs.
|
2021-01-22 13:10:45 +00:00
|
|
|
|
2021-09-27 01:42:03 +00:00
|
|
|
Ports
|
|
|
|
=====
|
2021-01-22 13:10:45 +00:00
|
|
|
|
2021-09-27 01:42:03 +00:00
|
|
|
Alpine Linux Port
|
|
|
|
=================
|
|
|
|
https://openjdk.java.net/jeps/386
|
|
|
|
|
|
|
|
Port the JDK to Alpine Linux, and to other Linux distributions that
|
|
|
|
use musl as their primary C library, on both the x64 and AArch64
|
|
|
|
architectures,
|
|
|
|
|
|
|
|
Windows/AArch64 Port
|
|
|
|
====================
|
|
|
|
https://openjdk.java.net/jeps/388
|
|
|
|
|
|
|
|
Port the JDK to Windows/AArch64.
|
|
|
|
|
|
|
|
New macOS Rendering Pipeline
|
|
|
|
============================
|
|
|
|
https://openjdk.java.net/jeps/382
|
|
|
|
|
|
|
|
Implement a Java 2D internal rendering pipeline for macOS using the
|
|
|
|
Apple Metal API as alternative to the existing pipeline, which uses
|
|
|
|
the deprecated Apple OpenGL API.
|
|
|
|
|
|
|
|
macOS/AArch64 Port
|
|
|
|
==================
|
|
|
|
https://openjdk.java.net/jeps/391
|
|
|
|
|
|
|
|
Port the JDK to macOS/AArch64.
|
|
|
|
|
|
|
|
DEPRECATIONS
|
|
|
|
============
|
|
|
|
|
|
|
|
Deprecate the ParallelScavenge + SerialOld GC Combination
|
2021-01-22 13:10:45 +00:00
|
|
|
=========================================================
|
2021-09-27 01:42:03 +00:00
|
|
|
https://openjdk.java.net/jeps/366
|
|
|
|
|
|
|
|
Deprecate the combination of the Parallel Scavenge and Serial Old
|
|
|
|
garbage collection algorithms.
|
|
|
|
|
|
|
|
Deprecate and Disable Biased Locking
|
|
|
|
====================================
|
|
|
|
https://openjdk.java.net/jeps/374
|
|
|
|
|
|
|
|
Disable biased locking by default, and deprecate all related
|
|
|
|
command-line options.
|
|
|
|
|
|
|
|
Warnings for Value-Based Classes
|
|
|
|
================================
|
|
|
|
https://openjdk.java.net/jeps/390
|
|
|
|
|
|
|
|
Designate the primitive wrapper classes as value-based and deprecate
|
|
|
|
their constructors for removal, prompting new deprecation
|
|
|
|
warnings. Provide warnings about improper attempts to synchronize on
|
|
|
|
instances of any value-based classes in the Java Platform.
|
|
|
|
|
|
|
|
Deprecate the Applet API for Removal
|
|
|
|
====================================
|
|
|
|
https://openjdk.java.net/jeps/398
|
|
|
|
|
|
|
|
Deprecate the Applet API for removal. It is essentially irrelevant
|
|
|
|
since all web-browser vendors have either removed support for Java
|
|
|
|
browser plug-ins or announced plans to do so.
|
|
|
|
|
|
|
|
Deprecate the Security Manager for Removal
|
|
|
|
==========================================
|
|
|
|
https://openjdk.java.net/jeps/411
|
|
|
|
|
|
|
|
Deprecate the Security Manager for removal in a future release. The
|
|
|
|
Security Manager dates from Java 1.0. It has not been the primary
|
|
|
|
means of securing client-side Java code for many years, and it has
|
|
|
|
rarely been used to secure server-side code. To move Java forward, we
|
|
|
|
intend to deprecate the Security Manager for removal in concert with
|
|
|
|
the legacy Applet API (see above). .
|
|
|
|
|
|
|
|
REMOVALS
|
|
|
|
========
|
|
|
|
|
|
|
|
Remove the Concurrent Mark Sweep (CMS) Garbage Collector
|
|
|
|
========================================================
|
|
|
|
https://openjdk.java.net/jeps/363
|
|
|
|
|
|
|
|
Remove the Concurrent Mark Sweep (CMS) garbage collector.
|
|
|
|
|
|
|
|
Remove the Pack200 Tools and API
|
|
|
|
================================
|
|
|
|
https://openjdk.java.net/jeps/336
|
|
|
|
https://openjdk.java.net/jeps/367
|
|
|
|
|
|
|
|
Remove the `pack200` and `unpack200` tools, and the `Pack200` API in
|
|
|
|
the `java.util.jar` package. These tools and API were deprecated for
|
|
|
|
removal in OpenJDK 11 with the express intent to remove them in a
|
|
|
|
future release.
|
|
|
|
|
|
|
|
Remove the Nashorn JavaScript Engine
|
|
|
|
====================================
|
|
|
|
https://openjdk.java.net/jeps/372
|
|
|
|
|
|
|
|
Remove the Nashorn JavaScript script engine and APIs, and the `jjs`
|
|
|
|
tool. The engine, the APIs, and the tool were deprecated for removal
|
|
|
|
in OpenJDK 11 with the express intent to remove them in a future
|
|
|
|
release.
|
|
|
|
|
|
|
|
Remove the Solaris and SPARC Ports
|
|
|
|
==================================
|
|
|
|
https://openjdk.java.net/jeps/362
|
|
|
|
https://openjdk.java.net/jeps/381
|
|
|
|
|
|
|
|
Remove the source code and build support for the Solaris/SPARC,
|
|
|
|
Solaris/x64, and Linux/SPARC ports. These ports were deprecated for
|
|
|
|
removal in OpenJDK 14 (JEP 362) and removed in OpenJDK 15 (JEP 381).
|
|
|
|
|
|
|
|
Remove RMI Activation
|
|
|
|
=====================
|
|
|
|
https://openjdk.java.net/jeps/385
|
|
|
|
https://openjdk.java.net/jeps/407
|
|
|
|
https://docs.oracle.com/en/java/javase/14/docs/specs/rmi/activation.html
|
2021-01-22 13:10:45 +00:00
|
|
|
|
2021-09-27 01:42:03 +00:00
|
|
|
Remove the Remote Method Invocation (RMI) Activation mechanism, while
|
|
|
|
preserving the rest of RMI. RMI Activation is an obsolete part of RMI
|
|
|
|
that has been optional since OpenJDK 8 and was deprecated in OpenJDK
|
|
|
|
15.
|
2021-01-22 13:10:45 +00:00
|
|
|
|
2021-09-27 01:42:03 +00:00
|
|
|
Remove the Experimental AOT and JIT Compiler
|
|
|
|
============================================
|
|
|
|
https://openjdk.java.net/jeps/410
|
2021-01-22 13:10:45 +00:00
|
|
|
|
2021-09-27 01:42:03 +00:00
|
|
|
Remove the experimental Java-based ahead-of-time (AOT) and
|
|
|
|
just-in-time (JIT) compiler. This compiler has seen little use since
|
|
|
|
its introduction and the effort required to maintain it is
|
|
|
|
significant. Retain the experimental Java-level JVM compiler
|
|
|
|
interface (JVMCI) so that developers can continue to use
|
|
|
|
externally-built versions of the compiler for JIT compilation.
|