OpenJDK 15 は、Final Release Candidate が出ており、2020/9/15 に GA となる予定です。もう間も無くですね。
どんな機能が入るのか、ざっと紹介しておきます。
Java 15 新機能一覧
- JEP 339: Edwards-Curve Digital Signature Algorithm (EdDSA)
- OpenSSH の ed25519 鍵などでも用いられている エドワーズ曲線デジタル署名アルゴリズム (EdDSA) が導入されるようです
- TLS 1.3 でも EdDSA 証明書が使えるようになっているので、そういった局面でも使えそうです
- JEP 360: Sealed Classes (Preview)
- いよいよ sealed クラスが Preview です
- クラスの継承、インターフェースの実装を制限する機能ですが、record との組み合わせが強力です
- JEP 371: Hidden Classes
- ライブラリの内部用のクラスを外部からきっちり隠蔽して、予期せず直接利用されることを防ぐ機構です
- JEP 372: Remove the Nashorn JavaScript Engine
- JEP 335 (Java 11) から非推奨とされていた Nashorn JavaScript Engine がいよいよ削除されます
- ECMAScript 仕様の変更が早すぎてついていけなくなったかららしく……
- これからはGraalJSを使え、とのことですが、アーキテクチャ大きく変わる気がします
- JEP 373: Reimplement the Legacy DatagramSocket API
- JDK 1.0/1.1 時代からの実装が残っていた領域だそうで、大幅書き直しとのこと
- JEP 374: Disable and Deprecate Biased Locking
- バイアスロック機構を無効化します
- バイアスロックは Hashtable, Vector などの Java 初期の頃の同期化コレクション向けの機構で、イマドキのアプリケーションでは邪魔でしかなく、今回の無効化で性能が向上する可能性があります
- JEP 375: Pattern Matching for instanceof (Second Preview)
- JEP 305 (Java 14) で Preview として入っていましたが、変更無しで再プレビューし、もっとフィードバックを集めるとのことです
- JEP 377: ZGC: A Scalable Low-Latency Garbage Collector
- ZGC は JEP 333 (Java 11) で Linux(x64) 用に、JEP 364, 365 (Java 14) で macOS/Windows 用に Experimental 版が入っていましたが、ついに Production 版になります
- Linux(Aarch64) 用が出来て、テストも OK、といったところのようです
- JEP 378: Text Blocks
- JEP 368 (Java 14) で Second Preview となっていましたが、今回リリースです
- JEP 379: Shenandoah: A Low-Pause-Time Garbage Collector
- Shenandoah GC もリリースです
- 高スループットなら G1 GC、低レイテンシなら ZGC か Shenandoah GC という新時代に突入ですね
- JEP 381: Remove the Solaris and SPARC Ports
- JEP 362 (Java 14) で予告されていましたが、ついに消えます
- Solaris/SPARC, Solaris/x64, Linux/SPARC が消えます
- 時代ですね……
- JEP 383: Foreign-Memory Access API (Second Incubator)
- JEP 370 (Java 14) で Incubator 版でしたが、今回 Second Incubator とのこと
- JEP 384: Records (Second Preview)
- JEP 359 (Java 14) で Preview だった record が Second Preview へ進んでいます
- ローカルレコードなど、機能追加があるようです
- JEP 385: Deprecate RMI Activation for Removal
- RMI Activation を廃止に向けて非推奨にするとのこと
- RMI Activation を除く RMI は残るそうです
- RMI は昔使っていましたが、RMI Activation が何のことか分かりません
- きっと何の影響もないのでしょう……