JDK 17: New Features in Java 17

  • Always strong floating point semantics





  • API of third party functions and memory





  • Unified API for pseudo-random number generators





Java 17, due out in September, continues to take shape, with nine features planned for an upgrade to standard Java, and two features are being removed and two features are no longer supported. The latest changes, as of May 24, added pattern matching for switch expressions and restored the always strong floating point semantics.





Java Development Kit (JDK) 17 will be a Long Term Support (LTS) release, with extended support for Oracle expected over several years. Features introduced as part of OpenJDK's JDK 17 include the following:





  • With restoring always strong floating point semantics, floating point operations will be permanently strict, instead of having both strict floating point semantics (strictfp) and slightly different default floating point semantics. This restores the original floating point semantics for the language and virtual machine, matching the semantics prior to the introduction of strong and floating point modes by default in Java Standard Edition 1.2. The goals of this cost include to facilitate the development of numeric-sensitive libraries, including java.lang.Math and java.lang.StrictMath. The incentive to change the default floating point semantics in the late 1990s. was caused by poor interaction between the original Java language and JVM semantics, as well as some peculiarities of the x87 floating point coprocessor instruction set of the popular x86 architecture.Matching exact floating point semantics in all cases, including subnormal operands and results, required a large overhead of additional instructions. Comparison of results without overflow or underflow can be done with less overhead, which is about what the revised default floating point semantics introduced in Java SE 1.2 allows. But the Streaming SIMD Extensions 2 (SSE2) shipped in Pentium 4 and later processors starting around 2001 were able to directly support the JVM's strict floating point operations without excessive overhead. Since Intel and AMD support SSE2 and later extensions, which allow native support for strong floating point semantics,the technical motivation for using default floating point semantics other than strict is no longer there.





  • Security Manager, . Java 1.0, Security Manager Java . - , API , Security Manager, , System::exit. Security Manager Applet API, JDK 17.





  • switch Java, switch , . , . switch case, switch : , , . JDK 16 instanceof , . instanceof-and-cast.





  • JDK, API, misc.unsafe, , JDK 9 - JDK 16. JDK, API.





  • (RMI) RMI. RMI , JDK 15.





  • API , , Java Java. , .. JVM, , .. , JVM, API Java JNI (Java Native Interface). API API - API API . API Java 14 2019 API Java 15 Java 16. API Java 16 API 2020 . API , , .





  • JDK 16 API, vector API JDK 17, , . , . JDK 17 vector API , .





  • , . , , , , , .





  • AOT JIT, , . JVM Java, JIT-. AOT ( jaotc) JDK 9 . Graal, Java, AOT. JDK 16, Oracle, . , JDK : jdk.aot ( jaotc); internal.vm.compiler, Graal; jdk.internal.vm.compiler.management, MBean Graal. HotSpot, AOT.





  • JDK MacOS / AArch64 Apple Macintosh x64 AArch64. AArch64 Java Linux, Windows. Java AArch64 , , JDK, , . MacOS / AArch64 Linux / AArch64, Windows / AArch64 MacOS / x64, .





  • Applet API . API , - Java, . Applet API , Java 9 2017 .





  • MacOS, Apple Metal API , API OpenGL. Java 2D API, MacOS Metal, , Apple OpenGL API MacOS. , OpenGL, , . , 2D- Java. OpenGL , . - API- Java JDK.





  • , (PRNG), PRNG PRNG (LXM). RandomGenerator API PRNG. RandomGenerator. - Java. PRNG. , . :





    • PRNG .





    • Improved support for streaming programming providing streams of PRNG objects.





    • Eliminate code duplication in existing PRNG classes.





    • Preserving the existing behavior of the java.util.Random class.





JDK 17 is slated to go public on September 14th. The production release will be preceded by roll-out phases in June and July, and the release of candidates in August. Open source early access JDK 17 builds can be found at jdk.java.net .





LTS releases like JDK 17 appear every three years. The latest LTS release, JDK 11, was published in September 2018. New versions of Java appear every six months.








All Articles