Java 18 is going to be released in March 2022 with many extended features compared to Java 17. It includes various newly added features as well as up-gradation of previously added features. JDK 17 was much liked after its’ release. JDK 18 shall also receive the same response as the newly added features have some important ones, that were very much needed. UTF-8 by default, Simple web Server, Deprecate Finalization for Removal are the major ones. The features which were included in JDK 17 and improved in JDK 18 are Vector API, Foreign Function and Memory API, Pattern matching for the switch. So let’s discuss what is the up-gradation of Java 18 as compared to Java 17.
Improvement in Vector API
Vector API was included to provide an API to express vector computations that compile at runtime, which will achieve performance superior to scalar computations. It was included in JDK 16 as an incubating and then upgraded as a second incubating in JDK 17.
In Java 18, Vector API is upgraded by the addition of the ARM Scalar Vector Extension (SVE) platform. It will allow the user to do many works in parallel in one cycle. Java 18 will also improve the performance of vector operations on masking supported hardware. It will provide the advantages such as Clear and concise API, reliable real-time compilation and performance on x64 and AArch64 architectures, graceful degradation (i.e., issuing warnings if vector computation cannot be effectively compiled to vector instructions).
Upgradation in Foreign Function and Memory API
This API was added as an incubator in JDK 17 by combining the two APIs: Foreign-Memory access API and Foreign linker API. It was added to allow Java programs to call up native libraries and process native data without risk of JNI, by efficiently invoking foreign functions i.e., Code outside of the JVM. And securely accessing foreign memory i.e., memory not handled by JVM.
In Java 18, some new features are added to previous Foreign Function and memory API like support for more carriers, a more general dereference API, a simpler API to obtain downcall method handles. It is a simple API to manage temporal dependencies between resource scope. It will be an API that will copy Java arrays to and from memory segments.
Second Preview of Pattern Matching for switch in Java 18
Pattern matching for the switch was added as a preview feature in JDK 17. It was designed with the AIM to express complex data-oriented queries in a simplistic and secure manner. It expands Java’s pattern language to allow switch expressions and statements to be verified against a variety of patterns, each with a different action.
In Java 18, there are certain minor improvements like enforcement of constant case labels to appear before a guarded pattern of the same type by dominance checking. It will increase the readability. Exhaustiveness checking of switch blocks will now be more precise with sealed hierarchies.
Some other Features of Java 17
Java 17 had some exciting features, which were welcomed by the users. Here are some new features JDK 17 had added:
- Sealed Classes: It was proposed and delivered as second preview feature in JDK 16. It restricts which other classes can extend it. It enables the class or interface author to control which code to implement.
- Remove RMI Activation: RMI activation mechanism was removed in JDK 17. But the rest of RMI was preserved.
- Security Manager deprecate: In order to move forward, Security Manger was deprecated in JDK 17 and shall be removed in a future version, along with legacy Applet API.
- Context-Specific Deserialization: It allow applications to configure context-specific and dynamically selected deserialization filters using JVM-wide filter factory.
- New macOS Rendering Pipeline: Java 2D render pipeline will be enabled on MacOS through metal framework.
Features in Java 18
Some other features that were included in Java 18 are as depicted below:
- UTF-8 by default: UTF-8 will be the default charset for standard Java APIs. With this change, the APIs which depend on UTF-8 will behave consistently on the operating systems, locales, and configurations.
- Code Snippets in API documentation: This update includes the @snippet tag for Javadoc’s Standard Doclet. JDK 18 will enable modern stylings, such as syntax highlighting and automatic linkage of names to declarations.
- Simple Web server: This feature will provide a command-line tool to start a minimal web server that will serve static files only.
- Internet Address Resolution SPI: It will define a service-provider interface (SPI)for hostname and address resolution
- Deprecate Finalization: Finalization which remains turned on by default, but now can be turned off.
Java 18 has come with many new features and also upgrades in existing features. It is currently in the Ramp-down phase two. Therefore, it will be launched in March 2022. Java 17 was shown, great love. Similarly, JDK 18 is also expected for the same.