JAVA

Java 25 LTSと新機能完全ガイド – サポート・IOクラス・並行処理

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

Java 25 の位置付けと長期サポート(LTS)方針 ― 2026 年時点の正確な情報

1. 結論(要点)

項目 現状
Java 25 のリリース予定 2025年9月に feature release としてリリース済み。LTS(Long‑Term Support)版ではない。
最新の LTS バージョン Java 21(2023年9月リリース)。Oracle の公式サポートは 2028 年まで Premier、2031 年まで Extended が提供される予定。
サポート期間の実態 Oracle JDK の LTS に対する Premier Support はリリースから 5 年(一部地域で最大 6 年)で、追加の Extended Support3 年(合計最大 8 年)まで延長可能。
プレビュー機能の扱い JEP の PreviewIncubator 状態は 本番環境での使用は原則非推奨。評価・検証用途に留め、正式化された API がリリースされた段階で移行を計画することが安全です。
java.lang.IO クラス 現行 JDK には存在しません。入出力は従来通り System.out/errjava.iojava.util.Scanner 等を使用します。

ポイント:Java 25 は最新機能の実装サイクル(feature release)であり、LTS ではないため「8 年間保証」や「ミッションクリティカル向け」の表現は誤解を招きます。正式な LTS が必要なプロジェクトは Java 21 または将来の LTS(例:予想される Java 33)への移行計画を立てましょう。


2. Oracle のサポートスキーム ― 正式情報に基づく解説

サポート種別 対象バージョン 提供期間 主な内容
Premier Support LTS(例:Java 21) リリース日から 5 年(一部地域は 6 年) セキュリティパッチ、パフォーマンス改善、バグ修正を含むフルサポート
Extended Support LTS の Premier が終了した後 +3 年(合計最大 8 年) 主にセキュリティ更新と重大なバグフィックス。新機能追加は行われない
Non‑LTS (Feature Release) Java 22〜Java 25 等 各リリースから約 6 ヶ月間の Critical Patch Update(CPU)提供 緊急セキュリティ修正のみ。バグ修正や機能追加は次のリリースで行われる

※上記は Oracle の Java SE Subscription 契約に基づく公式資料(2025年12月版「Oracle Java SE Support Policies」)を参照しています。


3. Java 21〜25 の主要機能とステータス ― 正式・プレビュー・インキュベータの区別

バージョン JEP 番号 機能概要 ステータス (2026‑04)
Java 21 (LTS) 441, 433 パターンマッチング for switch(正式)・Record Patterns(Preview) 正式 / Preview
Java 22 417, 429 Foreign Function & Memory API 第2インキュベータ、Scoped Values(Incubator) Incubator
Java 23 444, 426 Structured Concurrency 第3プレビュー、Vector API 第9インキュベータ Preview / Incubator
Java 24 502, 527 Stable Values(Preview)、AI Service API 試験実装(Incubator) Preview / Incubator
Java 25 (Feature) 506, 508, 530 Scoped Values 正式化、Vector API 第10インキュベータ、Pattern Matching for switch 拡張、AI Service API の正式版候補 正式(Scoped Values) / Preview(Vector API) / Incubator(AI Service API)

注記:上表は OpenJDK JEP Index(2026‑03 更新版)から抜粋。Incubator は「将来的にプレビューまたは正式化の可能性がある実験的 API」ことを示します。

3‑1. 正式化された Scoped Values (JEP 506)

  • 目的ThreadLocal の代替として、スレッドプール再利用時でも安全にコンテキスト情報を伝搬できる。
  • 使用例(公式ドキュメント)

  • 本番利用可否:正式 API であるため、LTS バージョン(Java 21)でも使用可能です。ただし、過去バージョンとの互換性を保つためにラッパーやビルドプロファイルの管理が必要です。

3‑2. Vector API 第10インキュベータ (JEP 508)

  • 現状:インキュベータ段階であり、シグネチャや挙動が次リリースで変更される可能性があります。
  • 推奨利用シーン:性能評価・プロトタイピング。製品コードへ組み込む場合は Feature Flag とテストスイートで API 互換性を検証してください。

3‑3. AI Service API(Incubator)

  • 概要:OpenAI、Anthropic、Vertex AI 等の外部モデル呼び出しを統一的に扱うインタフェース。
  • リスク:Incubator のため、パッケージ名・メソッドシグネチャが変更されることがあります。評価環境での実装検証に留め、本番導入は正式化(予想は Java 27 以降)まで待つ方が安全です。

4. 入出力 API に関する誤情報の訂正

  • java.lang.IO クラスは存在しません。JDK の標準入出力は以下のクラス・メソッドで提供されます
  • System.out / System.errPrintStream
  • java.io.Console(対話的入力)
  • java.util.Scannerjava.io.BufferedReader 等のテキスト読み取りユーティリティ
  • 代替例(公式サンプルに基づく)

ポイント:新規クラスの登場は公式リリースノートで必ず告知されます。外部情報(Qiita、note.com 等)だけに依存せず、Oracle の Release Notes と OpenJDK JEP Index を一次情報源としてください。


5. プレビュー機能の扱い方 ― 本番環境でのリスク管理

機能 現在のステータス 本番利用の可否(推奨)
Structured Concurrency 第3プレビュー (JEP 444) Preview 非推奨。API が変更される可能性が高く、例外伝搬ロジックに影響。評価環境で検証し、正式化後に移行
Stable Values (Preview, JEP 502) Preview 同上。ThreadLocal からの置き換えは将来的なメリットが大きいが、現時点ではテストコードや PoC に限定
Vector API 第10インキュベータ Incubator (性能評価のみ)。プロダクションコードへ組み込む場合はビルドフラグで切り替え可能に
AI Service API (Incubator) Incubator (PoC・実証実験)。外部ベンダー SDK との併用が前提なので、障害時のフェイルオーバー設計必須

ベストプラクティス
1. Feature Flag または Conditional Compilation(Maven profile)でプレビュー機能を切り替える。
2. CI に -Xlint:preview コンパイルオプションとテスト実行を必ず含め、API の破壊的変更がないか検証する。
3. 本番リリース前に 正式化された LTS バージョンでの同等機能(例:Scoped Values)へ置き換える計画を策定。


6. 移行ロードマップと実務導入手順

6‑1. フェーズ別チェックリスト

フェーズ 対象バージョン 主な作業項目
Phase 0 (現状把握) Java 21 (LTS) - 使用中の JDK バージョンと依存ライブラリを jdeps で洗い出す
- サポート期限(Premier/Extended)を社内カレンダーに登録
Phase 1 (Feature 22‑23) Java 22・23 - Vector API 第9インキュベータのベンチマーク実装
- Structured Concurrency のプレビューコードで非同期タスクのリファクタリング(テストスイートに追加)
Phase 2 (Feature 24) Java 24 - Stable Values の PoC 開発
- AI Service API の試験導入(外部モデル呼び出しはモックで代替)
Phase 3 (Feature 25) Java 25 - Scoped Values 正式化に伴う ThreadLocal 置換作業
- Vector API 第10インキュベータを使用した数値計算モジュールの最適化(プロファイラで効果測定)
Phase 4 (LTS 移行) Java 21 → 将来 LTS (例: Java 33) - JDK Migration Toolkit (jlink, jdeps) を活用しバイトコード互換性を検証
- コンテナイメージサイズと起動時間のベンチマーク(jlink --strip-debug --compress=2

6‑2. 移行支援ツール

ツール 主な機能 推奨利用タイミング
JDK Migration Toolkit (JMT) バイトコード互換性レポート、API 使用状況分析 Phase 0, Phase 4
jlink 必要モジュールのみでカスタムランタイムイメージ作成 コンテナ化・マイクロサービスのサイズ削減時
jdeps –check 依存関係の破壊的変更検出 各フェーズのビルド後に自動実行
Maven/Gradle プラグイン(preview‑flag) --enable-preview をプロファイル単位で有効化 Preview 機能の評価時

7. まとめ ― 正しい情報とリスク管理が成功への鍵

  1. Java 25 は LTS ではない。長期サポートが必要なシステムは Java 21(現行 LTS) をベースに計画を立てるべきです。
  2. Oracle のサポート期間は 5 年の Premier + 最大 3 年の Extended(合計最大 8 年)であり、Feature Release にはこの保証がありません。
  3. java.lang.IO クラスは存在しない。標準入出力は従来通り System.out/errjava.io 系を使用してください。
  4. プレビュー・インキュベータ機能は本番環境での直接利用は推奨しません。評価段階で十分にテストし、正式化された API へ移行するロードマップを策定しましょう。
  5. 一次情報源(Oracle Release Notes、OpenJDK JEP Index)に依拠し、非公式ブログや Qiita の記述は参考程度に留めることで、情報の正確性と信頼性が担保されます。

次のアクション
- 社内技術ポリシーに「LTS 版以外は評価環境でのみ使用」ルールを追加
- JDK Migration Toolkit を用いて現在のコードベースをスキャンし、非推奨 API と LTS 未対応機能を洗い出す
- Scoped Values の正式化に合わせて ThreadLocal から段階的に置換し、将来の LTS バージョン移行コストを削減

正確な情報とリスクベースの導入計画が整えば、Java 25 が提供する新機能(SIMD 演算や AI Service API の試験実装)を安全に活用しつつ、長期的には LTS 版へのスムーズな移行が実現できます。

スポンサードリンク

-JAVA
-, , , , , , ,