|
|
c0ba06 |
Key:
|
|
|
c0ba06 |
|
|
|
c0ba06 |
JDK-X - https://bugs.openjdk.java.net/browse/JDK-X
|
|
|
c0ba06 |
CVE-XXXX-YYYY: https://cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY
|
|
|
c0ba06 |
|
|
|
c0ba06 |
New in release OpenJDK 17.0.0 (2021-09-14):
|
|
|
c0ba06 |
===========================================
|
|
|
c0ba06 |
The full list of changes in the interim releases from 11u to 17u can be found at:
|
|
|
c0ba06 |
* https://builds.shipilev.net/backports-monitor/release-notes-12.txt
|
|
|
c0ba06 |
* https://builds.shipilev.net/backports-monitor/release-notes-13.txt
|
|
|
c0ba06 |
* https://builds.shipilev.net/backports-monitor/release-notes-14.txt
|
|
|
c0ba06 |
* https://builds.shipilev.net/backports-monitor/release-notes-15.txt
|
|
|
c0ba06 |
* https://builds.shipilev.net/backports-monitor/release-notes-16.txt
|
|
|
c0ba06 |
* https://builds.shipilev.net/backports-monitor/release-notes-17.txt
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Major changes are listed below. Some changes may have been backported
|
|
|
c0ba06 |
to earlier releases following their first appearance in OpenJDK 12
|
|
|
c0ba06 |
through to 17.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
NEW FEATURES
|
|
|
c0ba06 |
============
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Language Features
|
|
|
c0ba06 |
=================
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Switch Expressions
|
|
|
c0ba06 |
==================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/325
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/354
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/361
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Extend the `switch` statement so that it can be used as either a
|
|
|
c0ba06 |
statement or an expression, and that both forms can use either a
|
|
|
c0ba06 |
"traditional" or "simplified" scoping and control flow behavior. Both
|
|
|
c0ba06 |
forms can use either traditional `case ... :` labels (with fall
|
|
|
c0ba06 |
through) or new `case ... ->` labels (with no fall through), with a
|
|
|
c0ba06 |
further new statement for yielding a value from a `switch`
|
|
|
c0ba06 |
expression. These changes will simplify everyday coding, and also
|
|
|
c0ba06 |
prepare the way for the use of pattern matching in `switch`.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
This was a preview feature (http://openjdk.java.net/jeps/12) in
|
|
|
c0ba06 |
OpenJDK 12 & 13 and became final in OpenJDK 14.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Text Blocks
|
|
|
c0ba06 |
===========
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/355
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/368
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/378
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Add text blocks to the Java language. A text block is a multi-line
|
|
|
c0ba06 |
string literal that avoids the need for most escape sequences,
|
|
|
c0ba06 |
automatically formats the string in a predictable way, and gives the
|
|
|
c0ba06 |
developer control over format when desired.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
This was a preview feature (http://openjdk.java.net/jeps/12) in
|
|
|
c0ba06 |
OpenJDK 13 & 14 and became final in OpenJDK 15.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Pattern Matching for instanceof
|
|
|
c0ba06 |
===============================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/305
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/375
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/394
|
|
|
c0ba06 |
http://cr.openjdk.java.net/~briangoetz/amber/pattern-match.html
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Enhance the Java programming language with pattern matching for the
|
|
|
c0ba06 |
`instanceof` operator. Pattern matching allows common logic in a
|
|
|
c0ba06 |
program, namely the conditional extraction of components from objects,
|
|
|
c0ba06 |
to be expressed more concisely and safely.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
This was a preview feature (http://openjdk.java.net/jeps/12) in
|
|
|
c0ba06 |
OpenJDK 14 & 15 and became final in OpenJDK 16.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Records
|
|
|
c0ba06 |
=======
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/359
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/384
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/395
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Enhance the Java programming language with records. Records provide a
|
|
|
c0ba06 |
compact syntax for declaring classes which are transparent holders for
|
|
|
c0ba06 |
shallowly immutable data.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
This was a preview feature (http://openjdk.java.net/jeps/12) in
|
|
|
c0ba06 |
OpenJDK 14 & 15 and became final in OpenJDK 16.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Sealed Classes
|
|
|
c0ba06 |
==============
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/360
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/397
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/409
|
|
|
c0ba06 |
https://cr.openjdk.java.net/~briangoetz/amber/datum.html
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Enhance the Java programming language with sealed classes and
|
|
|
c0ba06 |
interfaces. Sealed classes and interfaces restrict which other classes
|
|
|
c0ba06 |
or interfaces may extend or implement them.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
This was a preview feature (http://openjdk.java.net/jeps/12) in
|
|
|
c0ba06 |
OpenJDK 15 & 16 and became final in OpenJDK 17.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Restore Always-Strict Floating-Point Semantics
|
|
|
c0ba06 |
==============================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/306
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Make floating-point operations consistently strict, rather than have
|
|
|
c0ba06 |
both strict floating-point semantics (`strictfp`) and subtly different
|
|
|
c0ba06 |
default floating-point semantics. This will restore the original
|
|
|
c0ba06 |
floating-point semantics to the language and VM, matching the
|
|
|
c0ba06 |
semantics before the introduction of strict and default floating-point
|
|
|
c0ba06 |
modes in Java SE 1.2.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Pattern Matching for switch
|
|
|
c0ba06 |
===========================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/406
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Enhance the Java programming language with pattern matching for
|
|
|
c0ba06 |
`switch` expressions and statements, along with extensions to the
|
|
|
c0ba06 |
language of patterns. Extending pattern matching to `switch` allows an
|
|
|
c0ba06 |
expression to be tested against a number of patterns, each with a
|
|
|
c0ba06 |
specific action, so that complex data-oriented queries can be
|
|
|
c0ba06 |
expressed concisely and safely.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
This is a preview feature (http://openjdk.java.net/jeps/12) in OpenJDK
|
|
|
c0ba06 |
17.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Library Features
|
|
|
c0ba06 |
================
|
|
|
c0ba06 |
|
|
|
c0ba06 |
JVM Constants API
|
|
|
c0ba06 |
=================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/334
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Introduce an API to model nominal descriptions of key class-file and
|
|
|
c0ba06 |
run-time artifacts, in particular constants that are loadable from the
|
|
|
c0ba06 |
constant pool.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Reimplement the Legacy Socket API
|
|
|
c0ba06 |
=================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/353
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Replace the underlying implementation used by the `java.net.Socket`
|
|
|
c0ba06 |
and `java.net.ServerSocket` APIs with a simpler and more modern
|
|
|
c0ba06 |
implementation that is easy to maintain and debug. The new
|
|
|
c0ba06 |
implementation will be easy to adapt to work with user-mode threads,
|
|
|
c0ba06 |
a.k.a. fibers, currently being explored in Project Loom
|
|
|
c0ba06 |
(https://openjdk.java.net/projects/loom).
|
|
|
c0ba06 |
|
|
|
c0ba06 |
JFR Event Streaming
|
|
|
c0ba06 |
===================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/349
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Expose JDK Flight Recorder data for continuous monitoring.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Non-Volatile Mapped Byte Buffers
|
|
|
c0ba06 |
================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/352
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Add new JDK-specific file mapping modes so that the `FileChannel` API
|
|
|
c0ba06 |
can be used to create `MappedByteBuffer` instances that refer to
|
|
|
c0ba06 |
non-volatile memory.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Helpful NullPointerExceptions
|
|
|
c0ba06 |
=============================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/358
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Improve the usability of `NullPointerException`s generated by the JVM
|
|
|
c0ba06 |
by describing precisely which variable was `null`.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Foreign-Memory Access API
|
|
|
c0ba06 |
=========================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/370
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/383
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/393
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Introduce an API to allow Java programs to safely and efficiently
|
|
|
c0ba06 |
access foreign memory outside of the Java heap.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
This was a incubation feature (https://openjdk.java.net/jeps/11) in
|
|
|
c0ba06 |
OpenJDK 14, 15 & 16, now superseded by the Foreign Function & Memory
|
|
|
c0ba06 |
API in OpenJDK 17 (see below).
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Edwards-Curve Digital Signature Algorithm (EdDSA)
|
|
|
c0ba06 |
=================================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/339
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Implement cryptographic signatures using the Edwards-Curve Digital
|
|
|
c0ba06 |
Signature Algorithm (EdDSA) as described by RFC 8032
|
|
|
c0ba06 |
(https://tools.ietf.org/html/rfc8032).
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Hidden Classes
|
|
|
c0ba06 |
==============
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/371
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Introduce hidden classes, which are classes that cannot be used
|
|
|
c0ba06 |
directly by the bytecode of other classes. Hidden classes are intended
|
|
|
c0ba06 |
for use by frameworks that generate classes at run time and use them
|
|
|
c0ba06 |
indirectly, via reflection. A hidden class may be defined as a member
|
|
|
c0ba06 |
of an access control nest (https://openjdk.java.net/jeps/181), and may
|
|
|
c0ba06 |
be unloaded independently of other classes.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Reimplement the Legacy DatagramSocket API
|
|
|
c0ba06 |
=========================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/373
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Replace the underlying implementations of the
|
|
|
c0ba06 |
`java.net.DatagramSocket` and `java.net.MulticastSocket` APIs with
|
|
|
c0ba06 |
simpler and more modern implementations that are easy to maintain and
|
|
|
c0ba06 |
debug. The new implementations will be easy to adapt to work with
|
|
|
c0ba06 |
virtual threads, currently being explored in Project Loom
|
|
|
c0ba06 |
(https://openjdk.java.net/projects/loom). This is a follow-on to JEP
|
|
|
c0ba06 |
353 (see above), which already reimplemented the legacy Socket API.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Vector API
|
|
|
c0ba06 |
==========
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/338
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/414
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Provide an initial iteration of an incubator module,
|
|
|
c0ba06 |
`jdk.incubator.vector`, to express vector computations that reliably
|
|
|
c0ba06 |
compile at runtime to optimal vector hardware instructions on
|
|
|
c0ba06 |
supported CPU architectures and thus achieve superior performance to
|
|
|
c0ba06 |
equivalent scalar computations.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
This is an incubation feature (https://openjdk.java.net/jeps/11)
|
|
|
c0ba06 |
introduced in OpenJDK 16.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Unix-Domain Socket Channels
|
|
|
c0ba06 |
===========================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/380
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Add Unix-domain (`AF_UNIX`) socket support to the socket channel and
|
|
|
c0ba06 |
server-socket channel APIs in the `java.nio.channels` package. Extend
|
|
|
c0ba06 |
the inherited channel mechanism to support Unix-domain socket channels
|
|
|
c0ba06 |
and server socket channels.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Foreign Linker API (Incubator)
|
|
|
c0ba06 |
==============================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/389
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Introduce an API that offers statically-typed, pure-Java access to
|
|
|
c0ba06 |
native code. This API, together with the Foreign-Memory API (see
|
|
|
c0ba06 |
above), will considerably simplify the otherwise error-prone process
|
|
|
c0ba06 |
of binding to a native library.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
This was an incubation feature (https://openjdk.java.net/jeps/11)
|
|
|
c0ba06 |
introduced in OpenJDK 16, now superseded by the Foreign Function &
|
|
|
c0ba06 |
Memory API in OpenJDK 17 (see below).
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Strongly Encapsulate JDK Internals by Default
|
|
|
c0ba06 |
=============================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/396
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/403
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Strongly encapsulate all internal elements of the JDK by default,
|
|
|
c0ba06 |
except for critical internal APIs such as `sun.misc.Unsafe`. It will
|
|
|
c0ba06 |
no longer be possible to relax the strong encapsulation of internal
|
|
|
c0ba06 |
elements via a single command-line option, as was possible in OpenJDK
|
|
|
c0ba06 |
9 through 16.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Enhanced Pseudo-Random Number Generators
|
|
|
c0ba06 |
========================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/356
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Provide new interface types and implementations for pseudo-random
|
|
|
c0ba06 |
number generators (PRNGs), including jumpable PRNGs and an additional
|
|
|
c0ba06 |
class of splittable PRNG algorithms (LXM).
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Foreign Function & Memory API
|
|
|
c0ba06 |
=============================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/412
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Introduce an API by which Java programs can interoperate with code and
|
|
|
c0ba06 |
data outside of the Java runtime. By efficiently invoking foreign
|
|
|
c0ba06 |
functions (i.e., code outside the JVM), and by safely accessing
|
|
|
c0ba06 |
foreign memory (i.e., memory not managed by the JVM), the API enables
|
|
|
c0ba06 |
Java programs to call native libraries and process native data without
|
|
|
c0ba06 |
the brittleness and danger of JNI.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
This API is an incubation feature (https://openjdk.java.net/jeps/11)
|
|
|
c0ba06 |
introduced in OpenJDK 17, and is an evolution of the Foreign Memory
|
|
|
c0ba06 |
Access API (OpenJDK 14 through 16) and Foreign Linker API (OpenJDK
|
|
|
c0ba06 |
16) (see above).
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Context-Specific Deserialization Filters
|
|
|
c0ba06 |
========================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/415
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Allow applications to configure context-specific and
|
|
|
c0ba06 |
dynamically-selected deserialization filters via a JVM-wide filter
|
|
|
c0ba06 |
factory that is invoked to select a filter for each individual
|
|
|
c0ba06 |
deserialization operation.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Tools
|
|
|
c0ba06 |
=====
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Packaging Tool
|
|
|
c0ba06 |
==============
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/343
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/392
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Provide the `jpackage` tool, for packaging self-contained Java
|
|
|
c0ba06 |
applications.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
JVM Features
|
|
|
c0ba06 |
============
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Shenandoah: A Low-Pause-Time Garbage Collector
|
|
|
c0ba06 |
==============================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/189
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/379
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Add a new garbage collection (GC) algorithm named Shenandoah which
|
|
|
c0ba06 |
reduces GC pause times by doing evacuation work concurrently with the
|
|
|
c0ba06 |
running Java threads. Pause times with Shenandoah are independent of
|
|
|
c0ba06 |
heap size, meaning you will have the same consistent pause times
|
|
|
c0ba06 |
whether your heap is 200 MB or 200 GB.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Shenandoah has been provided in Red Hat builds of OpenJDK 8 since
|
|
|
c0ba06 |
8u131 in April 2017 and in all 11u builds.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Upstream, it was introduced in OpenJDK 12 as an experimental feature
|
|
|
c0ba06 |
and became a production feature in OpenJDK 15. It was backported to
|
|
|
c0ba06 |
OpenJDK 11 with the 11.0.9 release in October 2020.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Abortable Mixed Collections for G1
|
|
|
c0ba06 |
==================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/344
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Make G1 mixed collections abortable if they might exceed the pause
|
|
|
c0ba06 |
target.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Promptly Return Unused Committed Memory from G1
|
|
|
c0ba06 |
===============================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/346
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Enhance the G1 garbage collector to automatically return Java heap
|
|
|
c0ba06 |
memory to the operating system when idle.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Dynamic CDS Archives
|
|
|
c0ba06 |
====================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/310
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/350
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Extend application class-data sharing to allow the dynamic archiving
|
|
|
c0ba06 |
of classes at the end of Java application execution. The archived
|
|
|
c0ba06 |
classes will include all loaded application classes and library
|
|
|
c0ba06 |
classes that are not present in the default, base-layer CDS archive.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
ZGC: Uncommit Unused Memory (Experimental)
|
|
|
c0ba06 |
==========================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/351
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Enhance ZGC to return unused heap memory to the operating system.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
NUMA-Aware Memory Allocation for G1
|
|
|
c0ba06 |
===================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/345
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Improve G1 performance on large machines by implementing NUMA-aware
|
|
|
c0ba06 |
memory allocation.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
ZGC on macOS (Experimental)
|
|
|
c0ba06 |
===========================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/364
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Port the ZGC garbage collector to macOS.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
ZGC on Windows (Experimental)
|
|
|
c0ba06 |
=============================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/365
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Port the ZGC garbage collector to Windows.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
ZGC: A Scalable Low-Latency Garbage Collector (Production)
|
|
|
c0ba06 |
==========================================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/377
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Change the Z Garbage Collector from an experimental feature into a
|
|
|
c0ba06 |
product feature.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
ZGC: Concurrent Thread-Stack Processing
|
|
|
c0ba06 |
=======================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/376
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Move ZGC thread-stack processing from safepoints to a concurrent
|
|
|
c0ba06 |
phase.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Elastic Metaspace
|
|
|
c0ba06 |
=================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/387
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Return unused HotSpot class-metadata (i.e., metaspace) memory to the
|
|
|
c0ba06 |
operating system more promptly, reduce metaspace footprint, and
|
|
|
c0ba06 |
simplify the metaspace code in order to reduce maintenance costs.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Ports
|
|
|
c0ba06 |
=====
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Alpine Linux Port
|
|
|
c0ba06 |
=================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/386
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Port the JDK to Alpine Linux, and to other Linux distributions that
|
|
|
c0ba06 |
use musl as their primary C library, on both the x64 and AArch64
|
|
|
c0ba06 |
architectures,
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Windows/AArch64 Port
|
|
|
c0ba06 |
====================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/388
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Port the JDK to Windows/AArch64.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
New macOS Rendering Pipeline
|
|
|
c0ba06 |
============================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/382
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Implement a Java 2D internal rendering pipeline for macOS using the
|
|
|
c0ba06 |
Apple Metal API as alternative to the existing pipeline, which uses
|
|
|
c0ba06 |
the deprecated Apple OpenGL API.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
macOS/AArch64 Port
|
|
|
c0ba06 |
==================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/391
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Port the JDK to macOS/AArch64.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
DEPRECATIONS
|
|
|
c0ba06 |
============
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Deprecate the ParallelScavenge + SerialOld GC Combination
|
|
|
c0ba06 |
=========================================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/366
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Deprecate the combination of the Parallel Scavenge and Serial Old
|
|
|
c0ba06 |
garbage collection algorithms.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Deprecate and Disable Biased Locking
|
|
|
c0ba06 |
====================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/374
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Disable biased locking by default, and deprecate all related
|
|
|
c0ba06 |
command-line options.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Warnings for Value-Based Classes
|
|
|
c0ba06 |
================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/390
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Designate the primitive wrapper classes as value-based and deprecate
|
|
|
c0ba06 |
their constructors for removal, prompting new deprecation
|
|
|
c0ba06 |
warnings. Provide warnings about improper attempts to synchronize on
|
|
|
c0ba06 |
instances of any value-based classes in the Java Platform.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Deprecate the Applet API for Removal
|
|
|
c0ba06 |
====================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/398
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Deprecate the Applet API for removal. It is essentially irrelevant
|
|
|
c0ba06 |
since all web-browser vendors have either removed support for Java
|
|
|
c0ba06 |
browser plug-ins or announced plans to do so.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Deprecate the Security Manager for Removal
|
|
|
c0ba06 |
==========================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/411
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Deprecate the Security Manager for removal in a future release. The
|
|
|
c0ba06 |
Security Manager dates from Java 1.0. It has not been the primary
|
|
|
c0ba06 |
means of securing client-side Java code for many years, and it has
|
|
|
c0ba06 |
rarely been used to secure server-side code. To move Java forward, we
|
|
|
c0ba06 |
intend to deprecate the Security Manager for removal in concert with
|
|
|
c0ba06 |
the legacy Applet API (see above). .
|
|
|
c0ba06 |
|
|
|
c0ba06 |
REMOVALS
|
|
|
c0ba06 |
========
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Remove the Concurrent Mark Sweep (CMS) Garbage Collector
|
|
|
c0ba06 |
========================================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/363
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Remove the Concurrent Mark Sweep (CMS) garbage collector.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Remove the Pack200 Tools and API
|
|
|
c0ba06 |
================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/336
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/367
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Remove the `pack200` and `unpack200` tools, and the `Pack200` API in
|
|
|
c0ba06 |
the `java.util.jar` package. These tools and API were deprecated for
|
|
|
c0ba06 |
removal in OpenJDK 11 with the express intent to remove them in a
|
|
|
c0ba06 |
future release.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Remove the Nashorn JavaScript Engine
|
|
|
c0ba06 |
====================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/372
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Remove the Nashorn JavaScript script engine and APIs, and the `jjs`
|
|
|
c0ba06 |
tool. The engine, the APIs, and the tool were deprecated for removal
|
|
|
c0ba06 |
in OpenJDK 11 with the express intent to remove them in a future
|
|
|
c0ba06 |
release.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Remove the Solaris and SPARC Ports
|
|
|
c0ba06 |
==================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/362
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/381
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Remove the source code and build support for the Solaris/SPARC,
|
|
|
c0ba06 |
Solaris/x64, and Linux/SPARC ports. These ports were deprecated for
|
|
|
c0ba06 |
removal in OpenJDK 14 (JEP 362) and removed in OpenJDK 15 (JEP 381).
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Remove RMI Activation
|
|
|
c0ba06 |
=====================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/385
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/407
|
|
|
c0ba06 |
https://docs.oracle.com/en/java/javase/14/docs/specs/rmi/activation.html
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Remove the Remote Method Invocation (RMI) Activation mechanism, while
|
|
|
c0ba06 |
preserving the rest of RMI. RMI Activation is an obsolete part of RMI
|
|
|
c0ba06 |
that has been optional since OpenJDK 8 and was deprecated in OpenJDK
|
|
|
c0ba06 |
15.
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Remove the Experimental AOT and JIT Compiler
|
|
|
c0ba06 |
============================================
|
|
|
c0ba06 |
https://openjdk.java.net/jeps/410
|
|
|
c0ba06 |
|
|
|
c0ba06 |
Remove the experimental Java-based ahead-of-time (AOT) and
|
|
|
c0ba06 |
just-in-time (JIT) compiler. This compiler has seen little use since
|
|
|
c0ba06 |
its introduction and the effort required to maintain it is
|
|
|
c0ba06 |
significant. Retain the experimental Java-level JVM compiler
|
|
|
c0ba06 |
interface (JVMCI) so that developers can continue to use
|
|
|
c0ba06 |
externally-built versions of the compiler for JIT compilation.
|