JDK 16 is Java SE 16, JSR 391, generally available on 16 March 2021. Records and pattern matching for instanceof become permanent. Sealed classes are still a preview. jpackage leaves the incubator. Stream.toList() arrives in this release.
How to read the status
Final. The change shipped in this release as a permanent part of that release.
Preview. It can be tried with --enable-preview. A preview is not a permanent language or API guarantee.
Incubator. An incubator API is not a supported standard API. It can change or be removed.
Language
Records
JEP 395 · Final · Language
A record declares a final carrier with a canonical constructor, accessors, and value-based equals, hashCode, and toString.
Preview in Java 14 (JEP 359) and Java 15 (JEP 384).
Stream gains toList(), which returns an unmodifiable list. The Java 9–11 example does not call it. It keeps Collectors.toList() so that file can stay a Java 11 program.
versions5Java17Features.javaCumulative Java 12–17 example · Requires Java 17Final forms only: switch expressions from Java 14, text blocks from Java 15, records and instanceof patterns from Java 16, and sealed classes from Java 17. This is not a Java 12 preview program. Pattern matching for switch was still a preview in Java 17 and is not used.
The cumulative example’s records and instanceof patterns match this release. Its sealed classes match the Java 17 final form, so the file is not a Java 16 program.