ZGC returns unused memory to the OS (JVM, GC and performance)
Legacy Socket API reimplemented (Libraries and APIs)
12
Java SE 12 Released 19 Mar 2019
Available to you
String.indent and transform (Libraries and APIs)
Collectors.teeing (Libraries and APIs)
Files.mismatch (Libraries and APIs)
Compact number formatting (1K, 2M) (Libraries and APIs)
Default CDS archives for faster startup (JVM, GC and performance)
11
Java SE 11 Released 25 Sep 2018
LTSAvailable to you
Standard HTTP Client (java.net.http) (Libraries and APIs)
String isBlank, lines, strip and repeat (Libraries and APIs)
Files.readString and writeString (Libraries and APIs)
var in lambda parameters (Language)
Run a single source file directly: java Hello.java (Tools)
Optional.isEmpty and Predicate.not (Libraries and APIs)
TLS 1.3 (Security)
Epsilon no-op garbage collector (JVM, GC and performance)
Flight Recorder open-sourced (Tools)
Java EE and CORBA modules removed (JAXB, JAX-WS) (Removed or restricted)
Applets and Java Web Start dropped from Oracle JDK (Removed or restricted)
What Java 11 code looks like
var client = HttpClient.newHttpClient();
var req = HttpRequest.newBuilder(URI.create("https://api.example.com/courses")).build();
String body = client.send(req, HttpResponse.BodyHandlers.ofString()).body();
10
Java SE 10 Released 20 Mar 2018
Available to you
var for local variables (Language)
List.copyOf, Set.copyOf and Map.copyOf (Libraries and APIs)
Optional.orElseThrow() (Libraries and APIs)
Collectors.toUnmodifiableList and friends (Libraries and APIs)
Parallel full GC for G1 (JVM, GC and performance)
Application class-data sharing (JVM, GC and performance)
Time-based releases every six months begin (Tools)
What Java 10 code looks like
var lessonsByCourse = newHashMap<String, List<Lesson>>();
9
Java SE 9 Released 21 Sep 2017
Available to you
Module system (module-info.java) (Language)
JShell interactive REPL (Tools)
Collection factories: List.of, Set.of, Map.of (Libraries and APIs)
Private methods in interfaces (Language)
try-with-resources on effectively final variables (Language)
Stream takeWhile, dropWhile and ofNullable (Libraries and APIs)
Optional.ifPresentOrElse, or and stream (Libraries and APIs)
ProcessHandle API (Libraries and APIs)
Reactive Streams Flow API (Libraries and APIs)
G1 becomes the default garbage collector (JVM, GC and performance)
Compact strings: Latin-1 text stored in one byte per char (JVM, GC and performance)