Long in the making, Oracle has finally released JDK (Java Development Kit) 17. This is the first long-term support (LTS) release to see the light of day since JDK 11 three years ago. True, new versions of Java appear every six months, in March and September. But they’re only supported until the next one arrives. Java 17, on the other hand, will be supported for eight years.
The open-source implementation of Java 17, OpenJDK 17, has also been rolled out. This is licensed under the Gnu Public License, version 2 (GPLv2). Oracle JDK 17 and future JDK releases, however, are provided under Oracle’s No-Fee Terms and Conditions (NFTC) license. This is a free-to-use license for Java 17. It remains in effect for a full year after the next LTS release. After that, Java 17 will be under the Oracle Technology Network License. Neither of these are, strictly speaking, open-source licenses.
Nonetheless, some see advantages to this new licensing arrangement. Arnal Dayaratna, IDC’s research VP of Software Development said it’s a “new, more relaxed license that provides free production use of Oracle JDK for an extended time.”
Oracle also wants to speed up the LTS process. If Oracle gets its wish, the next LTS version will be Java 21 in September 2023. The company has been working with the Java developer community and the Java Community Process (JCP) to change the LTS release cadence from three years to two years.
Why? Georges Saab, Oracle Java Platform Group VP of development, explained, “Over the last three years we’ve heard how much developers love the latest features, and we’ve seen the ecosystem truly embrace the six-month release cadence. One of the biggest challenges Java developers face today is that their organization only allows them to use the latest LTS release. By moving LTS releases to every two years, developers that are with conservative organizations now have more choice and access to the features that they love and want to use.”
In addition, Oracle promises that Oracle LTS and Java SE Subscription customers get security, performance, and bug-fix updates for Java 17 through at least September 2029.
Technically, the new cup of Java includes thousands of performance, stability, and security updates. It also comes with 14 JEPs (JDK Enhancement Proposals). These are Java language and platform improvements meant to help developers be more productive.
Perhaps the most noticeable change, however, is not an improvement or addition, but a subtraction. The Java Applet application programming interface (API), which has been in Java almost since day one, is finally gone. The applet browser plug-in had already been removed in JDK 11. The Java Applet, while popular in its day, had been notoriously insecure. Now its last traces are almost gone. In Java 17 it’s been deprecated, but it won’t actually be removed until a later version.
Thinking of improving security, with JEP 403: Java finally strongly encapsulates JDK internals. You used to be able to relax the strong encapsulation of internal elements via a single command-line option. This led to all kinds of security problems and holes. It’s still possible to access existing internal APIs, via sun.misc.Unsafe but you’ll now need to enumerate, as command-line parameters or JAR-file manifest attributes, each package for which encapsulation should be relaxed. In other words, you can no longer simply allow “anything goes” access to internal elements.
Oracle also hopes that Java will be used more often in the cloud. To accelerate Java cloud adoption, Oracle recently introduced the Oracle Java Management Service. This is a new Oracle Cloud Infrastructure (OCI)-native service to help organizations manage Java runtimes and applications on-premises or on any cloud. This spans all of the Java versions installed in their environment, including versions of Java running in development and in production. It also highlights any unplanned Java applications running and checks if all installed Java versions are up to date with the latest security patches.
It’s not just about getting Java in the cloud; Oracle has also added improvements to make Java more Mac-friendly. This includes JEP 382, a new macOS Rendering Pipeline, and support for the new Apple M1 processor.
While many developers make fun of Java, the simple truth is businesses still depend on it and developers still use it. In the most recent Red Monk language survey, Java is back in second place as the most used language.
It’s not just old-school Java that’s improving and gaining developers. Jakarta EE, Java’s enterprise edition (EE), which is now managed by the Eclipse Foundation is also gaining popularity. “Since the ‘big bang’ move to the Jakarta namespace with Jakarta EE 9, enterprise Java has been experiencing something of a renaissance,” said Mike Milinkovich, the Eclipse Foundation executive director. “With the plan for Jakarta EE 10 already formalized and the continued growth in the use of Jakarta EE 9, the cloud-native future of open-source enterprise Java has never looked brighter.”
Milinkovich isn’t wrong.