Changes in Java 17

Java 17 released on 17th September. As we mentioned before, Java 17 is the new LTS version, after 6 versions from Java 11. LTS stands for Long Term Support meaning that this version will have official support(security, performance, and bug-fix updates) from Oracle for longer periods of time, in this case until  at least September 2029. Next LTS is planned to be Java 21, planned to be released in September 2023, which means LTS will be released every two years instead of three.

Another thing to mention is licencing plan. In 2019 Oracle changed Java’s licence, so that Oracle’s own JDK 8 is under commercial use restrictions. To get an updated Java SE 8 binary, users could get a paid support plan for Oracle JDK 8.  Or they could use a Java SE 8 / OpenJDK 8 binary from another provider, such as openJDK, Amazon Cornetto etc. In contrast JDK 17 is released under Oracle’s No-Fee Terms and Conditions (NFTC) license, which will allow developers to use this version for free until one year after the next LTS release.

 

Since the previous JDK 11 LTS released three years ago, over 70 JEPs have been implemented.

Here are some of the changes introduced in this version:

 

JEP 397: Sealed Classes

 

Sealed classes are released. It allows us to define who can extend our classes. In the following example only Beta, Gamma and Delta can extend Alpha.
public sealed class Alpha permits Beta, Gamma, Delta { … }

JEP 391: macOS/AArch64 Port

 

JEP 391 is about porting the JDK to the new Apple Silicon architecture.

 

JEP 382: New macOS Rendering Pipeline

 

JEP 382 implements a new Java 2D rendering pipeline for macOS, using the new Apple Metal framework.

 

 

JEP 356: Enhanced Pseudo-Random Number Generators

 

JEP 356 introduces new interface types and implementation for pseudorandom number generators (PRNGs).

 

JEP 398: Deprecate the Applet API for Removal

 

Applet API is marked for removal, which means it will not be supported in Java 18. Although rarely used nowadays, mostly in old online education software, applets are still supported by projects such as CheerpJ. Another part of the old internet is going to history, similar to Flash.

 

JEP 411: Deprecate the Security Manager for Removal

 

Since Applets are being deprecated, their Security Manager is deprecated too.

 

JEP 407: Remove RMI activation

 

RMI was deprecated in Java 15, and now is finally being removed. A novel idea at the time, nowadays rarely used.

 

JEP 410: Remove the Experimental AOT and JIT Compiler


Experimental compilers added in Java 9 and 10, have also seen rare use. Since costly maintenance they are being removed