Java 14 Goes GA with Long List of JEPs

Oracle this week announced the general availability of the Java Standard Edition 14 Platform (Java SE 14) and its open-source reference implementation, the Java Development Kit 14 (JDK 14). This release includes more JEPs (Java Enhancement Proposals) than Java 12 and 13 combined.

This release continues the accelerated, six-month feature release cadence introduced more than two years ago. Java 14 is not a long-term support (LTS) release, which means it will be obsoleted with the release of Java 15 in September 2020. The next LTS release will be Java 17, which is scheduled for a September 2021 release.

The list of changes in this release is long. A total of 16 JEPs are addressed with Java 14, ranging from Java language support for switch expressions to new APIs for continuous monitoring of JDK Flight Recorder data. The complete list includes:

  • JEP 305 Pattern Matching (Preview): enhances the Java language with pattern matching for the instanceof operator. Pattern matching allows common logic in a program to be expressed more concisely and safely.
  • JEP 343 Packaging Tool (Incubator): a tool for packaging self-contained Java applications.
  • JEP 345 NUMA-Aware Memory Allocation for G1: improves G1 performance on large machines by implementing NUMA-aware memory allocation.
  • JEP 349 JFR Event Streaming: for continuous monitoring of JDK Flight Recorder data.
  • JEP 352 Non-Volatile Mapped Byte Buffers: adds new JDK-specific file mapping modes so that the FileChannel API can be used to create MappedByteBuffer instances that refer to non-volatile memory.
  • JEP 358 : Helpful NullPointerExceptions: improves the usability of NullPointerExceptions generated by the JVM by describing precisely which variable was null.
  • JEP 359 Records (Preview): enhances the Java language with records, which provide a compact syntax for declaring classes that are transparent holders for shallowly immutable data.
  • JEP 361 Switch Expressions: extend switch so it can be used as either a statement or an expression. Simplifies everyday coding and prepares the way for the use of pattern matching in switch. (Previewed in Java 12 and 13.)
  • JEP 362 Deprecate the Solaris and SPARC Ports: deprecates the Solaris/SPARC, Solaris/x64, and Linux/SPARC ports, so that they can be removed in a future release.
  • JEP 363 Remove the Concurrent Mark Sweep (CMS) Garbage Collector (GC): the CMS GC was deprecated more than two years ago to accelerate development of other collectors. Two new GCs, ZGC and Shenandoah, were introduced since then. It's now safe to remove this GC. 
  • JEP 364 ZGC on macOS and JEP 365 ZGC on Windows (both experimental): the ZCG garbage collector has been ported to both macOS and Windows.
  • JEP 366 Deprecate the ParallelScavenge + SerialOld GC Combination: deprecates the combination of the Parallel Scavenge and Serial Old garbage collection algorithms.
  • JEP 367 Remove the Pack200 Tools and API: removes the pack200 and unpack200 tools, and the Pack200 API in the java.util.jar package. These tools and API were deprecated for removal in Java SE 11.
  • JEP 368 Text Blocks (Second Preview): adds text blocks to the Java language. A text block is a multi-line string literal that avoids the need for escape sequences, automatically formats strings in a predictable way, and gives developers control over the format.
  • JEP 370 Foreign-Memory Access API (Incubator): introduces an API to allow Java programs to safely and efficiently access foreign memory outside of the Java heap.

About the Author

John K. Waters is the editor in chief of a number of sites, with a focus on high-end development, AI and future tech. He's been writing about cutting-edge technologies and culture of Silicon Valley for more than two decades, and he's written more than a dozen books. He also co-scripted the documentary film Silicon Valley: A 100 Year Renaissance, which aired on PBS.  He can be reached at [email protected].