Java Tutorial
Java Versions
New in Java 15
The main additions to Java 15 are:
- Sealed Classes (Preview)
- Hidden classes
- Edwards-Curve Digital Signature Algorith (EdDSA).
- Reimplement the Legacy DatagramSocket API
- Pattern Matching for instanceof (Second Preview)
- Records (Second Preview)
- Foreign-Memory Access API (Second Incubator)
- Text blocks
- ZGC: A scalable low-latency garbage collector
- Shenandoah: A low-pause-time garbage collector
- Disable and deprecate biased locking
- Removed Nashorn JavaScript Engine
- Removed Solaris and Sparc ports
- Deprecate RMI Activation for Removal
New in Java 14
The main additions to Java 14 are:
- Records - Shallowly immutable classes (Preview).
- NullPointerException improvements.
- Text blocks - makes it easier to declare multiline strings.
- Java switch expressions become a permanent feature.
- Enhanced pattern matching for the Java instanceof operator.
- Non-volatile memory mapped byte buffers via the FileChannel API.
- Foreign memory access API to access memory outside the Java VM heap.
- NUMA aware memory allocation for the G1 garbage collector.
- Java Flight Recorder - Event streaming.
- A packaging tool for packing Java applications as selfcontained applications.
- Porting of Z garbage collector (ZGC) to MacOS and Windows
- Removal of the Concurrent Mark and Sweep garbage collector.
- Removal of pack200 / unpack200 zip tools for JAR files.
- Deprecation of Solaris/Sparc, Solaris/x64 and Linux/Sparc ports of Java.
Here is a link to the full list of changes in Java 14.
New in Java 13
The main additions to Java 13 are:
- Java switch expressions have been modified - not 100% backwards compatible with Java 12.
- Text blocks - makes it easier to declare multiline strings.
- Reimplementation of the legacy Socket API. The new implementation is cleaner, and should work better with user space threads - e.g fibers - which are being explored in Project Loom (possible future addition to Java).
- Z garbage collector now releases unused memory back to the OS, when unused for longer time.
Here is a link to the full list of changes in Java 13.
New in Java 12
The main additions to Java 12 are:
- A low pause time garbage collector called Shenandoah (OpenJDK only).
- Java switch expressions (preview - may be removed from Java again).
- JVM Constants API.
- Abortable mixed collections in G1 (garbage collections).
- Promptly return unused committed memory from G1.
Here is a link to the full list of changes in Java 12.
New in Java 11
The main additions to Java 11 are:
- Removed Java EE and Corba modules from JDK.
- HTTP Client made standard (the one added in Java 9).
- Java
varkeyword allowed as lambda expression parameter type. - Key agreement via elliptic curve cryptography.
- Unicode 10.
- New cryptographic algorithms.
- Launch single file source code programs (compiled when executed).
- TLS 1.3 support.
- Deprecate the Nashorn JavaScript engine
Here is a link to the full list of changes in Java 11.
New in Java 10
The main additions to Java 10 are:
- Local-Variable Type Inference
- Parallel Full Garbage Collection for G1 (a Garbage Collector)
- Graal included as experimental JIT compiler
- Several internal, JVM and platform level changes
Here is a link to the full list of changes in Java 10.
New in Java 9
The main additions to Java 9 are:
- Java Modules
- Java Reflection Module class
- Java Try With Resources Enhancement
- Java Compact Strings
- Java Microbenchmark Harness (JMH) included in the JDK
Here is a link to the full list of changes in Java 9.
New in Java 8
The main additions to Java 8 are:
- Java Lambda Expressions
- Java Streams (functional streams)
- JavaFX (bundled with Java SE from Java 8).
- The Nashorn JavaScript engine.
New in Java 7
The main new features in Java 7 are:
- Try with resources
- Catching Multiple Exceptions
- Java Fork and Join via ForkJoinPool
- Strings in Java switch statements.
- New file system API in Java NIO 2.0
- Type inference in generic declarations (the socalled "diamond" operator).
- Numeric literals with underscores as visual separators (e.g. 1_000_000).
- Binary numeric literals (e.g. 0b10100101).
- Support for dynamically typed languages in the Java Virtual Machine (JVM).

浙公网安备 33010602011771号