- 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.
 |