Java / Java 12
Java 12 is launched on March 19, 2019.
- Shenandoah garbage collector, an experimental garbage-collection low-pause-time algorithm is added in Java 12 to reduce garbage-collection pause times by performing evacuation work concurrently with the running of Java threads.
- Promptly Return Unused Committed Memory from G1, starting Java 12, G1 will now check Java Heap memory during inactivity of application and return it to the operating system. This is a preemptive measure to conserve and use free memory.
- Abortable Mixed Collections for G1, improvements in G1 efficiency include making G1 mixed collections abortable if they might exceed the defined pause target. This is done by splitting the mixed collection set into mandatory and optional. Thus the G1 collector can prioritize collecting the mandatory set first to meet the pause time goal.
- Default CDS Archives enhances the JDK build process to generate a class data-sharing (CDS) archive, using the default class list, on 64-bit platforms. The goal is to improve startup time. From Java 12, CDS is by default ON.
- Reduced number of ARM ports, Java 12 removes all sources related to the arm64 port while retaining the 32-bit ARM and 64-bit aarch64. Removal of this port would let contributors focus efforts on a single 64-bit ARM implementation and eliminate duplicate work that would result from maintaining two ports. Currently, two 64-bit ARM ports are in the JDK.
Java 12 is a Non-LTS version, the Java 11 is LTS and next LTS release will be Java 17.
- Switch Expressions, With Java 12, the beta switch expressions will improve coding by extending the switch statement, enabling its use as either a statement or an expression. It will let both forms use either the traditional or simplified scoping and control flow behavior. This will help simplify the code and also pave the way for the use of pattern matching in a switch.
- File mismatch() Method
- Compact Number Formatting
- Teeing Collectors in Stream API
- Java Strings New Methods - indent(), transform(), describeConstable(), and resolveConstantDesc()
- JVM Constants API
- Pattern Matching for instanceof
- Raw String Literals is Removed From JDK 12
In 2022, there are 3 versions of Java that you'll commonly run across:
Java 8 was released in 2014 and replaced Java 7 as the default recommended download. Its improvements over Java 7 include language-level support for lambda expressions, a new DATE/TIME API, and project Nashorn (a JavaScript runtime environment that allows developers to embed JavaScript within Java apps). Oracle officially stopped posting updates for Java 8 after September 2016.
Java 11 was released in September of 2018. It is the next major version of Java offering LTS after 8.
Java 17 is the most recent version of Java offering LTS. Released in September 2021, Java 17 offers performance and security enhancements that make it worth the migration. It also has several cool development features worth checking out.