JDK

Java 17の新機能(1)

Java 17がリリースされました。今回リリースされたJava 17はLTS(Long Term Support)版です。主な変更点を紹介していきます。

JEP 306: 常時厳密性を維持する浮動小数点セマンティクス復活

浮動小数点数の計算でオーバーフロー等が起こる場合に,CPUによって計算結果が異なってしまう現象を避けるために,常にIEEEの規格に準拠した計算を行うようにするものである。この問題が発生するのは,SSE2命令セットをサポートしていないCPU(Pentium Ⅲ以前)のマシンということなので,影響を受ける環境は少ないと思われる。

JEP 356: 疑似乱数生成器の拡張

PRNGという新たな疑似乱数生成器を導入し,既存の乱数生成器も含めて統一的なインタフェースを提供する。java.util.random.RandomGeneratorというインタフェースが導入されている。さらにこれを継承したSplittableRandomGeneratorJumpableRandomGeneratorLeapableRandomGeneratorArbitrarilyJumpableRandomGeneratorStreamableGeneratorというインタフェースが提供されている。

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を利用することが不可能となっている。