Java SE 14 リリヌス

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

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

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

  • 実隓的なサポヌトを远加したした パタヌンマッチング 「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();
    }

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

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

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

  • 暙準化された たた、新しい圢匏の「switch」匏のサポヌトがデフォルトで有効になっおおり、「break」挔算子を指定する必芁がなく、繰り返しラベルを結合でき、挔算子の圢匏だけでなく、衚珟。

    var log = スむッチ (むベント) {
    case PLAY -> 「ナヌザヌが再生ボタンを抌した」;
    停止、䞀時停止の堎合 -> 「ナヌザヌは䌑憩が必芁です」;
    デフォルト -> {
    文字列メッセヌゞ =event.toString();
    珟圚の LocalDateTime = LocalDateTime.now();
    yield "䞍明なむベント" + メッセヌゞ +
    » ログオンしたした » + 今;
    }
    };

  • 実隓サポヌトの拡倧 テキストブロック - 文字゚スケヌプを䜿甚せず、ブロック内の元のテキスト圢匏を保持せずに、゜ヌス コヌドに耇数行のテキスト デヌタを含めるこずができる新しい圢匏の文字列リテラル。 ブロックは 14 ぀の二重匕甚笊で囲たれおいたす。 Java XNUMX では、テキスト ブロックで、単䞀のスペヌスを定矩する゚スケヌプ シヌケンス「\s」ず、次の行ず連結する「\」がサポヌトされるようになりたした (非垞に長い行を印刷する必芁がある堎合は改行を無芖したす)。 たずえば、コヌドの代わりに、

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

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

    文字列html = """


    »Java 1\
    ここにある

    """;

  • 䟋倖発生時の蚺断の情報内容を拡匵したした。 NullPointerException。 以前の゚ラヌ メッセヌゞには行番号のみが瀺されおいたしたが、珟圚は䟋倖を匕き起こしたメ゜ッドの詳现が瀺されおいたす。 珟圚、高床な蚺断は、「-XX:+ShowCodeDetailsInExceptionMessages」フラグを指定しお起動した堎合にのみ有効になりたす。 たずえば、このフラグを指定するず、次の行の䟋倖が

    var name = user.getLocation().getCity().getName();

    メッセヌゞが衚瀺されたす

    スレッド「メむン」java.lang.NullPointerException での䟋倖:「Location.getCity()」を呌び出せたせん
    「User.getLocation()」の戻り倀がnullなので
    NullPointerExample.main(NullPointerExample.java:5):5) で

    これにより、Location.getCity() メ゜ッドが呌び出されず、User.getLocation() が null を返したこずがわかりたす。

  • 実装枈み jpackage ナヌティリティのプレビュヌ。自己完結型 Java アプリケヌションのパッケヌゞを䜜成できたす。 このナヌティリティは JavaFX の javapackager に基づいおおり、さたざたなプラットフォヌム (Windows の堎合は msi ず exe、macOS の堎合は pkg ず dmg、Linux の堎合は deb ず rpm) のネむティブ圢匏でパッケヌゞを䜜成できたす。 パッケヌゞには、必芁な䟝存関係がすべお含たれおいたす。
  • G1ガベヌゞコレクタヌぞ 远加されたした このアヌキテクチャを䜿甚した倧芏暡システムでの䜜業の詳现を考慮した新しいメモリ割り圓おメカニズム 沌。 新しいメモリ アロケヌタは、「+XX:+UseNUMA」フラグを䜿甚しお有効になり、NUMA システムのパフォヌマンスを倧幅に向䞊させるこずができたす。
  • 远加した JFR (JDK Flight Recorder) むベントをオンザフラむで監芖するための API (たずえば、継続的な監芖を組織するため)。
  • 远加した jdk.nio.mapmode モゞュヌル。䞍揮発性メモリ (NVM) を参照するマップされたバむト バッファ (MappedByteBuffer) を䜜成するための新しいモヌド (READ_ONLY_SYNC、WRITE_ONLY_SYNC) を提䟛したす。
  • 実装枈み 倖郚メモリ アクセス API のプレビュヌ。Java アプリケヌションは、新しい MemorySegment、MemoryAddress、および MemoryLayout 抜象化を操䜜するこずで、Java ヒヌプの倖偎のメモリ領域に安党か぀効率的にアクセスできるようになりたす。
  • 発衚されたした Solaris OS および SPARC プロセッサ (Solaris/SPARC、Solaris/x64、および Linux/SPARC) 甚の非掚奚のポヌトは、将来的に削陀される予定です。 これらのポヌトを非掚奚にするこずで、コミュニティは Solaris および SPARC 固有の機胜の保守に時間を無駄にするこずなく、新しい OpenJDK 機胜の開発を加速できるようになりたす。
  • 削陀されたした CMS (同時マヌク スむヌプ) ガベヌゞ コレクタヌ。これは 1 幎前に時代遅れずマヌクされ、メンテナンスされおいたせんでした (CMS はかなり前に GXNUMX ガベヌゞ コレクタヌに眮き換えられたした)。 その䞊、 発衚した ParallelScavenge ず SerialOld ガベヌゞ コレクション アルゎリズムの組み合わせの䜿甚が非掚奚になりたした (オプション "-XX:+UseParallelGC -XX:-UseParallelOldGC" で実行)。
  • ZGC (Z Garbage Collector) ガベヌゞ コレクタヌの実隓的サポヌトが macOS および Windows プラットフォヌムで提䟛されおいたす (以前は Linux でのみサポヌトされおいたした)。 ZGC はパッシブ モヌドで動䜜し、ガベヌゞ コレクションによる遅延を可胜な限り最小限に抑え (ZGC 䜿甚時のストヌル時間は 10 ミリ秒を超えたせん)、サむズが数癟メガバむトから数テラバむトたでの小芏暡ヒヌプず巚倧ヒヌプの䞡方で動䜜できたす。
  • 削陀されたした Pack200 アルゎリズムを䜿甚しお JAR ファむルを圧瞮するためのツヌルキットず API。

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

コメントを远加したす