Java New Features after Java 9.
Java 21 has 15 JEPs, see the table below.
Number | Name |
---|---|
430 | String Templates (Preview) |
431 | Sequenced Collections |
439 | Generational ZGC |
440 | Record Patterns |
441 | Pattern Matching for switch |
442 | Foreign Function & Memory API (Third Preview) |
443 | Unnamed Patterns and Variables (Preview) |
444 | Virtual Threads |
445 | Unnamed Classes and Instance Main Methods (Preview) |
446 | Scoped Values (Preview) |
448 | Vector API (Sixth Incubator) |
449 | Deprecate the Windows 32-bit x86 Port for Removal |
451 | Prepare to Disallow the Dynamic Loading of Agents |
452 | Key Encapsulation Mechanism API |
453 | Structured Concurrency (Preview) |
Java 20 has 7 JEPs, see the table below.
Number | Name |
---|---|
429 | Scoped Values (Incubator) |
432 | Record Patterns (Second Preview) |
433 | Pattern Matching for switch (Fourth Preview) |
434 | Foreign Function & Memory API (Second Preview) |
436 | Virtual Threads (Second Preview) |
437 | Structured Concurrency (Second Incubator) |
438 | Vector API (Fifth Incubator) |
Java 19 has 7 JEPs, see the table below.
Number | Name |
---|---|
405 | Record Patterns (Preview) |
422 | Linux/RISC-V Port |
424 | Foreign Function & Memory API (Preview) |
425 | Virtual Threads (Preview) |
426 | Vector API (Fourth Incubator) |
427 | Pattern Matching for switch (Third Preview) |
428 | Structured Concurrency (Incubator) |
Java 18 has 9 JEPs, see the table below.
Number | Name |
---|---|
400 | UTF-8 by Default |
408 | Simple Web Server |
413 | Code Snippets in Java API Documentation |
416 | Reimplement Core Reflection with Method Handles |
417 | Vector API (Third Incubator) |
418 | Internet-Address Resolution SPI |
419 | Foreign Function & Memory API (Second Incubator) |
420 | Pattern Matching for switch (Second Preview) |
421 | Deprecate Finalization for Removal |
Java 17 has 14 JEPs, see the table below.
Number | Name |
---|---|
306 | Restore Always-Strict Floating-Point Semantics |
356 | Enhanced Pseudo-Random Number Generators |
382 | New macOS Rendering Pipeline |
391 | macOS/AArch64 Port |
398 | Deprecate the Applet API for Removal |
403 | Strongly Encapsulate JDK Internals |
406 | Pattern Matching for switch (Preview) |
407 | Remove RMI Activation |
409 | Sealed Classes |
410 | Remove the Experimental AOT and JIT Compiler |
411 | Deprecate the Security Manager for Removal |
412 | Foreign Function & Memory API (Incubator) |
414 | Vector API (Second Incubator) |
415 | Context-Specific Deserialization Filters |
Java 16 has 17 JEPs, see the table below.
Number | Name |
---|---|
338 | Vector API (Incubator) |
347 | Enable C++14 Language Features |
357 | Migrate from Mercurial to Git |
369 | Migrate to GitHub |
376 | ZGC: Concurrent Thread-Stack Processing |
380 | Unix-Domain Socket Channels |
386 | Alpine Linux Port |
387 | Elastic Metaspace |
388 | Windows/AArch64 Port |
389 | Foreign Linker API (Incubator) |
390 | Warnings for Value-Based Classes |
392 | Packaging Tool |
393 | Foreign-Memory Access API (Third Incubator) |
394 | Pattern Matching for instanceof |
395 | Records |
396 | Strongly Encapsulate JDK Internals by Default |
397 | Sealed Classes (Second Preview) |
Java 15 has 14 JEPs, see the table below.
Number | Name |
---|---|
339 | Edwards-Curve Digital Signature Algorithm (EdDSA) |
360 | Sealed Classes (Preview) |
371 | Hidden Classes |
372 | Remove the Nashorn JavaScript Engine |
373 | Reimplement the Legacy DatagramSocket API |
374 | Disable and Deprecate Biased Locking |
375 | Pattern Matching for instanceof (Second Preview) |
377 | ZGC: A Scalable Low-Latency Garbage Collector |
378 | Text Blocks |
379 | Shenandoah: A Low-Pause-Time Garbage Collector |
381 | Remove the Solaris and SPARC Ports |
383 | Foreign-Memory Access API (Second Incubator) |
384 | Records (Second Preview) |
385 | Deprecate RMI Activation for Removal |
Java 14 has 16 JEPs, see the table below.
Number | Name |
---|---|
305 | Pattern Matching for instanceof (Preview) |
343 | Packaging Tool (Incubator) |
345 | NUMA-Aware Memory Allocation for G1 |
349 | JFR Event Streaming |
352 | Non-Volatile Mapped Byte Buffers |
358 | Helpful NullPointerExceptions |
359 | Records (Preview) |
361 | Switch Expressions (Standard) |
362 | Deprecate the Solaris and SPARC Ports |
363 | Remove the Concurrent Mark Sweep (CMS) Garbage Collector |
364 | ZGC on macOS |
365 | ZGC on Windows |
366 | Deprecate the ParallelScavenge + SerialOld GC Combination |
367 | Remove the Pack200 Tools and API |
368 | Text Blocks (Second Preview) |
370 | Foreign-Memory Access API (Incubator) |
Java 13 has 5 JEPs, see the table below.
Number | Name |
---|---|
350 | Dynamic CDS Archives |
351 | ZGC: Uncommit Unused Memory |
353 | Reimplement the Legacy Socket API |
354 | Switch Expressions (Preview) |
355 | Text Blocks (Preview) |
Java 12 has 8 JEPs, see the table below.
Number | Name |
---|---|
189 | Shenandoah: A Low-Pause-Time Garbage Collector (Experimental) |
230 | Microbenchmark Suite |
325 | Switch Expressions (Preview) |
334 | JVM Constants API |
340 | One AArch64 Port, Not Two |
341 | Default CDS Archives |
344 | Abortable Mixed Collections for G1 |
346 | Promptly Return Unused Committed Memory from G1 |