java-25-openjdk/NEWS
Andrew Hughes 82db2fdb6f Update to jdk-22.0.2+9 (GA)
- 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
2025-09-23 14:18:28 +01:00

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.