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.
- Java Naming and Directory Interface (JNDI)
- JavaSound
- RMI (updated to support CORBA compatibility)
- HotSpot JVM was introduced
assert
keyword
- 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
- Generics
- Annotation
- Autoboxing and unboxing
- Enum
- Varargs
for each
loop- Static imports
- Concurrency Utility API
- Scanner API (data stream parsing API)
- Update to HotSpot JVM
- JavaDB
- JConsole
- String in switch
- Concurrency Utility
- File I/O
- Update to HotSpot JVM
- 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.
- Date & Time API
- File I/O changes
module
keyword as part of the introduction of Java Platfrom Module System
- JavaDB removed
- Java Linker (
jlink
) tool as part of the introduction of Java Platfrom Module System - Java Shell
- AOT compiler
- Local variable type inference (i.e. the
var
keyword)
- API for interacting with the GC
- Parallel Full GC for G1
javah
removed. Functionality now rest onjavac -h
- 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
- ZGC (experimental)
- Epsilon, a noop GC
- Flight Recorder
- Shenandoah GC (experimental)
- Microbenchmarking suite
(not many happening here)
- 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.
- 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
- Text blocks
- Pattern matching of
instance of
- Record API