Introduction
In this post am are going to look at some of the new features introduced to the Java language from versions 7,8,9,10,11 & 12. By no means should this list be considered as a comprehensive feature list, but I shall aim to capture some of the more striking features & syntax additions that I particularly found interesting.

But 1st back to the beginning:
JDK 1.0 (1996)
JDK 1.1 (1997)
J2SE 1.2 (1998) – This & subsequent releases were rebranded retrospectively Java 2.
J2SE 1.3 (2000)
J2SE 1.4 (2002)
J2SE 5.0 (2004) – Originally numbered 1.5
Java SE 6 (2006) – As of this version, Sun replaced the name “J2SE” with Java SE and dropped the “.0” from the version number
Java 7 – July 2011 – Oracle bought Sun System
- Diamond Operator
- String Switch
- Underscore in Numeric Value
- Multi try catch
- Try with Resource
- New IO API
- G1 garbage Collector (Garbage 1st)
Java 8 – March 2014 – LTS
- Lambda Expressions
- Functional Interfaces
- Pre-defined Functional Interfaces (Predicate/Function/Consumer/Supplier/Binary/Unary)
- Interface default/static methods
- Method reference
- Streams API
- Parallel streams
- Time & Date API
Java 9 – September 2017
- Removal of deprecated APIs
- Private Methods in interfaces
- Enhanced resource try-catch
- Streams new methods
- takeWhile – Takes values while the filter is true, then stops at the first false condition
- dropWhile
- ofNullable
- System Process API
- Java Platform Module System (JPMS)
- JLink – Default JRE is not recommended for small IOT devices due to memory size. Jlink lets you specify which modules to include in a custom runtime
- JShell (IntelliJ Tools > JShell Console)
- JDep
Java 10 – March 2018
- Oracle Time based release versioning
- Code Repositories Consolidation (CORBA, HotSpot, JDK, JAXP, JAX-WS, langtools, Nashorn, and ROOT)
- Garbage Collector Interface Update
- Local variable var (e.g. var myMap = new HashMap<>(); ) The variable type is still strongly typed, but the type is inferred from the assignment.
Java 11 – September 2018 LTS
- Nashorn deprecated – Calling JavaScript function from Java is encouraging developers to use GraalVM virtual machine instead
- JavaFX module Decoupled
- SOAP (java.xml.ws) is deprecated and may be removed. Others include (java.corba/jdk.snmp/java.xml/bind)
- Tools removed (appletviewer /wsimport/wsgen/schemagen/Xjs)
- String new methods (isBlank()/lines()/repeat(n)/strip()/stripLeading()/stripTrailing())
- HTTP client updated code
- Lambda Enhancement (@Min(value = 10) var a, final b) -> (a + b)
Java 12 – March 2019
- Switch Expression new syntax
- Number format ‘getCompactNumberInstance’
- String indent/transform new methods
Java 13 – September 2019
- Text blocks (preview JEP 368):
Java 14 – March 2020 – LTS
- Records (JEP 359):
- Pattern Matching for instanceof (JEP305):
- JFR Event Screening (JEP 349):
- NUMA – Aware Memory Allocation for G1 (JEP 345):
jpackage(JEP 392 )
Java 15 – September 2020
Java 16 – March 2021
- mapMulti in streams


Leave a comment