/java-new-features

Java new features by release

MIT LicenseMIT

Java New Features by Release

Java New Features after Java 9.

Java 21

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

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

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

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

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

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

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

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

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

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