New in Java 15: Text Blocks, Hidden Classes, Z Garbage Collector, and Previews of Pattern Matching and Records
Java Development Kit 15, officially released on September 15, 2020, introduces several significant features and enhancements for the Java programming language. This release continues the evolution of Java with updates that aim to improve productivity and functionality for developers. Key features include text blocks, hidden classes, a foreign-memory access API, the Z Garbage Collector, and previews of sealed classes, pattern matching, and records.
One of the notable additions in JDK 15 is the introduction of text blocks. This feature simplifies the process of working with multi-line strings by allowing developers to include such strings in their code without the need for escape sequences. Text blocks make the code more readable and maintainable, especially when dealing with complex string data like JSON or SQL queries.
Another important update is the introduction of hidden classes. This feature allows for the creation of classes that are not directly accessible by the application code. Hidden classes are useful for use cases such as dynamic code generation and are primarily intended for use by frameworks and libraries that need to generate classes at runtime.
The foreign-memory access API, which is in its second incubator phase, allows Java programs to interact with memory outside of the Java heap. This API provides a safer and more efficient way to work with foreign memory, such as native and persistent memory, compared to existing methods. It aims to reduce the cost and unpredictability associated with garbage collection and improve the sharing of memory across processes.
JDK 15 also includes a preview of sealed classes, which restrict which other classes or interfaces can extend or implement them. Sealed classes provide a more declarative way to control the use of a superclass and support future developments in pattern matching. This feature helps to enforce stricter control over class hierarchies and improve code safety.
The release also marks the removal of support for Solaris/SPARC, Solaris/x64, and Linux/SPARC ports, which were deprecated in JDK 14. This removal reflects the shift towards more modern platforms and helps accelerate the development of new features by focusing resources on more widely used operating systems and architectures.
Finally, records, which were first introduced as an early preview in JDK 14, are included in a second preview version in JDK 15. Records are a new class type designed to act as transparent carriers for immutable data. They simplify the modeling of immutable data by automatically implementing data-driven methods and maintaining Java’s principles of nominal typing and migration compatibility. Records aim to make it easier for developers to work with data-centric classes without having to write boilerplate code