Java 17がリリースされました。今回リリースされたJava 17はLTS(Long Term Support)版です。主な変更点を紹介していきます。
JEP 306: 常時厳密性を維持する浮動小数点セマンティクス復活
浮動小数点数の計算でオーバーフロー等が起こる場合に,CPUによって計算結果が異なってしまう現象を避けるために,常にIEEEの規格に準拠した計算を行うようにするものである。この問題が発生するのは,SSE2命令セットをサポートしていないCPU(Pentium Ⅲ以前)のマシンということなので,影響を受ける環境は少ないと思われる。
JEP 356: 疑似乱数生成器の拡張
PRNGという新たな疑似乱数生成器を導入し,既存の乱数生成器も含めて統一的なインタフェースを提供する。java.util.random.RandomGeneratorというインタフェースが導入されている。さらにこれを継承したSplittableRandomGenerator,JumpableRandomGenerator,LeapableRandomGenerator,ArbitrarilyJumpableRandomGenerator,StreamableGeneratorというインタフェースが提供されている。
JEP 382: 新macOSのレンダリングパイプライン
新しいmacOSのグラフィックAPIであるMetalに対応させたものである。
JEP 391: macOS/AArch64 Port
Appleがx64アーキテクチャからAArch64への移行を進めていることに対応して,AArch64へ対応するためのものである。
JEP 398: Applet API削除への非推奨
Java AppletのAPIが非推奨となりました。以下のクラス/インタフェースを使用するとコンパイラが警告を出すようになっている。
- java.applet.Applet
- java.applet.AppletStub
- java.applet.AppletContext
- java.applet.AudioClip
- javax.swing.JApplet
- java.beans.AppletInitializer
JEP 403: JDK内部のカプセル化を強化
--illegal-access
オプションによって可能であったJDK内部のAPIを利用することが不可能となっている。