New Features in Java 12 through 15

From p0f
Jump to: navigation, search

Introduction

JDK versions just keep coming, and since my last article about new features in Java v10 and v11, there have been four new major Java releases with a number of interesting (and useful) new features.

What I assume

I assume that you are:

  • fluent in the Java language (according to v11 language specification)
  • aware of how Java garbage collectors work and why we need them
  • have a clue about what Linux software packages are and what they do

Language

Switch Expressions (v12)

Lifecycle phases:

  • v12: preview
  • v13: preview
  • v14: standard

Text Blocks (v13)

Lifecycle phases:

  • v13: preview
  • v14: second preview
  • v15: standard

Pattern Matching for instanceof (v14)

Lifecycle phases:

  • v14: preview
  • v15: second preview

Records (v14)

Lifecycle phases:

  • v14: preview
  • v15: second preview

Sealed Classes (v15)

Lifecycle phases:

  • v15: preview

Virtual Machine

Shenandoah Garbage Collector (v12)

Lifecycle phases:

  • v12: experimental
  • v15: GA

Abortable Mixed Collections for G1 (v12)

https://openjdk.java.net/jeps/344

Make G1 mixed collections abortable if they might exceed the pause target.

Promptly Return Unused Committed Memory from G1 (v12)

https://openjdk.java.net/jeps/346

G1 only returns memory from the Java heap at either a full GC or during a concurrent cycle. Since G1 tries hard to completely avoid full GCs, and only triggers a concurrent cycle based on Java heap occupancy and allocation activity, it will not return Java heap memory in many cases unless forced to do so externally.

This feature enhances the G1 garbage collector to automatically return Java heap memory to the operating system when idle.

Return Unused Memory to OS from ZGC (v13)

Bye-bye, CMS (v14)

Hidden Classes (v15)

Tools

New OS-Native Packaging Tool for Self-Contained Apps (v14)

Lifecycle phases:

  • v14: incubator

Better NullPointerException Messages (v14)