Oracle announces the release of Java 17
Oracle has announced the release of Java 17, the most recent version of the popular programming language and development platform. Java 17 includes hundreds of speed, stability, and security improvements, as well as 14 JEPs (JDK Enhancement Proposals) that help developers be more productive by improving the Java language and environment.
Java 17 is the most recent long-term support (LTS) version in Java’s six-month cycle, and it is the product of substantial collaboration between Oracle engineers and other members of the global Java developer community through the OpenJDK Community and the Java Community Process (JCP). Over 70 JEPs have been incorporated since the previous JDK 11 LTS release three years ago.
Offering a Simpler License
Oracle JDK 17 and subsequent JDK releases are available for free for a full year after the next LTS release. Oracle will continue to provide Oracle OpenJDK under the open-source General Public License (GPL), as it has done since 2017.
Enhancing Long-Term Support for Customers
Oracle is working with the Java developer community and the JCP to improve LTS scheduling so that businesses can choose when and if they want to upgrade to a newer Java LTS version. Oracle proposes that the next LTS release be Java 21, which would be released in September 2023, reducing the current LTS release cycle from three to two years.
Customers can move to Java 17 at their own pace, thanks to Oracle LTS and Java SE Subscription support. According to Oracle, customers will receive security, performance, and bug-fix upgrades for Java 17 until at least September 2029.
“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,” said Georges Saab, vice president of development, Java Platform Group, Oracle.
Further shared, “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.”
“Oracle is making changes that will significantly benefit the Java community by shifting the long-term support releases to a two-year cadence and introducing a new, more relaxed license that provides free production use of Oracle JDK for an extended time,” said Dr. Arnal Dayaratna, research vice president, Software Development at IDC.
Also said, “These changes will give organizations greater flexibility in managing the complexity of modern application development and deployments in the cloud, on-premises, and in hybrid environments.”
Accelerating Java’s Adoption in the Cloud
Java is one of the most popular programming platforms ever, and it’s based on continual innovation to meet developers’ changing needs. Oracle has announced the Oracle Java Management Solution, a new Oracle Cloud Infrastructure (OCI)-native service that will assist enterprises in managing Java runtimes and applications on-premises or in any cloud.
Java Management Service provides businesses with enterprise-wide visibility into their Java deployments. This includes all Java versions installed in their environment, including development and production versions of Java. It also detects any unintentionally running Java apps and verifies that all Java versions are up to date with the current security updates.
JDK 17 provides new language enhancements, library updates, support for new Apple computers, legacy feature removals and deprecations, and work to assure that Java code created today will continue to operate in future JDK versions without change. It also provides a language feature preview and incubation APIs for the Java community to provide comments. The following are some of the new features:
Java Language Enhancement
- JEP 409: Sealed Classes – Other classes and interfaces are not allowed to extend or implement sealed classes and interfaces. Project Amber’s goal is to improve developer productivity by developing the Java language, and this innovation is another step in that direction.
Updates and Improvements to Libraries
- JEP 306: Restore Always-Strict Floating-Point Semantics – The Java programming language and virtual machine were designed with tight floating-point semantics from the start. Small deviations in those tight semantics were allowed by default starting in Java 1.2 to accommodate restrictions of then-current hardware architectures. JEP 306 has deleted certain variations since they are no longer useful or necessary.
- JEP 356: Enhanced Pseudo-Random Number Generator – Pseudorandom number generators now have additional interface types and implementations (PRNGs). This update enhances PRNG compatibility and makes it easier to request an algorithm based on requirements rather than hard-coding a single implementation.
- JEP 382: New macOS Rendering Pipeline – Uses the Apple Metal API to implement a Java 2D pipeline for macOS. The JDK’s reliance on the deprecated Apple OpenGL API will be reduced thanks to the new pipeline.
New Platform Support
- JEP 391: macOS AArch64 Port – The JDK is ported to the macOS/AArch64 platform. Java apps will be able to operate natively on Apple’s new Arm 64-based Silicon computers thanks to this port.
Removals and Deprecations
- JEP 398: Deprecate the Applet API for Removal — All online browser vendors have either eliminated or announced plans to discontinue support for Java browser plug-ins. In September 2017, the Applet API was deprecated, though not for elimination, in Java 9.
- JEP 407: Remove RMI Activation — Disables the Remote Method Invocation (RMI) Activation mechanism while keeping the remainder of RMI functional.
- JEP 410: Remove the Experimental AOT and JIT Compiler – The Java-based ahead-of-time (AOT) and just-in-time (JIT) compilers were experimental technologies that were not widely adopted. They were already eliminated from JDK 16 because they were optional. These components are removed from the JDK source code by this JEP.
- JEP 411: Deprecate the Security Manager for Removal – The Security Manager has been around since Java 1.0. It has not been the primary method of securing client-side Java code for many years, and it is rarely used to secure server-side code. Its removal in a future release will relieve a huge maintenance burden and allow the Java platform to progress.
Future Proofing Java Programs
- JEP 403: Strongly Encapsulate JDK Internals – As in JDK 9 through JDK 16, it will no longer be feasible to relax the robust encapsulation of internal elements with a single command-line parameter. Existing internal APIs will still be accessible, however enumerating each package for which encapsulation should be relaxed will be required as command-line options or JAR-file manifest properties. This update will result in better secure apps and fewer reliances on internal JDK implementation features that aren’t standard.
Previews and Incubators for Later JDK Releases
- JEP 406: Pattern Matching for switch (Preview) — Allows an expression to be checked against a number of patterns, each of which has a different action, allowing sophisticated data-oriented searches to be represented clearly and safely.
- JEP 412: Foreign Function and Memory API (Incubator) – Improves the JDK 14 and JDK 15 incubation APIs, which allow Java programmes to interact with code and data outside of the Java runtime. These APIs enable Java programmes to call native libraries and process native data without the brittleness and complexity of Java Native Interfaces by effectively executing foreign functions (i.e., code outside the JVM) and safely accessing foreign memory (JNI). Project Panama is working on these APIs in order to improve the interaction between Java and non-Java code.
- JEP 414: Vector API (Second Incubator) – Allows vector computations to be expressed in a way that compiles to optimised vector instructions at runtime on supported CPU architectures, resulting in superior performance than equivalent scalar computations.