Skip to content

Instantly share code, notes, and snippets.

@bluearth
Created May 9, 2021 17:33
Show Gist options
  • Save bluearth/f6d3a44364fa3a9cfd91d42c1d4018ae to your computer and use it in GitHub Desktop.
Save bluearth/f6d3a44364fa3a9cfd91d42c1d4018ae to your computer and use it in GitHub Desktop.
Java will be reaching it's next LTS version soon ([Nov 2021](https://openjdk.java.net/projects/jdk/17/)), that is Java 17. After the first (Java 8, Mar '14) and second (Java 11, Sept '18) LTS, it is worth to pay attention what the next LTS release will bring as it will be considered the standard for years to come. So I sit for couple of hours (l…

Java will be reaching it's next LTS version soon (Nov 2021), that is Java 17. After the first (Java 8, Mar '14) and second (Java 11, Sept '18) LTS, it is worth to pay attention what the next LTS release will bring as it will be considered the standard for years to come. So I sit for couple of hours (literally) to browse through past releases just to keep my self abreast of what has been going up until today.

Here's my notes.

J2SE 1.3 (Kestrel), May 2000

API

  • Java Naming and Directory Interface (JNDI)
  • JavaSound
  • RMI (updated to support CORBA compatibility)

JVM

  • HotSpot JVM was introduced

J2SE 1.4 (Merlin), Feb 2002

Languange

  • assert keyword

API

  • Non-blocking I/O (NIO)
  • Logging
  • Image I/O
  • Java API for XML Processing (JAXP)
  • Java Crypto Extension (JCE)
  • Java Secure Socket Extension (JSSE)
  • Java Authentication and Authorization Service (JAAS)
  • Preference API
  • others

J2SE 5.0 (Tiger), Sept 2004

Languange

  • Generics
  • Annotation
  • Autoboxing and unboxing
  • Enum
  • Varargs
  • for each loop
  • Static imports

API

  • Concurrency Utility API
  • Scanner API (data stream parsing API)

Java 6, Dec 2006

JVM

  • Update to HotSpot JVM

API

  • JavaDB

SDK Tools

  • JConsole

Java 7 (dolphin), 2011

Languange

  • String in switch

API

  • Concurrency Utility
  • File I/O

JVM

  • Update to HotSpot JVM

Java 8, Mar 2014

Languange

  • Lamda!
  • Default method for interfaces
  • Annotation related changes. Eg. now annotation can be placed on any use of a type. Before, annotation can only be placed on class/method/field/variable declarations.

API

  • Date & Time API
  • File I/O changes

Java 9, Sept 2017

Language

  • module keyword as part of the introduction of Java Platfrom Module System

API

  • JavaDB removed

SDK Tools

  • Java Linker (jlink) tool as part of the introduction of Java Platfrom Module System
  • Java Shell
  • AOT compiler

Java 10, Mar 2018

Language

  • Local variable type inference (i.e. the var keyword)

API

  • API for interacting with the GC

VM

  • Parallel Full GC for G1

SDK Tools

  • javah removed. Functionality now rest on javac -h

Java 11, Sept 2018

API

  • HTTP Client standardized
  • TLS 1.3 support
  • New crypto suites for key exchange
  • Unicode 10 support
  • Nashorn was deprecated
  • JavaFX removed
  • JavaEE removed
  • CORBA removed

VM

  • ZGC (experimental)
  • Epsilon, a noop GC

SDK Tools

  • Flight Recorder

Java 12, Mar 2019

VM

  • Shenandoah GC (experimental)

SDK Tools

  • Microbenchmarking suite

Java 13, Sept 2019

(not many happening here)

Java 14, Mar 2020

Language

  • Switch expression. Thats right, switch can now be used as expression, i.e. yeilding value Before, switch is used only as flow of control block.

VM

  • ZGC on MacOS and Windows
  • Concurrent Mark and Sweep (CMS) GC removed
  • NullPointerException is much more helpul especially on a chain of dereference, by indicating which vars is null

Java 15, Sept 2020

Language

  • Text blocks

Java 16, Mar 2021

Language

  • Pattern matching of instance of

API

  • Record API
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment