Misc.

This chapter discusses miscellaneous changes.

Restore Always-Strict Floating-Point Semantics

Starting from Java SE 1.2, there are two floating-point modes in Java: the default and strict floating-point modes. To use strict floating-point mode, strictfp should be used.

In Java 17 (JEP 306), the default floating-point mode is removed. Now strict floating-point mode is always used. strictfp is no longer required.

macOS/AArch64 Port

This is introduced in Java 17 by JEP 391.

JDK has been ported to macOS on AArch64.

Alpine Linux Port

This is introduced in Java 16 by JEP 386.

JDK has been ported to Alpine Linux, and other Linux distributions that use musl as their primary C library, on both the x64 and AArch64 architectures.

Strongly Encapsulate JDK Internals

With the introduction of Java Platform Module System in Java 9, JDK internals are supposed to be encapsulated. However, many libraries that rely on JDK internal APIs may stop working if those APIs are encapsulated. To facilitate the migration, JDK 6 to JDK 15 allows access to those APIs with warnings printed in the console.

In Java 16 (JEP 396), the strong encapsulation has been enabled by default by setting the default value of --illegal-access option to deny. However, it’s still possible to override this behavior by specifying the permit as the value of --illegal-access option.

In Java 17 (JEP 403), it’s no longer possible to relax the strong encapsulation of internal elements using --illegal-access option.

Critical APIs in sun.misc and sun.reflect packages are still open.

Migrate to GitHub

OpenJDK’s source code has been migrated to GitHub.