- Update release notes with features of JDK 22 - Remove 21u FIPS patch and disable use until we are ready for the 25 version Related: RHEL-100678
204 lines
7.1 KiB
Plaintext
204 lines
7.1 KiB
Plaintext
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
|
|
|
|
New in release OpenJDK 22.0.0 (2024-03-19):
|
|
===========================================
|
|
Major changes are listed below. Some changes may have been backported
|
|
to earlier releases following their first appearance in OpenJDK 22
|
|
through to 25.
|
|
|
|
NEW FEATURES
|
|
============
|
|
|
|
Language Features
|
|
=================
|
|
|
|
Statements before super(...)
|
|
============================
|
|
https://openjdk.org/jeps/447
|
|
|
|
In constructors in the Java programming language, allow statements
|
|
that do not reference the instance being created to appear before an
|
|
explicit constructor invocation (i.e. super()).
|
|
|
|
This is a preview language feature (http://openjdk.java.net/jeps/12)
|
|
introduced in OpenJDK 22 (JEP 447).
|
|
|
|
Unnamed Patterns and Variables
|
|
==============================
|
|
https://openjdk.org/jeps/443
|
|
https://openjdk.org/jeps/456
|
|
|
|
Enhance the Java language with unnamed patterns, which match a record
|
|
component without stating the component's name or type, and unnamed
|
|
variables, which can be initialized but not used. Both are denoted by
|
|
an underscore character, _.
|
|
|
|
This feature is now final. It was a preview feature
|
|
(http://openjdk.java.net/jeps/12) in OpenJDK 21 (JEP 443).
|
|
|
|
String Templates
|
|
================
|
|
https://openjdk.org/jeps/430
|
|
https://openjdk.org/jeps/459
|
|
|
|
Enhance the Java programming language with string templates. String
|
|
templates complement Java's existing string literals and text blocks
|
|
by coupling literal text with embedded expressions and template
|
|
processors to produce specialized results.
|
|
|
|
This is a preview feature (http://openjdk.java.net/jeps/12) introduced
|
|
in OpenJDK 21 (JEP 430) and reaching its second preview in OpenJDK 22
|
|
(JEP 459).
|
|
|
|
Library Features
|
|
================
|
|
|
|
Foreign Function & Memory API
|
|
=============================
|
|
https://openjdk.org/jeps/412
|
|
https://openjdk.org/jeps/419
|
|
https://openjdk.org/jeps/424
|
|
https://openjdk.org/jeps/434
|
|
https://openjdk.org/jeps/442
|
|
https://openjdk.org/jeps/454
|
|
|
|
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 now finalised. It was first introduced in incubation
|
|
(https://openjdk.java.net/jeps/11) in OpenJDK 17 (JEP 412), and is an
|
|
evolution of the Foreign Memory Access API (OpenJDK 14 through 16) and
|
|
Foreign Linker API (OpenJDK 16) (see release notes for
|
|
java-17-openjdk). OpenJDK 18 saw a second round of incubation (JEP
|
|
419) before its inclusion as a preview feature
|
|
(http://openjdk.java.net/jeps/12) in OpenJDK 19 (JEP 424). A second
|
|
preview took place in OpenJDK 20 (JEP 434) and a third and final
|
|
preview in OpenJDK 21 (JEP 442).
|
|
|
|
Class-File API
|
|
==============
|
|
https://openjdk.org/jeps/457
|
|
|
|
Provide a standard API for parsing, generating, and transforming Java
|
|
class files.
|
|
|
|
This is a preview library feature (http://openjdk.java.net/jeps/12)
|
|
introduced in OpenJDK 22 (JEP 457).
|
|
|
|
Vector API
|
|
==========
|
|
https://openjdk.org/jeps/338
|
|
https://openjdk.org/jeps/414
|
|
https://openjdk.org/jeps/417
|
|
https://openjdk.org/jeps/426
|
|
https://openjdk.org/jeps/438
|
|
https://openjdk.org/jeps/448
|
|
https://openjdk.org/jeps/460
|
|
|
|
Introduce an API 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 (JEP 338). A second round of incubation took
|
|
place in OpenJDK 17 (JEP 414), OpenJDK 18 (JEP 417) saw a third,
|
|
OpenJDK 19 a fourth (JEP 426), OpenJDK 20 (JEP 438) a fifth, OpenJDK
|
|
21 a sixth (JEP 448) and it reaches its seventh in OpenJDK 22 (JEP
|
|
460).
|
|
|
|
Stream Gatherers
|
|
================
|
|
https://openjdk.org/jeps/461
|
|
|
|
Enhance the Stream API to support custom intermediate operations. This
|
|
will allow stream pipelines to transform data in ways that are not
|
|
easily achievable with the existing built-in intermediate operations.
|
|
|
|
This is a preview library feature (http://openjdk.java.net/jeps/12)
|
|
introduced in OpenJDK 22 (JEP 461).
|
|
|
|
Structured Concurrency
|
|
======================
|
|
https://openjdk.org/jeps/428
|
|
https://openjdk.org/jeps/437
|
|
https://openjdk.org/jeps/453
|
|
https://openjdk.org/jeps/462
|
|
|
|
Simplify multithreaded programming by introducing an API for
|
|
structured concurrency. Structured concurrency treats multiple tasks
|
|
running in different threads as a single unit of work, thereby
|
|
streamlining error handling and cancellation, improving reliability,
|
|
and enhancing observability.
|
|
|
|
This API was first introduced in incubation
|
|
(https://openjdk.java.net/jeps/11) in OpenJDK 19 (JEP 428) and had a
|
|
second round of incubation in OpenJDK 20 (JEP 437). It became a
|
|
preview feature (http://openjdk.java.net/jeps/12) in OpenJDK 21 (JEP
|
|
453) and reaches its second preview in OpenJDK 22 (JEP 462).
|
|
|
|
Implicitly Declared Classes and Instance Main Methods
|
|
=====================================================
|
|
https://openjdk.org/jeps/445
|
|
https://openjdk.org/jeps/463
|
|
|
|
Evolve the Java language so that students can write their first
|
|
programs without needing to understand language features designed for
|
|
large programs. Far from using a separate dialect of Java, students
|
|
can write streamlined declarations for single-class programs and then
|
|
seamlessly expand their programs to use more advanced features as
|
|
their skills grow.
|
|
|
|
This library feature was introduced as a preview
|
|
(http://openjdk.java.net/jeps/12) in OpenJDK 21 (JEP 445) under the
|
|
name "Unnamed Classes and Instance Main Methods". It reaches a second
|
|
preview in OpenJDK 22 (JEP 463) under a new name, due to the move away
|
|
from unnamed classes to an implicitly declared name chosen by the host
|
|
system.
|
|
|
|
Scoped Values
|
|
=============
|
|
https://openjdk.org/jeps/429
|
|
https://openjdk.org/jeps/446
|
|
https://openjdk.org/jeps/464
|
|
|
|
Introduce scoped values, which enable the sharing of immutable data
|
|
within and across threads. They are preferred to thread-local
|
|
variables, especially when using large numbers of virtual threads.
|
|
|
|
This API was first introduced in incubation
|
|
(https://openjdk.java.net/jeps/11) in OpenJDK 20 (JEP 429). It became a
|
|
preview feature (http://openjdk.java.net/jeps/12) in OpenJDK 21 (JEP
|
|
446) and reaches its second preview in OpenJDK 22 (JEP 464).
|
|
|
|
Virtual Machine Enhancements
|
|
============================
|
|
|
|
Region Pinning for G1
|
|
=====================
|
|
https://openjdk.org/jeps/423
|
|
|
|
Reduce latency by implementing region pinning in G1, so that garbage
|
|
collection need not be disabled during Java Native Interface (JNI)
|
|
critical regions.
|
|
|
|
Tools
|
|
=====
|
|
|
|
Launch Multi-File Source-Code Programs
|
|
======================================
|
|
https://openjdk.org/jeps/458
|
|
|
|
Enhance the java application launcher to be able to run a program
|
|
supplied as multiple files of Java source code. This will make the
|
|
transition from small programs to larger ones more gradual, enabling
|
|
developers to choose whether and when to go to the trouble of
|
|
configuring a build tool.
|