A list of major Java and JVM features since JDK 17 to 22,
New language features JEP-409: Sealed Classes (17) JEP-440: Record patterns (21) JEP-441: Pattern matching for switch (21) JEP 456: Unnamed Variables & Patterns (22)
API changes JEP-306: Restore Always-Strict Floating-Point Semantics(17) JEP-382: New macOS Rendering Pipeline(17) JEP-400: UTF-8 by Default (18) JDK-8301226 – Clamp method for java.lang.(Strict)Math (21) JEP-439: Generational ZGC JEP-444: Virtual threads (21) JEP-454: Foreign Function & Memory(FFM) API (22)
Security JEP-452: Key Encapsulation Mechanism API (21) JDK-8275252: keystore file Features JEP-408: Simple web server (18) JEP-423: Region pinning for G1 (22) JEP-458: multi-file source-code programs (22) JEP-423: Region pinning for G1 (22) JEP-458: multi-file source-code programs (22)
Documentation JEP-413: Javadoc code snippets (18)
Deprecations
Lookahead Scoped values + Structured concurrency Module import declarations
final
prevents a class from being extended completely, while a sealed class is only extensible by a select few subclasses, which are explicitly defined in apermits
clause in the sealed superclassPermits is only required when the compiler can’t see the extending classes. IE inner classes can extend without needing to be written out in a
permits
clause. This isn’t really that useful but I’ve taken advantage of it more than once so who knows