エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

【Java】Java15先取り調査 JEP一覧と概要

一覧

  • 339: Edwards-Curve Digital Signature Algorithm (EdDSA)
  • 360: Sealed Classes (Preview)
  • 371: Hidden Classes
  • 372: Remove the Nashorn JavaScript Engine
  • 373: Reimplement the Legacy DatagramSocket API
  • 374: Disable and Deprecate Biased Locking
  • 375: Pattern Matching for instanceof (Second Preview)
  • 377: ZGC: A Scalable Low-Latency Garbage Collector
  • 378: Text Blocks
  • 379: Shenandoah: A Low-Pause-Time Garbage Collector
  • 381: Remove the Solaris and SPARC Ports
  • 383: Foreign-Memory Access API (Second Incubator)
  • 384: Records (Second Preview)
  • 385: Deprecate RMI Activation for Removal

結構多いな。。。

各JEPのサマリ翻訳

Google翻訳先生、出番です!

339: Edwards-Curve Digital Signature Algorithm (EdDSA)

RFC-8032に記載されている、エドワーズ曲線デジタル署名アルゴリズムを使用した暗号化署名を実装する。

JEP 339: Edwards-Curve Digital Signature Algorithm (EdDSA)

参考リンク

RFC-8032について、分かりやすそうな翻訳サイトがあったのでリンク貼っておく。 RFC翻訳: Edwards-Curve Digital Signature Algorithm (EdDSA) - MOXBOX

雑記

一瞬、ハガレン?って思ってしまいました。
よく考えたら、エドワードの綴って、Edwardだから、sが多いね。。。

360: Sealed Classes (Preview)

密着したクラスとインタフェースをJava言語に提供する。
密着したクラスとインタフェースは、拡張や実装を他クラスに制限することができる。

JEP 360: Sealed Classes (Preview)

雑記

つまり、どういうことだってばよ?
あとで、詳しく調査

371: Hidden Classes

他のクラスのバイトコードから直接使用できないクラスである隠しクラスを導入します。 非表示のクラスは、実行時にクラスを生成し、リフレクションを介してそれらを間接的に使用するフレームワークによる使用を目的としています。 隠しクラスは、アクセス制御ネストのメンバーとして定義でき、他のクラスとは無関係にアンロードできます。

JEP 371: Hidden Classes

雑記

翻訳をそのまま貼り付けた。。。
なんとなくだが、通常ではアクセスできないクラス昨日を提供するみたいだね。
Privateな内部クラスとは、違ったやつなのかな?
どういうシーンで必要になるのか、まだ理解できてない。

372: Remove the Nashorn JavaScript Engine

Nashorn のJavaScriptエンジン、API、jjsツールを削除する。
これらは、Java11でアナウンスしているので削除する。

JEP 372: Remove the Nashorn JavaScript Engine

雑記

さすがに、これはタイトルだけで分かった。

373: Reimplement the Legacy DatagramSocket API

java.net.DatagramSocket、java.net.MulticastSocket APIの実装を、保守およびデバッグが容易で、よりシンプルでより最新の実装に置き換える。 新しい実装は、現在Project Loomで検討されている仮想スレッドでの作業に簡単にさせる。
レガシーソケットAPIをすでに再実装したJEP 353の続きです。

JEP 373: Reimplement the Legacy DatagramSocket API

雑記

内部の動きだけ変える感じかな?
外部の振る舞いは変えないだろうから、使う側としては概要だけ知ってれば良さそう。

374: Disable and Deprecate Biased Locking

デフォルトのバイアスロックを無効にし、関連するすべてのコマンドラインオプションを廃止します。

JEP 374: Disable and Deprecate Biased Locking

雑記

javaコマンドのオプションかな?
あんまり、コマンド叩いたりしないから、ここらへんの知識は疎い。。。

375: Pattern Matching for instanceof (Second Preview)

instanceof演算子のパターンマッチングで、Javaプログラミング言語を拡張する。
プログラム内の一般的なロジックである条件付き抽出をより簡潔かつ安全に表現できる。
これは、JDK 15のプレビュー言語機能です。

JEP 375: Pattern Matching for instanceof (Second Preview)

雑記

来たな、パターンマッチの対応が。
プレビューだけど、適用されれば使えると思うので、早めにキャッチアップしておきたい。

377: ZGC: A Scalable Low-Latency Garbage Collector

Z Garbage Collectorを試験的な機能から製品の機能に変更します。

JEP 377: ZGC: A Scalable Low-Latency Garbage Collector (Production)

雑記

たしか、オラクルが開発したGCだっけ?
停止時間をかなり短くしたような話を聞いたような気がする。

378: Text Blocks

Java言語にテキストブロックを追加します。 テキストブロックは複数行の文字列リテラルであり、ほとんどのエスケープシーケンスの必要性を回避し、予測可能な方法で文字列を自動的にフォーマットし、必要に応じて開発者がフォーマットを制御できるようにします。

JEP 378: Text Blocks

雑記

ここら辺は、予習済みだから、サマリだけで内容は分かる。 過去調べたリンクを貼っておく

suzaku-tec.hatenadiary.jp

suzaku-tec.hatenadiary.jp

利用用途は、たぶん、SQLのベタ書きが多いんじゃないかと思う。
あとは、テンプレート的なものを作りたいとか。

379: Shenandoah: A Low-Pause-Time Garbage Collector

Shenandoahガベージコレクターを実験的な機能から製品の機能に変更します。

JEP 379: Shenandoah: A Low-Pause-Time Garbage Collector (Production)

雑記

何か聞いた気がするのだが、どんなやつだったか忘れた。
GC周りは、あんまり気にしたことがないから、頭に入ってこないんだよね。。。

381: Remove the Solaris and SPARC Ports

ソースコードを削除し、Solaris / SPARCSolaris / x64、およびLinux / SPARCポートのサポートを構築します。 これらのポートは、将来のリリースで削除することを明確に意図して、JDK 14で非推奨になりました。

JEP 381: Remove the Solaris and SPARC Ports

雑記

たしかに非推奨になったのは見た気がする。
当時は、使ってなかったので、ふ~ん程度に考えていた。
今回、deplicateになったやつが削除されるjepが多いな。

383: Foreign-Memory Access API (Second Incubator)

JavaプログラムがJavaヒープ外の外部メモリに安全かつ効率的にアクセスできるようにするAPIを導入します。

JEP 383: Foreign-Memory Access API (Second Incubator)

雑記

概要だけだとよく分からんな。。。
あんまり、メモリを気にしない種族にとっては、スルーしちゃう内容かも。

384: Records (Second Preview)

不変データの透過的なキャリアとして機能するクラスであるレコードを使用して、Javaプログラミング言語を拡張します。 レコードは、名目上のタプルと考えることができます。

JEP 384: Records (Second Preview)

雑記

first previewのときに調べたな。
継続して調べるつもり

suzaku-tec.hatenadiary.jp

385: Deprecate RMI Activation for Removal

今後の削除のためにRMIアクティベーションカニズムを非推奨にします。 RMIアクティベーションは、Java 8以降オプションであったRMIの廃止された部分です。RMIの他の部分は廃止されません。

JEP 385: Deprecate RMI Activation for Removal

雑記

RMIアクティベーションなんて、存在すら知らなかった恥男がここに居ます。

全体通して

deprecateになったやつが、なんやかんやで残るのが常だったけど、ちゃんと削除されるんだな。
計画的にdeprecateを排除する必要があり、最新バージョンを使わなくても内容は追わないとダメだね。

deprecateの綴りを記事途中で間違えている気がしないでもない。

開発者としてキャッチアップしておかないといけないのは、JEP360, JEP375, JEP378, JEP384あたりだろうか?
今回リリースされるJEPが、かなり多い気がする。