Important Features in Diff. versions of Java
Java is a programming language that was by Sun Microsystems in 1995. It has developed from humble starting points to control a big proportion of the present computerized world, by giving the dependable stage whereupon many services and applications are fabricated.
In this post , we are going to take a look at Chronology of General Availability (GA) of Important Features of Java that were introduced in different versions of JDK since Java 8 .
Here is a Summary of #Java 8,9,10,11,12,13,14,15,16,17,18, 19 features.
#Java 19 Features: Available from Sep 2022 https://openjdk.org/projects/jdk/19/
- Structured concurrency
- Record patterns
- Foreign function
- Virtual Threads
- Pattern matching for switch expressions and statements
- Vector API
#Java 18 Features: Available from March 2022 https://openjdk.org/projects/jdk/18/
- UTF-8 by Default
- Simple Web Server
- Code Snippets in Java API Doc
- Reimplement Core Reflection with Method Handles
- Vector API
- Internet-Address Resolution SPI
- Foreign Function & Memory API
- Pattern Matching for switch
#Java 17 Features (Long Term Support) : Available from Sep 2021 https://openjdk.org/projects/jdk/17/
- Restore Always-Strict Floating-Point Semantics
- Enhanced Pseudo-Random Number Generators
- New macOS Rendering Pipeline
- macOS/AArch64 Port
- Deprecate the Applet API for Removal
- Strongly Encapsulate JDK Internals
- Pattern Matching for switch
#Java 16 Features: Available from Mar 2021 https://openjdk.org/projects/jdk/16/
- Vector API
- Enable C++14 Language Features
- Migrate from Mercurial to Git
- Migrate to GitHub
- Concurrent Thread-Stack Processing
- Unix-Domain Socket Channels
- Alpine Linux Port
- Elastic Metaspace
- Windows/AArch64 Port
#Java 15 Features Available from Sep 2020 https://openjdk.org/projects/jdk/15/
- Sealed Classes and Interfaces
- EdDSA Algorithm
- Hidden Classes
- Pattern Matching for instanceof
- Removed Nashorn JavaScript Engine
- Reimplement the Legacy DatagramSocket API
- Records (Second Preview)
- Text Blocks become a standard feature
#Java 14 Features Available from Mar 2020 https://openjdk.org/projects/jdk/14/
– Pattern Matching for instanceof
– Text Blocks
– Helpful NullPointerExceptions
– Records
– Switch Expressions
– Packaging Tool
– NUMA-Aware Memory Allocation for G1
– JFR Event Streaming
– Non-Volatile Mapped Byte Buffers
– Remove the Pack200 Tools and API
#Java 13 Features: Available from Sep 2019 https://openjdk.org/projects/jdk/13/
– Text Blocks (Preview)
– Switch Expressions Enhancements (Preview)
– Reimplement the Legacy Socket API
– Dynamic CDS Archive
– ZGC: Uncommit Unused Memory
– FileSystems.newFileSystem() Method
– DOM and SAX Factories with Namespace Support
#Java 12 Features: Available from Mar 2019 https://openjdk.org/projects/jdk/12/
- Collectors.teeing() in Stream API
- String API Changes
- Files.mismatch(Path, Path)
- Compact Number Formatting
- Support for Unicode 11
- Switch Expressions (Preview)
#Java 11 Features (Long Term Support):Available from Sep 2018 https://openjdk.org/projects/jdk/11/
- HTTP Client API
- Launch Single-File Programs Without Compilation
- String API Changes
- Collection.toArray(IntFunction)
- Files.readString() and Files.writeString()
- Optional.isEmpty()
#Java 10 Features: Available from Mar 2018 https://openjdk.org/projects/jdk/10/
- Local Variable Type Inference
- Time-Based Release Versioning
- Garbage-Collector Interface
- Parallel Full GC for G1
- Heap Allocation on Alternative Memory Devices
- Consolidate the JDK Forest into a Single Repository
#Java 9 Features: Available from Sep 2017
https://jdk.java.net/java-se-ri/9
- Java platform module system
- Interface Private Methods
- HTTP 2 Client
- JShell
- Platform and JVM Logging
- Process API Updates
- Collection API Updates
- Improvements in Stream API
- Multi-release JAR Files
- @Deprecated Tag Changes
- Stack Walking
#Java 8 Features (Long Term Support): Available from Mar 2014 https://openjdk.org/projects/jdk8/
- Lambda expression
- Stream API
- Functional interface
- Default and static methods
- Optional class
- Nashorn — JavaScript runtime engine
- Unsigned Integer Arithmetic
- Repeating annotations
- New Date and Time API
For those who want to deep dive on features . Here is a larger laundry list of improvements to the Java platform since Java 8, categorized for easier scanning.
Language Features
- Local-Variable Type Inference
- Switch Expressions
- Records
- Sealed Classes
- Text Blocks
- Pattern Matching for instanceof
- Pattern Matching for Switch
Library and Tooling
Security
- Strongly Encapsulate JDK Internals
- Enhanced Pseudo-Random Number Generators
- Context-Specific Deserialization Filters
Observability and Debugging
Garbage Collection
- ZGC: A Scalable Low-Latency Garbage Collector
- ZGC: Uncommit Unused Memory
- ZGC: Concurent Thread-Stack Processing
- Promptly Return Unused Committed Memory from G1
- NUMA-Aware Memory Allocation for G1
- Elastic Metaspace
Modernizing Infrastructure
Removals and Deprecations
- Remove the Concurrent Mark Sweep (CMS) Garbage Collector
- Remove the Nashorn JavaScript Engine
- Disable and Deprecate Biased Locking
- Remove RMI Activation
- Deprecate the Applet for Removal
- Deprecate the Security Manager for Removal
- Deprecate Finalization for Removal
Misc
Bonus Section: Preview/Incubator Features
The Future of the Java Platform
Like the world around us, the Java Platform is continually moving forward. New paradigms arise like machine learning, deployment models like cloud computing become commonplace, developer fashions ebb and flow, and hardware accelerates and evolves. It is important that you can trust your chosen programming platform to address these changes in a thoughtful way that respects the past, lives up to its promises, and adheres to a set of guiding principles. Innovation is critical, but not at the expense of predictability and productivity. The updates on upcoming developments are available at https://dev.java/future/