The Arrival of Java 25

原文はこちら。
The original article was written by Sharat Chander (Director, Java SE Product Management, Oracle).
https://blogs.oracle.com/java/post/the-arrival-of-java-25

JDK 25 is Now Available!

Oracleは開発者、企業、エンドユーザー向けにJDK 25の一般提供を発表します。

New in this release

JDK 25では、16の拡張が提供されます。これらはJDK Enhancement Proposal (JEP) として独立して提案されるほど重要なもので、プレビュー機能4つ、実験的機能1つ、インキュベーター機能1つを含みます。これらの拡張は、Java言語からライブラリ(特にセキュリティライブラリ向けの改善2つを含む)、パフォーマンスとランタイム、監視機能の改善に至るまでの革新をカバーしています。

JDK 25
https://openjdk.org/projects/jdk/25/

Language Innovation

Primitive Types in Patterns, instanceof, and switch 3rd Preview [JEP 507]

すべてのパターンコンテキストでプリミティブ型を許可することでパターンマッチングを強化し、instanceofおよびswitchをすべてのプリミティブ型で動作するように拡張します。これはプレビュー版の言語機能です。

JEP 12: Preview Features
https://openjdk.org/jeps/12

Module Import Declarations [JEP 511]

Javaプログラミング言語に、モジュールがエクスポートするすべてのパッケージを簡潔にインポートする機能を追加します。これによりモジュール化されたライブラリの再利用が簡素化されますが、インポートするコード自体をモジュール内に配置する必要はありません。

Compact Source Files and Instance Main Methods [JEP 512]

Javaプログラミング言語を進化させ、初心者が大規模プログラム向けに設計された言語機能を理解しなくても最初のプログラムを書けるようにします。別の方言を使うのではなく、初心者は単一クラスのプログラム向けに簡素化された宣言を記述でき、スキルが向上するにつれてシームレスに高度な機能へ拡張できます。経験豊富な開発者も同様に、大規模プログラミング向けの構文を必要とせず、簡潔に小規模プログラムを書くことを享受できるでしょう。

Flexible Constructor Bodies [JEP 513]

Javaプログラミング言語のコンストラクタにおいて、明示的なコンストラクタ呼び出し(super(..)またはthis(..))の前にstatement (文) を記述できるようにしました。これらのstatementは構築中のインスタンスを参照できませんが、そのフィールドを初期化することはできます。別のコンストラクタを呼び出す前にフィールドを初期化することで、メソッドがオーバーライドされた場合でもクラスの信頼性が向上します。

Library Improvements

Structured Concurrency 5th Preview [JEP 505]

構造化並行処理は、異なるスレッドで実行される関連タスクのグループを単一の作業単位として扱い、エラー処理とキャンセルを効率化し、信頼性を向上させ、可観測性を強化します。これはPreview APIです。

JEP 12: Preview Features
https://openjdk.org/jeps/12

Scoped Values [JEP 506]

スレッド内の呼び出し元と子スレッドの両方で不変データ (immutable data) を共有する方法を可能にします。scoped valueはthread-local変数よりも理解しやすく、特にvirtual threads(JEP 444)やstructured concurrency(JEP 505)と併用する場合、空間的・時間的コストも低くなります。

JEP 444: Virtual Threads
https://openjdk.org/jeps/444
JEP 505: Structured Concurrency (Fifth Preview)
https://openjdk.org/jeps/505

Stable Values Preview [JEP 502]

不変データ (immutable data) を保持するオブジェクトであるstable values用のAPIを導入します。stable valuesはJVMによって定数として扱われるため、フィールドをfinalとして宣言した場合と同様のパフォーマンス最適化が可能になります。ただし、finalフィールドと比較して、stable valuesは初期化のタイミングに関してより高い柔軟性を提供します。これはプレビュー機能です。

JEP 12: Preview Features
https://openjdk.org/jeps/12

Vector API 10th Incubator [JEP 508]

サポート対象のCPUアーキテクチャにおいて、実行時に確実に最適なベクトル命令へコンパイルされるベクトル演算を表現するAPIを導入します。これにより同等のスカラー演算よりも優れた性能を実現します。

Security Libraries Enhancements

PEM Encodings of Cryptographic Objects Preview [JEP 470]

暗号鍵 (cryptographic keys)、証明書 (certificates)、証明書失効リスト (certificate revocation lists) を表すオブジェクトを、広く普及しているPrivacy-Enhanced Mail (PEM) 転送形式にエンコードし、その形式からオブジェクトへデコードするためのAPIを導入します。これはpreview APIです。

Privacy-Enhanced Mail
https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail

Key Derivation Function API [JEP 510]

秘密鍵およびその他のデータから追加の鍵を導出するための暗号アルゴリズムである鍵導出関数 (KDF / Key Derivation Functions) のAPIを導入します。

Performance and Runtime Advancements

Compact Object Headers [JEP 519]

64ビットアーキテクチャにおいて、HotSpot JVMのオブジェクトヘッダーサイズを96~128ビットから64ビットに縮小します。これによりヒープサイズが削減され、デプロイメントの密度が向上し、データの局所性が向上します。このJEPでは、コンパクトなオブジェクトヘッダーをデフォルトのオブジェクトヘッダーレイアウトとはしません。この機能を利用したいユーザーは、コマンドラインオプションを使用して明示的に有効にする必要があります。

Ahead-of-Time Command-Line Ergonomics [JEP 514]

一般的なユースケースに必要なコマンドを簡素化することで、事前キャッシュ (Ahead-of-Time caches) の作成を容易にし、Javaアプリケーションの起動を高速化します。

JEP 483: Ahead-of-Time Class Loading & Linking
https://openjdk.org/jeps/483

Ahead-of-Time Method Profiling [JEP 515]

HotSpot Java仮想マシン起動時に、前回の実行からメソッド実行プロファイルを即座に利用可能にすることで、ウォームアップ時間を短縮します。これにより、アプリケーション起動直後にネイティブコードを生成できるようになります。JITコンパイラはプロファイル収集を待つ必要はありません。

Monitoring

JFR CPU-Time Profiling Experimental [JEP 509]

JDK Flight Recorder (JFR) が Linux 上でより正確な CPU 時間プロファイリング情報を取得できるようにします。これは実験的な機能です。

JDK Flight Recorder
https://dev.java/learn/jvm/jfr/

JFR Cooperative Sampling [JEP 518]

JDK Flight Recorder (JFR) がJavaスレッドスタックを非同期にサンプリングする際の安定性を向上させます。セーフポイントバイアスを最小化しながら、セーフポイントでのみコールスタックを走査することでこれを実現します。

Method Timing & Tracing [JEP 520]

JDK Flight Recorder (JFR) を拡張し、バイトコードインストルメンテーションを使ったメソッドのタイミング測定とトレース機能を提供します。

Interface Instrumentation (Java SE 24 & JDK 24)
https://docs.oracle.com/en/java/javase/24/docs/api/java.instrument/java/lang/instrument/Instrumentation.html
https://docs.oracle.com/javase/jp/24/docs/api/java.instrument/java/lang/instrument/Instrumentation.html

A Reminder on Preview, Experimental, and Incubator Features

実験的機能は、主に仮想マシン(VM)レベルにおいて、将来の機能の初期段階のものを提供します。これらはまだ開発とテストの段階にあり、HotSpot VMへの影響が大きい可能性のある拡張機能に関する初期フィードバックを収集するために使用されます。インキュベーターモジュール内のAPIは、最終化されていないAPIと最終化されていないツールを開発者やユーザーに提供し、最終的にJavaプラットフォームの品質向上につながるフィードバックを収集できるようにします。

JEP 12: Preview Features
https://openjdk.org/jeps/12
JEP 11: Incubator Modules
https://openjdk.org/jeps/11

Other Changes

JEPに記載されている変更点に加え、リリースノートには小規模な変更が多数記載されており、多くのアプリケーション開発者やシステム管理者の関心を集めることでしょう。これらには廃止予定のAPIの非推奨化や、以前に非推奨とされたAPIの削除が含まれます。

JDK 25 Release Notes
https://jdk.java.net/25/release-notes

Java 25リリースノートからの主な更新点の一部をご紹介します。

Mechanism to Disable Signature Schemes Based on Their TLS Scope (JDK-8349583)

security-libs/javax.net.ssl

TLSプロトコル固有の使用制限は、java.security設定ファイル内のjdk.tls.disabledAlgorithmsプロパティでサポートされるようになりました。以下はその例です。

UsageConstraint:
    usage UsageType { UsageType }

UsageType:
    HandshakeSignature | CertificateSignature

HandshakeSignatureで、TLSハンドシェイク署名におけるアルゴリズムの使用を制限します。CertificateSignatureで、証明書署名におけるアルゴリズムの使用を制限します。この制約を持つアルゴリズムは、jdk.certpath.disabledAlgorithms プロパティで定義される他のusage typeを含めることはできません。usage typeはキーワードに続き、空白区切りで複数指定できます。

Turn on Timestamp and Thread Details by Default for java.security.debug (JDK-8350689)

security-libs/java.security

java.security.debugシステムプロパティからのデバッグ出力に、スレッドID、呼び出し元情報、およびタイムスタンプ情報が含まれるようになりました。

java.security.debugオプションで生成される各デバッグ出力ステートメントは、以下の書式に従います。

componentValue[threadId|threadName|sourceCodeLocation|timestamp]: <debug statement>
componentValue ログ記録されるセキュリティコンポーネントの値
threadId スレッドID(16進数値)
threadNameログステートメントを実行しているスレッド名
sourceCodeLocation このログ呼び出しを行っているソースファイルと行番号。filename:lineNumberの形式。
timestamp yyyy-MM-dd kk:mm:ss.SSS 形式の日付と時刻
<debug statement>セキュリティコンポーネントからのデバッグ出力

JDK 23 で導入された +thread および +timestamp オプションは無視されます。

これらのレガシーオプションに関する詳細は、JDK 23 リリースノートで確認できます。

JDK 23 Release Notes
https://www.oracle.com/java/technologies/javase/23-relnote-issues.html#JDK-8051959

Add Support for TLS Keying Material Exporters to JSSE and SunJSSE Provider (JDK-8341346)

security-libs/javax.net.ssl

この拡張により、TLS(Transport Layer Security)のKeying Material Exportersのサポートが追加されました。これにより、アプリケーションは接続でネゴシエーションされたTLSキーから、追加のアプリケーションレベルKeying Materialを生成できるようになります。

この変更により、Transport Layer Security (TLS) ParametersのTLS Exporter Labelsに登録されているラベルを含む、いくつかの追加プロトコルをサポートできるようになります。

TLS Exporter Labels – Transport Layer Security (TLS) Parameters
https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#exporter-labels

この機能は、TLSv1~TLSv1.2についてはRFC 5705、TLSv1.3についてはRFC 8446で説明されています。

RFC 5705: Keying Material Exporters for Transport Layer Security (TLS)
https://www.rfc-editor.org/rfc/rfc5705.html
RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3
https://www.rfc-editor.org/rfc/rfc8446.html

この機能は、javax.net.ssl.ExtendedSSLSessionクラス内の2つの新しいAPIを使ってアクセスできます。

public SecretKey exportKeyingMaterialKey(String keyAlg,
        String label, byte[] context, int length) throws SSLKeyException
public byte[] exportKeyingMaterialData(
        String label, byte[] context, int length) throws SSLKeyException 

Add Standard System Property stdin.encoding (JDK-8350703)

core-libs/java.lang

新しいシステムプロパティstdin.encodingが追加されました。このプロパティには、InputStreamReaderScannerを使用する場合など、System.inから文字データを読み取る際に推奨される文字コードの名前が含まれています。デフォルトでは、OSとユーザー環境のクエリに基づいてシステム固有の方法で設定されています。その値は、file.encodingプロパティの値、デフォルトの文字セット、およびnative.encodingプロパティの値とは異なる場合があることに注意してください。stdin.encodingの値は、コマンドライン引数

-Dstdin.encoding=UTF-8

を指定することでUTF-8に上書きできます。

New getChars(int, int, char[], int) Method in CharSequence and CharBuffer (JDK-8343110)

core-libs/java.lang

java.lang.CharSequenceおよびjava.nio.CharBufferに、CharSequenceの領域からchar[]の領域へ文字を一括読み取りするメソッドgetChars(int, int, char[], int)が新たに追加されました。StringStringBuilder、およびCharBufferCharSequenceを実装します。CharSequence上で動作するコードは、シーケンスから一括読み取りを行う際に、Stringへの例外的な扱いやキャストを必要としなくなりました。この新しいメソッドは、シーケンスの文字をループ処理するよりも効率的である可能性があります。

New connectionLabel Method in java.net.http.HttpResponse to Identify Connections (JDK-8350279)

core-libs/java.net

java.net.http.HttpResponseconnectionLabelメソッドが新たに追加されました。この新しいメソッドは、不透明な接続ラベルを返します。このラベルを使い、呼び出し元がレスポンスを伝送された接続に関連付けることができます。このラベルは、2つのリクエストが同じ接続で伝送されたか、異なる接続で伝送されたかを判断するのに役立ちます。

New Methods on BodyHandlers and BodySubscribers to Limit the Number of Response Body Bytes Accepted by the HttpClient (JDK-8328919)

core-libs/java.net

以下の2個のメソッドが新たにHttpClient APIに追加されました。

  • java.net.http.HttpResponse.BodyHandlers.limiting(BodyHandler downstreamHandler, long capacity)
  • java.net.http.HttpResponse.BodySubsribers.limiting(BodySubscriber downstreamSubscriber, long capacity)

これらのメソッドは、既存の BodyHandler または BodySubscriber を拡張し、HTTPリクエストに対するレスポンスとしてアプリケーションが受け入れることを望むレスポンス本体のバイト数を制限する機能を追加します。レスポンス本体の読み取り中に制限に達するとIOExceptionが発生し、下流のサブスクライバーに報告されます。サブスクリプションはキャンセルされ、それ以降のレスポンスボディのバイトは破棄されます。これにより、アプリケーションはサーバーから受け入れる最大バイト数を制御することが可能になります。

New Property to Construct ZIP FileSystem as Read-only (JDK-8350880)

core-libs/java.nio

ZIPファイルシステムプロバイダが更新され、ZIPファイルシステムを読み取り専用または読み書き可能なファイルシステムとして作成できるようになりました。ZIPファイルシステムを作成する際、プロパティ名accessModereadOnlyまたはreadWriteを指定することで、希望するモードを指定できます。このプロパティが指定されない場合、可能な場合にはファイルシステムは読み書き可能なファイルシステムとして作成します。

以下の例は読み取り専用ファイルシステムを作成します。

FileSystem zipfs = FileSystems.newFileSystem(pathToZipFile, Map.of("accessMode","readOnly"));

このプロパティおよびZIPファイルシステムプロバイダがサポートするその他のプロパティの詳細については、jdk.zipfsモジュールの説明を参照してください。

Updates to ForkJoinPool and CompletableFuture (JDK-8319447)

core-libs/java.util.concurrent

java.util.concurrent.ForkJoinPoolは、このリリースでScheduledExecutorServiceを実装するよう更新されました。このAPIの更新により、タイムアウト処理に遅延タスクを使用し、ほとんどのタイムアウトがキャンセルされるネットワークアプリケーションやその他のアプリケーションにおける遅延タスク処理のパフォーマンスが向上します。

ScheduledExecutorService で定義されている schedule メソッドに加え、ForkJoinPool では新たに submitWithTimeout メソッドを定義しました。これにより、タスク完了前にタイムアウトが切れた場合にタスクをキャンセル(または他のアクションを実行)して送信できます。

更新の一環で、CompletableFuture および SubmissionPublisher は、明示的な Executor を指定しないすべての非同期メソッドが ForkJoinPool の共通プールを使用して実行されるように変更されました。これは、ForkJoinPool の共通プールが 2 未満の並列度で構成されている場合に、各非同期タスクに対して新しいスレッドが作成されていた以前のリリースとは異なる挙動を示します。

java.util.zip.Inflater and java.util.zip.Deflater Enhanced To Implement AutoCloseable (JDK-8225763)

core-libs/java.util.jar

java.util.zip.Inflaterおよび java.util.zip.DeflaterAutoCloseableを実装するようになりました。これにより、try-with-resources文で使用できます。以前は、アプリケーションがend()メソッドを呼び出して、Inflater/Deflaterインスタンスが保持するリソースを解放する必要がありました。現在では、end()メソッドまたはclose()メソッドのいずれかを呼び出すことで、同じ操作を実行できます。

Thread Dumps Generated by HotSpotDiagnosticMXBean.dumpThreads and jcmd Thread.dump_to_file Updated to Include Lock Information (JDK-8356870)

core-svc

com.sun.management.HotSpotDiagnosticMXBean.dumpThreads API および診断コマンド jcmd <pid> Thread.dump_to_file によって生成されるスレッドダンプに、ロック情報が含まれるようになりました。

HotSpotDiagnosticMXBean.dumpThreads API も更新され、JSON 形式のスレッドダンプを記述する JSON スキーマへのリンクが追加されました。JSON形式のスレッドダンプは、診断ツールによる読み取りと処理を目的としています。

従来のjstackおよびjcmd <pid> Thread.printによって生成されるスレッドダンプとは異なり、HotSpotDiagnosticMXBean.dumpThreadsおよびjcmd <pid> Thread.dump_to_fileによって生成されるスレッドダンプは、このリリースではデッドロックに関する情報を出力しません。

G1 Reduces Remembered Set Overhead by Grouping Regions into Shared Card Sets (JDK-8343782)

hotspot/gc

G1 GCは、Mixed GC中に一緒に回収される可能性が高い場合に、複数の領域が単一の内部構造体(G1CardSet)を共有できるようにすることで、remembered set (記憶集合) のメモリオーバーヘッドと停止時間をさらに削減します。

従来は、各領域が独自のG1CardSetを維持していたため、メモリオーバーヘッドが高く、最終的にグループとして収集される領域間の参照追跡が冗長化していました。新設計では、一緒に退避される見込みの領域はRemarkフェーズ後にグループ化され、共有のG1CardSetが割り当てられるため、領域間の参照を個別に追跡する必要がなくなります。

これによりメモリ効率が向上し、GCポーズ時間におけるマージ時間が短縮されます。

New JFR Annotation for Contextual Information (JDK-8356698)

hotspot/jfr

新しいアノテーションjdk.jfr.Contextualが導入され、カスタムJFRイベント内のフィールドに、同じスレッド内で発生する他のイベントに関連するコンテキスト情報を付与できるようになりました。例えば、ユーザー定義のHTTPリクエストイベントのフィールドに@Contextualアノテーションを付与することで、そのURLやトレースIDを、実行中に発生するイベント(競合したロガーによるjdk.JavaMonitorEnterイベントなど)に関連付けることができます。

ツールは、スパンやトレースIDなどの上位レベル情報を下位レベルイベントと関連付けられるようになりました。JDKに含まれるjfrツールのprintコマンドでは、このコンテキスト情報をJVMイベントやJDKイベントと共に表示します。例えば、トレーススパンやHTTPリクエストイベント中に発生するロック競合、I/O、例外などのイベントで表示されます。

UseCompactObjectHeaders Is a Product Option (JDK-8350457)

hotspot/runtime

-XX:+/-UseCompactObjectHeaders というフラグがproductオプションになりました。これにより、-XX:+UnlockExperimentalVMOptions フラグを使わずにコンパクトオブジェクトヘッダーを有効にできます。コンパクトオブジェクトヘッダーは、JEP 450に基づきJDK 24で導入された機能です。この機能を有効にすると、アプリケーションのJavaヒープフットプリントが削減され、パフォーマンス向上が期待できます。本リリースではデフォルトで無効のままですが、将来のリリースでデフォルト設定となる可能性があります。

JEP 450: Compact Object Headers (Experimental)
https://openjdk.org/jeps/450
JEP 519: Compact Object Headers
https://openjdk.org/jeps/519

コンパクトオブジェクトヘッダーの使用をサポートするため、JDKイメージ向けにclasses_coh.jsaおよびclasses_nocoops_coh.jsaという2つのCDSアーカイブが追加されました。UseCompactObjectHeadersを有効にした場合でも同等の起動パフォーマンスが確保されます。

SHAKE128-256 and SHAKE256-512 as MessageDigest Algorithms (JDK-8354305)

security-libs/java.security

SUNプロバイダに、SHAKE128-256およびSHAKE256-512という2つの新しいMessageDigestアルゴリズムが追加されました。これらは、NIST FIPS 202で定義されているSHAKE128およびSHAKE256拡張出力関数(XOF)の固定長バージョンです。

FIPS 202: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions
https://csrc.nist.gov/pubs/fips/202/final

Support for HKDF in SunPKCS11 (JDK-8328119)

security-libs/javax.crypto:pkcs11

SunPKCS11セキュリティプロバイダは、新しい鍵導出関数API向けに以下のアルゴリズムをサポートするようになりました。詳細はJDK-8344464を参照してください。

  • HKDF-SHA256
  • HKDF-SHA384
  • HKDF-SHA512

[JDK-8344464] Support HKDF in SunPKCS11 (Preview)
https://bugs.openjdk.org/browse/JDK-8344464

Update XML Security for Java to 3.0.5 (JDK-8344137)

security-libs/javax.xml.crypto

XML署名の実装がSantuario 3.0.5に更新されました。SHA-3ベースの4つの新しいECDSA署名アルゴリズムに対するサポートが追加されました。

  • SignatureMethod.ECDSA_SHA3_224
  • SignatureMethod.ECDSA_SHA3_256
  • SignatureMethod.ECDSA_SHA3_384
  • SignatureMethod.ECDSA_SHA3_512

Enhanced jar File Validation (JDK-8345431)

tools/jar

jar --validateコマンドが拡張され、以下の項目を識別して警告メッセージを生成するようになりました:

  • 重複するエントリ名
  • 以下の条件に該当するエントリ名
    • ドライブ文字またはデバイス文字を含む
    • 先頭にスラッシュを含む
    • バックスラッシュ \ を含む
    • エントリ名またはパス要素のいずれかが . または .. である
  • LOCヘッダーとCENヘッダー間のエントリ順序が一致しない場合

最後に、すべての機能リリースと同様に、JDK 25には数百に及ぶパフォーマンス、安定性、セキュリティの更新が含まれています。これには基盤となるOSやファームウェアの更新、および標準規格への対応も含まれます。ユーザーやアプリケーション開発者は通常、こうした変更に気付かないまま恩恵を受けますが、各変更に関する情報はOpenJDK Issue Trackerで確認できます。

And the constant feature, included in all JDK releases: Predictability

JDK 25は、6か月ごとのリリースサイクルを通じて予定通り提供された16番目の機能リリース (feature release) です。このレベルの予測可能性により、開発者は着実な改良の流れのおかげで、イノベーションの採用を容易に管理できます。

パフォーマンス、安定性、およびセキュリティを向上させるJavaの能力により、Javaは世界で最も人気のあるプログラミング言語となっています。

OracleはJDK 25に対し、少なくとも2033年9月まで長期サポートを提供します。

Java 25, Together

これまでのリリースと同様に、Java 25はOpenJDKコミュニティの多くの個人や組織の貢献によるものです — we all build Java, together!

JDK 25 Fix Ratio

JDKリリースの経時的な変更率は何年もの間大きく変わることはありませんが、6ヶ月サイクルの下で、実運用に耐えうる機能や改善が提供されるペースは急激に増加しています。

JDK 25の変更点は、重要な新機能から小規模な拡張、日常的なメンテナンス、バグ修正、ドキュメントの改善まで多岐にわたります。各変更は、JDK Bug Systemの1つの課題に対する1つのコミットで表されます。

JDK Bug System
https://bugs.openjdk.org/secure/Dashboard.jspa

各機能リリースのGA時点でJava 11からJava 25で修正済みとマークされた33,793件のJIRAのIssueのうち、23,762件はOracle従業員が完了し、10,031件は個人の開発者や他の組織で働く開発者による貢献でした。Issueを調べ、担当者から組織データを収集した結果、Javaにおけるコントリビューション開発のスポンサーとなった組織のチャートは以下のようになりました。

Java 25では、修正済みとマークされた2,606件のJIRA Issueのうち、1,655件はOracleの従業員が完了し、951件はJavaコミュニティの他のメンバーによる貢献でした。

Oracleは、Alibaba、Amazon、Google、IBM、Intel、ISCAS、Red Hat、Rivos、SAP、ServiceNowなどの組織で働く開発者の顕著な貢献に感謝したいと思います。また、Bellsoftなどの小規模な組織や、Java 25の修正の9%に貢献した独立系開発者の方々にも感謝します。

さらに、ビルドの品質に関して貴重なフィードバックを提供してくれたり、良質なバグを登録をしてくれたり、頻繁にアップデートを提供してくれたりした以下の方々に感謝したいと思います。

  • Marc Hoffmann (JaCoCo)
  • Uwe Schindler (Apache Lucene)

さらに、OpenJDK Quality Outreachプログラムを通じて、Java 25の早期アクセスビルドのテストに素晴らしいフィードバックを提供し、リリースの品質向上に貢献してくれた以下のFOSSプロジェクトと個人に感謝したいと思います。

Quality Outreach
https://wiki.openjdk.org/display/quality/Quality+Outreach

  • Apache Ant (Jaikiran Pai)
  • Apache Derby (Rick Hillegas)

Resources

Javaは、企業組織全体におけるプログラミング言語の使用率において、引き続き第1位を維持しています。Java 25の機能強化が予定通り提供されたことが示すように、揺るぎない周到な計画とエコシステムへの関与を通じて、Javaプログラミング言語およびプラットフォームは、モダンな開発とクラウドでの成長に向けて、確固たる基盤を築いております。

ニュースやアップデートの最新情報は、以下の方法で入手できます。

Dev.javaJavaの知識を深め、コミュニティに参加するためのOracleの専用ポータルサイト
Inside.javaOracle Javaチームによるニュースおよび見解をまとめたサイト
Inside.java PodcastJavaチームが直接お届けする、Java開発者向けの技術オーディオショー
Duke’s Corner PodcastJavaエコシステムの著名人の方々の個人的な物語、経験、専門知識をする、コミュニティに焦点を当てたオーディオショー。
Java on YouTubeJavaの専門知識を深めるための短編および長編動画を提供する、YouTube公式Javaチャネル
Inside.java NewscastJavaプログラミング言語とプラットフォームにおける数多くの新機能を紹介した動画番組
JEP Café主要なJEP (JDK Enhancement Proposals) について説明するOracleの動画
OpenJDKメーリングリストお気に入りのOpenJDKプロジェクトの進捗状況を透明性をもって把握できるメーリングリスト
Xのフォロー
@OpenJDK
@Java
Javaに関する技術的およびコミュニティ分野のソーシャル更新情報を受け取ることができるソーシャルストリーム
Inside Java Newsletter主要なJava技術やコミュニティの最新情報をまとめたOracleが毎月発行するニュースレター
Java LinkedIn groupOracle DevRelチームから、技術情報とコミュニティ情報の両方を受け取ることができるLinkedInグループ

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください