

Busy Developers’ Guide to Java 9, 10, …, 17, 18, and All Recent Java Versions
source link: https://4comprehension.com/busy-developers-guide-to-java-9-10-11-12-13-and-above/?amp%3Butm_medium=rss&%3Butm_campaign=busy-developers-guide-to-java-9-10-11-12-13-and-above
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.


Busy Developers’ Guide to Java 9, 10, …, 17, 18, and All Recent Java Versions
This article is supposed to be an up-to-date source of curated information about changes that arrived in Java recently, and these that are about to – everything condensed into just a few minutes of reading.
After adopting a new cadence-based release cycle, new Java versions started appearing like crazy, and if you haven’t caught up yet – this is an excellent place to start.
Last update: 25.12.2021
Main Source of Confusion: New Release Cycle
In the past, Java releases were driven by prominent features like Lambda Expressions or Generics. Unfortunately, this approach ended up being quite harmful since numerous improvements could not be released until the main feature was ready.
Now, a Java version appears every six months and all the ready features, get released, which speeds up the evolution of Java – which is a great thing on its own but can generate confusion for people that got used to the fact that one would expect a new Java version to be released after years not months of waiting. We’re also more likely to see more Preview, Incubating, and Experimental features.
But not all Java versions are made equal – only one release every three years can be considered LTS (Long Term Support) with the last LTS being Java 11.
Java 9
Java 9 was the last feature-oriented Java release ever and featured an impressive number of 81 JEPs.
The most important addition was JPMS (also known as Project Jigsaw), but besides that we got:
- VarHandles – public sun.misc.Unsafe replacements
- JShell – a dedicated REPL (Read-Eval-Print-Loop)
- G1 as the default garbage collector
- StalkWalking API – API providing lazy access to the information in stack traces.
- Convenience Factory Methods for Collections – collections can be now initialized using of() methods
Release date: 21 September 2017
Java 10
Java 10 was the first one to be released under the new release cycle. Hence it featured only 12 JEPs and various small API additions accumulated within six months after Java 9 was released.
The most notable changes involved an introduction of local-variable-type-inference(var), Garbage Collector interface, G1 improvements (parallel full GC), and application class-data sharing.
Among other stuff, we received new handy Collectors to be used with unmodifiable collections:
- Collectors.toUnmodifiableList()
- Collectors.toUnmodifiableSet()
- Collectors.toUnmodifiableMap()
Release date: 20 March 2018
Java 11 (LTS)
Java 11 was the first Long-Term-Support release and featured 17 JEPs.
The most notable changes involved the addition of HTTPClient, Flight Recorder, experimental low-pause garbage collector(ZGC), and an experimental no-op garbage collector(Epsilon). Additionally, Java EE and CORBA modules got removed, and Nashorn deprecated.
We also got a tiny addition to Optional API: isEmpty(), which is the opposite of isPresent().
And a few interesting methods in String API:
Release date: 25 September 2018
Java 12
Another relatively small release featuring only 8 JEPs.
Language-wise Switch Expressions were introduced as a preview feature, we got two G1 improvements(1, 2), and a new experimental low-pause garbage collector – Shenandoah.
Release date: 19 March 2019
Java 13
The smallest release to date bringing only 5 JEPs.
Switch Expressions were refined, Text Blocks got introduced as a preview feature, and Socket API reimplemented. Additionally, we got Linux/AArch64 support for ZGC.
Release date: 17 September 2019
Java 14
Java 14 had quite a few interesting additions:
Release date: 17 March 2020
Java 15
Java 15 is already out and brought a few interesting additions:
As well as second previews of:
And the second incubator release of Foreign Memory Access API!
Release date: 17 September 2020
Java 16
Java 16 brought some cool additions:
Other than this, OpenJDK development took a huge leap of faith… and migrated to Git and Github. Which makes the whole project much more accessible.
Other than this, we’ll see newer C++ constructs in JVM’s code and Java internals are now encapsulated by default.
Release date: 16 March 2021
Java 17
Java 17 is another LTS release. This means that you can safely migrate from Java 11 and not worry about the next migration for a couple of years (at least if you choose to take the blue pill).
The most notable features involve:
Other than that we can anticipate enhanced pseudo-random numbers generators, deprecation of the Applet API, and… a controversial decision to remove experimental support for AOT and Graal(don’t mix with GraalVM) JIT compiler and deprecate the Security Manager for removal.
There’s also a quite interesting last-minute change:
Release date: 14 September 2021
Java 18
Java 18’s feature set is frozen. Let’s have a look at the most notable additions:
- UTF-8 will be recognized as THE default charset (small thing, but will unify behaviour across implementations, locales, and operating systems)
- Vector API is getting another revision
- Some Reflection APIs will be reimplemented with MethodHandles
- Deprecate Finalization for Removal for removal
- SPI for java.net.InetAddress’s resolvers
Surprisingly… we’ll be even getting a simple web server!
Release date: ~March 2022
If you enjoyed the content, consider supporting the site:
Further Reading
- Stackwalking in Java with StackWalker and Stream API
One of the coolest (and totally impractical for most developers) features added to Java recently, is the StackWalking API. In…
- Java 12 String API Updates
Following the unexpected success of my previous article about Java 11 String API, time to have a look at new…
- Difference Between Preview, Experimental, and Incubating Features in Java
After Java's release cycle got revolutionized, we can expect more and more changes coming to the language faster than in…
Recommend
-
23
Practical Information First, let’s have a look at some common, practical questions that people have when trying to choose the right Java version for their project.
-
15
Garbage collectors for the busy Java developer (10 min, no maths ;)) java-version.com: What's new in Java 16? 15? Keep up to date! Garba...
-
8
A Busy and Better Year in 2021. First, I wish you an excellent 2021. We…
-
7
The Busy Coder's Guide to Android Development Do you want comprehensive information about how to develop Android apps? This b...
-
3
KDE Developers Had A Very Busy Valentine's Week With Many Plasma Improvements ...
-
10
Installation and switching between multiple versions of Java Reading Time: 2 minutes Having trouble in keeping multiple ve...
-
7
Trump Is Back on Social Media, and He’s Been BusyTruth Social may finally be relevant
-
2
laconic: a frontend framework for busy developers laconic is a low-code UI framework to create apps's interface fast. Top features: declarative definition of your UI with...
-
5
The latest Firefox update drops support for several recent macOS versions macOS Mojave 10.14, macOS High Sierra 10.13, and macOS 10.12 Sierra will need to upgrade to get the newest features. ...
-
5
Looking for the best API Documentation tools? Then here we will discuss some of the best API tools that will help you boost your workflow. But let's first know what API is and how it can be helpful to you? What is An API?
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK