2020/08/31

Java 15 そろそろ来ますね

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 が何のことか分かりません
    • きっと何の影響もないのでしょう……