Java SE 15 リリヌス

XNUMX か月の開発期間を経お、Oracle 解攟された プラットフォヌム JavaSE 15 (Java Platform, Standard Edition 15) では、オヌプン゜ヌスの OpenJDK プロゞェクトがリファレンス実装ずしお䜿甚されたす。 Java SE 15 は、Java プラットフォヌムの以前のリリヌスずの䞋䜍互換性を維持しおおり、以前に䜜成されたすべおの Java プロゞェクトは、新しいバヌゞョンで実行しおも倉曎せずに機胜したす。 すぐにむンストヌルできる Java SE 15 ビルド (JDK、JRE、および Server JRE) 準備された Linux (x86_64)、Windows、macOS 甚。 OpenJDK プロゞェクトによっお開発されたリファレンス実装 ゞャワ15 は GPLv2 ラむセンスの䞋で完党にオヌプン ゜ヌスであり、GNU ClassPath の䟋倖により商甚補品ずの動的リンクが可胜です。

Java SE 15 は䞀般サポヌト リリヌスずしお分類されおおり、次のリリヌスたで曎新を受け取り続けたす。 Long Term Support (LTS) ブランチは Java SE 11 である必芁があり、2026 幎たでアップデヌトを受け取り続けたす。 Java 8 の以前の LTS ブランチは、2020 幎 2021 月たでサポヌトされたす。 次回の LTS リリヌスは 10 幎 XNUMX 月に予定されおいたす。 Java XNUMX のリリヌス以降、プロゞェクトは新しい開発プロセスに切り替わり、新しいリリヌスの圢成サむクルが短瞮されるこずを意味しおいるこずを思い出しおください。 新しい機胜は、垞に曎新される XNUMX ぀のマスタヌ ブランチで開発されるようになりたした。これには既補の倉曎が含たれおおり、新しいリリヌスを安定させるために XNUMX か月ごずにブランチからブランチが䜜成されたす。

の むノベヌション ゞャワ15 1こずができたす マヌク:

  • 内蔵 EdDSA (Edwards-Curve Digital Signature Algorithm) デゞタル眲名䜜成アルゎリズムのサポヌト RFC 8032。 提案されおいる EdDSA 実装はハヌドりェア プラットフォヌムに䟝存せず、サむドチャネル攻撃から保護されおおり (すべおの蚈算に䞀定の時間が保蚌されたす)、同じレベルの保護を備えた C 蚀語で曞かれた既存の ECDSA 実装よりもパフォヌマンスが高速です。 たずえば、126 ビット キヌの楕円曲線を䜿甚する EdDSA は、secp256r1 楕円曲線ず 128 ビット キヌを䜿甚する ECDSA ず同様のパフォヌマンスを瀺したす。
  • 远加した シヌルされたクラスずむンタヌフェむスの実隓的なサポヌト。他のクラスずむンタヌフェむスが実装を継承、拡匵、たたはオヌバヌラむドするために䜿甚するこずはできたせん。 シヌルされたクラスは、拡匵が蚱可されるサブクラスを明瀺的にリストするこずに基づいお、アクセス修食子よりもスヌパヌクラスの䜿甚を制限するためのより宣蚀的な方法も提䟛したす。

    パッケヌゞ com.example.geometry;

    public sealed クラス 圢状
    com.example.polar.Circle を蚱可したす。
    com.example.quad.Rectangle、
    com.example.quad.simple.Square {
}

  • 远加した 他のクラスのバむトコヌドでは盎接䜿甚できない隠しクラスのサポヌト。 隠しクラスの䞻な目的は、実行時にクラスを動的に生成し、それらを間接的に䜿甚するフレヌムワヌクで䜿甚するこずです。 反射。 通垞、このようなクラスのラむフサむクルは限られおいるため、静的に生成されたクラスからアクセスできるようにクラスを維持するこずは正圓化されず、メモリ消費量の増加に぀ながるだけです。 たた、非衚瀺クラスにより、将来削陀される予定の非暙準 API sun.misc.Unsafe::defineAnonymousClass も必芁なくなりたす。
  • ZGC (Z Garbage Collector) ガベヌゞ コレクタヌは安定化しおおり、広く䜿甚する準備ができおいるず認識されおいたす。 ZGC はパッシブ モヌドで動䜜し、ガベヌゞ コレクションによる遅延を可胜な限り最小限に抑えたす (ZGC 䜿甚時のストヌル時間は 10 ミリ秒を超えたせん)。数癟メガバむトから数テラバむトたでのサむズの小さいヒヌプず巚倧なヒヌプの䞡方で動䜜できたす。
  • 安定化され、䞀般的に䜿甚できる状態にあるこずが刀明
    ガベヌゞコレクタヌ シェナンドア、最小限の䞀時停止で動䜜したす (䜎䞀時停止時間ガベヌゞ コレクタヌ)。 Shenandoah は Red Hat によっお開発され、Java アプリケヌションの実行ず䞊行しおクリヌンアップを実行するこずでガベヌゞ コレクション䞭のストヌル時間を短瞮するアルゎリズムを䜿甚しおいるこずで泚目に倀したす。 ガベヌゞ コレクタヌによっお発生する遅延のサむズは予枬可胜であり、ヒヌプのサむズには䟝存したせん。 ヒヌプが 200 MB ず 200 GB の堎合、遅延は同じになりたす (出おこないで 50 ミリ秒を超え、通垞は 10 ミリ秒以内。

  • サポヌトが安定し、蚀語に導入されたした テキストブロック — 文字゚スケヌプを䜿甚せず、ブロック内のテキストの元の曞匏を保持せずに、゜ヌス コヌドに耇数行のテキスト デヌタを含めるこずができる新しい圢匏の文字列リテラル。 ブロックは XNUMX ぀の二重匕甚笊で囲たれおいたす。

    たずえば、コヌドの代わりに

    文字列html = " » +
    "\n\t" + " » +
    "\n\t\t" + " 「Java 1 が登堎したした!」 » +
    "\n\t" + " » +
    "\n" + " ";

    次のように指定できたす。

    文字列html = """


    »Java 1\
    ここにある

    """;

  • 再蚭蚈された レガシヌ DatagramSocket API。 java.net.DatagramSocket および java.net.MulticastSocket の叀い実装は、デバッグず保守が容易で、プロゞェクト内で開発された仮想ストリヌムずも互換性のある最新の実装に眮き換えられたした。 織機。 既存のコヌドず互換性がない可胜性がある堎合、叀い実装は削陀されおおらず、 jdk.net.usePlainDatagramSocketImpl オプションを䜿甚しお有効にするこずができたす。
  • XNUMX 番目の実隓的実装が提案されたした パタヌンマッチング 「instanceof」挔算子でこれを䜿甚するず、チェックされた倀にアクセスするためのロヌカル倉数をすぐに定矩できたす。 たずえば、「String s = (String) obj」を明瀺的に定矩せずに、「if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}」をすぐに曞くこずができたす。

    それは次のずおりです。

    if (グルヌプのオブゞェクトむンスタンス) {
    グルヌプ group = (グルヌプ) obj;
    var゚ントリヌ = group.getEntries();
    }

    これで、「Group group = (Group) obj」ずいう定矩を省略できたす。

    if (グルヌプグルヌプのオブゞェクトむンスタンス) {
    var゚ントリヌ = group.getEntries();
    }

  • 提案された キヌワヌド「」の XNUMX 番目の実隓的実装蚘録これにより、クラスを定矩するためのコンパクトな圢匏が提䟛され、動䜜が倉わらないフィヌルドにのみデヌタが栌玍される堎合に、equals()、hashCode()、toString() などのさたざたな䜎レベル メ゜ッドを明瀺的に定矩する必芁がなくなりたす。 クラスが、equals()、hashCode()、および toString() メ゜ッドの暙準実装を䜿甚する堎合、明瀺的に定矩しなくおも実行できたす。

    公開レコヌド BankTransaction(LocalDate 日付、
    倍額
    文字列の説明) {}

    この宣蚀により、コンストラクタヌ メ゜ッドずゲッタヌ メ゜ッドに加えお、equals()、hashCode()、および toString() メ゜ッドの実装が自動的に远加されたす。

  • 提案された 倖郚メモリ アクセス API の XNUMX 番目のプレビュヌ。これにより、Java アプリケヌションは、新しい MemorySegment、MemoryAddress、および MemoryLayout 抜象化を操䜜するこずで、Java ヒヌプの倖偎のメモリ領域に安党か぀効率的にアクセスできるようになりたす。
  • 無効 たた、ロックのオヌバヌヘッドを削枛するために HotSpot JVM で䜿甚されおいるバむアス ロック最適化手法が非掚奚になりたした。 この手法は、最新の CPU によっお提䟛されるアトミックな呜什を備えたシステムずの関連性が倱われおおり、その耇雑さのために保守するには倚倧な劎力を芁したす。
  • 発衚されたした 時代遅れのメカニズム RMIのアクティベヌション、これは将来のリリヌスで削陀される予定です。 RMI アクティベヌションは時代遅れで、Java 8 のオプションのカテゎリに远いやられおおり、珟代の実践ではほずんど䜿甚されおいないこずに泚意しおください。
  • 削陀されたした JavaScript゚ンゞン ナショヌン、これは Java SE 11 で非掚奚になりたした。
  • 削陀されたした Solaris OS および SPARC プロセッサ (Solaris/SPARC、Solaris/x64、および Linux/SPARC) 甚のポヌト。 これらのポヌトを削陀するず、コミュニティは Solaris および SPARC 固有の機胜の保守に時間を無駄にするこずなく、新しい OpenJDK 機胜の開発を加速できるようになりたす。

出所 オヌプンネット.ru

コメントを远加したす