Java 22’s Upcoming Features: Computed Constants and Class-Filed API Join Structured Concurrency and Enhanced String Templates
Java Development Kit (JDK) 22 is scheduled for release on March 19, 2024, following the arrival of JDK 21 on September 19, 2023. This upcoming release is anticipated to introduce several notable features, expanding on those previewed in the previous version and integrating new capabilities that could enhance Java’s functionality and performance.
One of the major anticipated features for JDK 22 is the inclusion of a class-file API preview. This standard API aims to simplify the processes of parsing, generating, and transforming Java class files, providing developers with a more streamlined approach to managing class file interactions.
Another significant feature under consideration is computed constants. This concept introduces immutable value holders that are initialized at most once, which could potentially reduce overhead and improve performance by ensuring that constants are computed at compile time and reused throughout the program.
Additionally, JDK 22 might include value object storage enhancements. This feature is designed to allow for more aggressive inlining of value objects within fields and arrays. It provides options for non-atomic and null-restricted storage, which could lead to performance improvements by minimizing unnecessary memory allocations and accesses.
Integrity and strong encapsulation are also on the list of potential updates. These changes aim to enhance API security by restricting access to APIs that could break strong encapsulation without explicit user consent. This feature seeks to balance security with flexibility, ensuring that critical encapsulation boundaries are maintained while still allowing necessary exceptions.
Another potential addition is the ability to place statements before super()
in constructors. This would allow developers to include initialization logic that does not access the instance being created before invoking this()
or super()
. This change is intended to make initialization code placement more natural and logical.
Lastly, JDK 22 might include preparations for restricting JNI (Java Native Interface) usage. This feature would introduce warnings when native code is invoked through JNI, setting the stage for future releases that might impose stricter controls on JNI usage to enhance platform integrity. While JNI will not be removed, these changes aim to promote safer and more secure interaction with native code.
Early-access builds of JDK 22 are available on the official JDK website, offering developers the opportunity to test and provide feedback on these upcoming features. As the release date approaches, more details and official confirmations will be provided.