Java SE 18 リリース

18 か月の開発を経て、Oracle は、OpenJDK オープンソース プロジェクトをリファレンス実装として使用する Java SE 18 (Java Platform, Standard Edition 18) プラットフォームをリリースしました。 一部の非推奨機能の削除を除き、Java SE 18 は Java プラットフォームの以前のリリースとの下位互換性を維持します。以前に作成された Java プロジェクトのほとんどは、新しいバージョンで実行しても変更なしで機能します。 Java SE 86 (JDK、JRE、および Server JRE) のインストール可能なビルドは、Linux (x64_64、AArch86)、Windows (x64_86)、および macOS (x64_64、AArch18) 用に用意されています。 OpenJDK プロジェクトによって開発された Java 2 リファレンス実装は、商用製品への動的なリンクを可能にする GNU ClassPath 例外を含む、GPLvXNUMX ライセンスに基づく完全なオープン ソースです。

Java SE 18 は通常のサポート リリースとして分類されており、次のリリースの前に更新がリリースされます。 Long Term Support (LTS) ブランチは Java SE 17 である必要があり、2029 年までアップデートを受け取ります。 Java 10 のリリース以降、プロジェクトは新しい開発プロセスに切り替わったことを思い出してください。これは、新しいリリースの形成サイクルが短縮されることを意味します。 新しい機能は現在、常に更新される XNUMX つのマスター ブランチで開発されており、すでに完了した変更が組み込まれており、そこから新しいリリースを安定させるために XNUMX か月ごとにブランチが分岐されます。

Java 18 の新機能は次のとおりです。

  • デフォルトでは、エンコードは UTF-8 です。 文字エンコーディングに基づいてテキスト データを処理する Java API は、システム設定やロケール設定に関係なく、すべてのプラットフォームでデフォルトで UTF-8 を使用するようになりました。 システム ロケールに基づいてエンコーディングが選択される古い動作に戻すには、「-Dfile.encoding=COMPAT」オプションを使用できます。
  • このパッケージには、静的コンテンツを提供するための単純な http サーバーの実装を備えた jwebserver ユーティリティとライブラリ API が含まれる com.sun.net.httpserver パッケージが含まれています (CGI およびサーブレットのようなハンドラーはサポートされていません)。 組み込みの HTTP サーバーは、主にプロトタイピング、デバッグ、テスト プロジェクトの開発プロセスでの使用を目的としているため、ワークロード用に最適化されておらず、アクセス制御と認証もサポートしていません。
  • JavaDoc は、動作例やコード スニペットを API ドキュメントに埋め込むための「@snippet」タグのサポートを提供しており、検証ツール、構文の強調表示、および IDE 統合を使用できます。
  • メソッド、フィールド、クラス コンストラクターに関する情報を取得し、クラスの内部構造にアクセスするように設計された java.lang.reflect API (Core Reflection) の実装が再設計されました。 java.lang.reflect API 自体は変更されていませんが、バイトコード ジェネレーターを使用する代わりに、java.lang.invoke モジュールによって提供されるメソッド ハンドルを使用して実装されるようになりました。 この変更により、java.lang.reflect と java.lang.invoke の実装を統合し、メンテナンスを簡素化できるようになりました。
  • Vector API の 86 番目のプレビューが提案されており、x64_64 および AArchXNUMX プロセッサ上のベクトル命令を使用して実行され、操作を複数の値 (SIMD) に同時に適用できるベクトル計算の関数が提供されます。 HotSpot JIT コンパイラで提供されるスカラー演算の自動ベクトル化機能とは異なり、新しい API では並列データ処理のベクトル化を明示的に制御できます。
  • ホスト名と IP アドレスを解決するための SPI インターフェイス (サービス プロバイダー インターフェイス) が追加され、オペレーティング システムが提供するハンドラーに関連付けられていない java.net.InetAddress の代替リゾルバーを使用できるようになりました。
  • 外部関数およびメモリ API の XNUMX 番目のプレビューが提供され、アプリケーションが Java ランタイムの外部でコードやデータと対話できるようになります。 新しい API を使用すると、非 JVM 関数を効率的に呼び出し、JVM 管理以外のメモリにアクセスできるようになります。 たとえば、JNI を使用せずに、外部共有ライブラリから関数を呼び出し、プロセス データにアクセスできます。
  • 「switch」式でのパターンマッチングの 123 番目の実験的実装が追加されました。これにより、正確な値ではなく「case」ラベルで柔軟なパターンを使用できるようになり、以前は使用する必要があった一連の値を一度にカバーできます。 「if...else」式の面倒な連鎖。 オブジェクト o = XNUMXL; String formatted = switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); デフォルト -> o.toString(); };
  • ファイナライズ メカニズムとそれに関連するメソッド (Object.finalize()、Enum.finalize()、Runtime.runFinalization()、System.runFinalization() など) は非推奨となり、将来のリリースでは無効になる予定です。
  • ZGC (Z ガベージ コレクター)、SerialGC、および ParallelGC ガベージ コレクターは行の重複排除をサポートします。

出所: オープンネット.ru

コメントを追加します