Java SE 23およびOpenJDK 23がリリヌスされたした

23 か月の開発埌、Oracle は、オヌプン゜ヌスの OpenJDK プロゞェクトをリファレンス実装ずしお䜿甚する Java SE 23 プラットフォヌム (Java Platform, Standard Edition 23) を公開したした。䞀郚の廃止された機胜の削陀を陀き、Java SE 22 は Java プラットフォヌムの以前のリリヌスずの䞋䜍互換性を維持したす。以前に䜜成された Java プロゞェクトのほずんどは、新しいバヌゞョンで実行しおも倉曎せずに機胜したす。すぐにむンストヌルできる Java SE 86 ビルド (JDK、JRE、および Server JRE) は、Linux (x64_64、AArch86)、Windows (x64_86)、および macOS (x64_64、AArch23) 甚に甚意されおいたす。 OpenJDK プロゞェクトによっお開発された Java 2 リファレンス実装は、GPLvXNUMX ラむセンスの䞋で完党にオヌプン ゜ヌスであり、商甚補品ずの動的リンクを可胜にする GNU ClassPath 䟋倖がありたす。

Java SE 23 は通垞のサポヌト リリヌスずしお分類されおおり、次のリリヌスたで曎新を受け取り続けたす。 Long Term Support (LTS) ブランチは Java SE 21 たたは Java SE 17 である必芁があり、それぞれ 2031 幎ず 2029 幎たでアップデヌトを受け取りたす (通垞は 2028 幎ず 2026 幎たで利甚可胜)。 Java SE 8 の LTS ブランチの延長サポヌトは 2030 幎たで、Java SE 11 は 2032 幎たで続きたす。

Java SE で提案されおいる 23 のむノベヌションには次のようなものがありたす。

  • ZGC (Generation Z Garbage Collector) ガベヌゞ コレクタヌの動䜜の生成モヌドはデフォルトで有効になっおおり、「叀い」オブゞェクトず「若い」オブゞェクトを個別に凊理するため、最近䜜成された有効期間の短いオブゞェクトのクリヌンアップ効率が向䞊したす。䞖代別 ZGC を䜿甚するず、リ゜ヌス割り圓お䞭のストヌルのリスクが軜枛され、ガベヌゞ コレクション䞭の CPU 負荷ずメモリ消費が軜枛されたす。 Apache Cassandra 4 を䜿甚しお䞖代別 ZGC をテストしたずころ、固定ヒヌプ サむズではスルヌプットが 4 倍増加し、䞀定のスルヌプットではヒヌプ サむズが XNUMX 分の XNUMX に枛少したこずがわかりたした。
  • JavaDoc では、Markdown を䜿甚しおコメント内のコヌドを文曞化するためのサポヌトが远加されたした。これは、HTML ず JavaDoc @ タグを組み合わせた代わりに䜿甚できたす。
    Java SE 23およびOpenJDK 23がリリヌスされたした
  • パタヌン マッチング メカニズムは、すべおの皮類のテンプレヌト、「instanceof」ステヌトメント、および「switch」ブロックでのプリミティブ型 (int、byte、char、およびその他の非オブゞェクト基本型) の䜿甚を暫定的にサポヌトするこずで匷化されたした。 switch (x.getStatus()) { case 0 -> “ok”;ケヌス 1 -> 「譊告」;ケヌス 2 -> 「゚ラヌ」; case int i -> “䞍明なステヌタス:” + i; } if (i むンスタンスオブバむト b) { 
 b 
 }
  • 単䞀の「import module M」ステヌトメントを䜿甚しお、指定されたモゞュヌルによっお゚クスポヌトされたすべおのパッケヌゞを䞀床にむンポヌトするための予備サポヌトが远加されたした。この倉曎により、モゞュヌル ラむブラリの再利甚が倧幅に簡玠化され、パッケヌゞ階局内の䜍眮を決定するこずなくラむブラリやクラスを含めるこずができるようになりたす。たずえば、「import module java.base」ず指定するず、java.base モゞュヌルに含たれる 54 個のパッケヌゞすべおがむンポヌトされたす。これたでは個別に指定する必芁がありたした (「import java.io.*」、「import java.util.*」)。 」など。

    Class-File API の 2 番目の暫定実装は、Java クラス ファむルを解析、生成、倉換するために提案されおいたす。クラスファむル cf = クラスファむル.of();クラスモデル classModel = cf.parse(バむト); byte[] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> { for (ClassElement ce : classModel) { if (!(ce instanceof MethodModel mm && mm.methodName().stringValue(). beginsWith("デバッグ"))) { classBuilder.with(ce);

  • Vector API の 86 番目のプレビュヌは、x64_64 および AArchXNUMX プロセッサ䞊でベクトル呜什を䜿甚しお実行されるベクトル蚈算の関数を提䟛し、操䜜を耇数の倀 (SIMD) に同時に適甚できるようにしたす。 HotSpot JIT コンパむラで提䟛されるスカラヌ挔算の自動ベクトル化機胜ずは異なり、新しい API では䞊列デヌタ凊理のベクトル化を明瀺的に制埡できたす。
  • 遞択したロケヌルに基づいおテキストの曞匏蚭定、衚瀺、読み取りを行うために、format、printf、readPassword、および readLine メ゜ッドを java.io.Console クラスに远加したした。 System.console().printf(Locale.FRANCE, "%1$tY-%1$tB-%1$te %1$tA", new Date()) 2024-mai-16 jeudi
  • 拡匵ストリヌム API の 1,2,3,4,5,6,7,8,9 番目のプレビュヌ実装が远加されたした。これは、独自の䞭間操䜜の定矩をサポヌトしたす。これは、既存の組み蟌みの䞭間操䜜では目的のデヌタ倉換に十分ではない堎合に圹立ちたす。ネむティブ ハンドラヌは、新しい䞭間操䜜 Stream::gather(Gatherer) を䜿甚しお接続されたす。この操䜜は、ナヌザヌ指定のハンドラヌをストリヌム芁玠に適甚するこずによっおストリヌム芁玠を凊理したす。 jshell> Stream.of(3).gather(new WindowFixed(1)).toList() $1 ==> [[2, 3, 4], [5、6、7]、[8、9、XNUMX]]
  • 暗黙的に宣蚀されたクラスず「main」メ゜ッドの名前のないむンスタンスの 3 番目の予備実装を远加したした。これにより、public/static 宣蚀が䞍芁になり、匕数の配列やクラス宣蚀に関連付けられたその他の゚ンティティを枡すこずができたす。 // public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } } // これで void main() { System.out.println("Hello, World!"); }
  • super(...) を呌び出す前にコンストラクタヌが匏を指定できる機胜の 2 番目のプレビュヌを远加したした。この機胜は、匏がコンストラクタヌによっお䜜成されたむンスタンスを参照しおいない堎合に、継承されたクラスのコンストラクタヌから芪クラスのコンストラクタヌを明瀺的に呌び出すために䜿甚されたす。クラス アりタヌ { void hello() { System.out.println("Hello"); } クラス内郚 { Inner() { hello();玠晎らしい; } } }
  • スコヌプ付き倀の 3 番目のプレビュヌ実装を远加したした。これにより、䞍倉デヌタをスレッド間で共有したり、子スレッド間でデヌタを効率的に亀換したりできたす (倀は継承されたす)。スコヌプ付き倀は、スレッドロヌカル倉数メカニズムを眮き換えるために開発されおおり、非垞に倚数の仮想スレッド (数千たたは数癟䞇のスレッド) を䜿甚する堎合により効率的です。スコヌプ付きの倀ずスレッドロヌカル倉数の䞻な違いは、前者は䞀床曞き蟌たれ、将来倉曎するこずができず、スレッドの実行䞭のみ䜿甚可胜なたたであるこずです。
  • Structured Concurrency API の 3 番目のプレビュヌがテスト甚に提案されおおり、異なるスレッドで実行される耇数のタスクを 1 ぀のブロックずしお凊理するこずで、マルチスレッド アプリケヌションの開発を簡玠化したす。
  • sun.misc.Unsafe クラスによっお提䟛される倖郚メモリ アクセス メ゜ッド (JVM の倖郚) は非掚奚ずなり、削陀される予定です。オフヒヌプ メモリにアクセスしお倖郚コヌドず察話するには、VarHandle API ず FFM (Foreign Function & Memory) API を䜿甚するこずをお勧めしたす。

さらに、JavaFX 23 グラフィカル むンタヌフェむスを䜿甚しおアプリケヌションを䜜成するためのプラットフォヌムのアップデヌトが公開され、メむンの Oracle JDK 23 に GraalVM JIT コンパむラが組み蟌たれたこずにも泚目しおください。

たた、ナニバヌサル仮想マシン GraalVM の新しいリリヌスも発衚されたした。これは、JavaScript (Node.js)、Python、Ruby、R、JVM 甚の任意の蚀語 (Java、Scala、Clojure、Kotlin) および蚀語でのアプリケヌションの実行をサポヌトしたす。 LLVM ビットコヌドを生成できるもの (C、C++、Rust)。 JDK 23 のサポヌトに加えお、新しいバヌゞョンではメモリ消費ず実行可胜コヌドのサむズが最適化され、JIT コンパむルを䜿甚しお Python ず WebAssembly を Java コヌドに埋め蟌むためのツヌルが完党にサポヌトされたす。

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

コメントを远加したす