What’s New Between Java 11 and Java 17?

The 14th of September Java 17 was released. Time to take a closer look at the changes since the last LTS release, which is Java 11. A short introduction is given about the licensing model and after that, some of the changes between Java 11 and Java 17 are highlighted, mainly by means of examples. Enjoy!

1. Introduction

First, let’s take a close look at the Java licensing and support model. Java 17 is an LTS (Long Term Support) version just like Java 11. With Java 11 a new release cadence started. Java 11 came with support up to September 2023 and with an extended support up to September 2026. Also, with Java 11, the Oracle JDK was not free anymore for production and commercial use. Every 6 months a new Java version is released, the so-called non-LTS releases Java 12 up to and including Java 16. These are, however, production-ready releases. The only difference with an LTS release is that the support ends when the next version is released. E.g. the support of Java 12 ends when Java 13 is released. You are more or less obliged to upgrade to Java 13 when you want to keep support. This can cause some issues when some of your dependencies are not yet ready for Java 13. Most of the time, for production-use, companies will wait for the LTS releases. But even then, some companies are reluctant for upgrading. A recent survey of Snyk showed that only 60% is using Java 11 in production and this is 3 years after Java 11 was released! Java 8 is also still being used by 60% of the companies. Another interesting thing to notice is that the next LTS release will be Java 21 which will be released in 2 years. A nice overview whether libraries have issues or not with Java 17, can be found here.