Java JDK 17

最終更新:

当サイトはアフィリエイト広告を利用しています。

Java JDK 17(LTS)は2021年9月14日にリリースされたLTS(長期サポート)バージョンで、現在最も広く使われているJDKです。Oracle JDKのPremier Supportは2026年9月30日に終了し、Extended Supportは2029年9月30日まで提供されます。Spring Boot 3.x・Quarkus 3.x等の主要フレームワークがJDK 17以上を要件としており、JDK 11からの移行先として事実上の標準となっています。

Java JDK 17 のサポート期限一覧

サポート種別 開始日 サポート終了日 現在のステータス
Premier Support 2021-09-14 2026-09-30 サポート中
Extended Support(Oracle JDK) 2026-10-01 2029-09-30 今後
Corretto 17 / Temurin 17 2029年9月ごろ サポート中

JDK 17 のサポートポリシー
Oracle JDKのLTSはPremier Support(5年)とExtended Support(3年)の計8年が標準です。JDK 17はPremier Support期間中(2026年9月まで)に新機能バックポートとバグ修正が提供されます。Extended Support期間(2026年10月〜2029年9月)はセキュリティパッチ(CPU)のみとなります。

基本情報・技術仕様

  • リリース日: 2021年9月14日
  • 最終アップデート: 17.0.19(2026年4月)
  • Java SE仕様: Java SE 17
  • 対応Spring Boot: Spring Boot 3.x(JDK 17以上が必須)
  • Jakarta EE: Jakarta EE 10対応(javax.* → jakarta.* への移行完了バージョン)
  • GC: G1GC(デフォルト)、ZGC・Shenandoah(本番利用可)
  • 対応OS: Windows, Linux (RHEL/Ubuntu/Debian/Amazon Linux), macOS
広告

JDK 11 からの主な変更点

JDK 12〜17の6バージョン分の新機能がまとめて利用可能になります。主要な変更点を以下に示します。

言語仕様の強化

  • Records(JDK 16〜): 不変データクラスを簡潔に定義。ボイラープレートコードを大幅削減
  • Sealed Classes(JDK 17〜): 継承可能なクラス/インターフェースを制限。ドメインモデルの安全な表現が可能に
  • Pattern Matching for instanceof(JDK 16〜): instanceofチェック後のキャストが不要に
  • Text Blocks(JDK 15〜): 複数行文字列リテラル。JSON/SQL/HTMLの埋め込みが簡潔に
  • Switch Expressions(JDK 14〜): switch文を式として使用可能に

パフォーマンス・セキュリティ

  • ZGC / Shenandoah GC: 本番利用可能(JDK 15〜)。大規模ヒープでの低レイテンシGCが可能に
  • 強化された擬似乱数生成(JDK 17〜): セキュリティ要件を満たす乱数APIの刷新
  • Sealed Classes によるセキュリティ強化: 不正な継承を防ぐAPIの設計が可能に
  • TLS 1.3: JDK 11から引き続き対応、さらに最適化

2029年9月以降のリスク

JDK 17のExtended Supportが終了する2029年9月30日以降は、セキュリティリスクが高まります。Premier Supportは2026年9月30日に終了するため、その後はセキュリティパッチのみとなります。

1. セキュリティパッチの提供停止

2029年9月以降はOracleによるCPU(Critical Patch Update)の提供が停止します。JVM・標準ライブラリ・TLS実装などへの新たな脆弱性が対応されなくなります。外部公開サービスを運用している企業は特に影響を受けます。

2. フレームワーク・ライブラリの対応終了

Spring Boot・Quarkus等の主要フレームワークは、EOL後のJDKバージョンへのサポートを順次終了します。JDK 17にとどまる場合、2029年以降にリリースされるフレームワークのセキュリティアップデートが受けられなくなる可能性があります。

3. コンプライアンス上のリスク

PCI DSS・ISMS等の認証では、EOSとなったソフトウェアの継続利用に追加のリスク対応が求められます。2029年のEOL前に計画的な移行を完了させることで、監査上のリスクを回避できます。

推奨される移行先

JDK 17のEOL(2029年9月)に向けての移行先はJDK 21が最有力です。

Java JDK 21(推奨・最新LTS)

  • Oracle Extended Support終了: 2031年9月30日
  • メリット: Virtual Threads(Project Loom)による高スループットなサーバーアプリケーション開発が可能。Sequenced Collections・Record Patterns等の新機能
  • 注意点: JDK 17との互換性は高いが、使用しているライブラリのJDK 21対応確認が必要
  • 無償JDK: Amazon Corretto 21・Eclipse Temurin 21
  • 適したケース: 新規プロジェクト・マイクロサービス・高並列処理が必要なシステム

移行時の注意点

Virtual Threads(JDK 21)への対応
JDK 21で正式導入されたVirtual ThreadsはJavaの非同期処理を大きく変えます。Spring Boot 3.2以降はVirtual Threadsに対応しており、設定を有効化するだけで従来のスレッドプールを置き換えられます。ただし、ThreadLocal変数を多用するコードは動作確認が必要です。

JDKディストリビューションの選択
Oracle JDKは有償サポート契約が必要です。無償で使用する場合はAmazon Corretto・Eclipse Temurin・Microsoft Build of OpenJDKなどのディストリビューションを選択してください。いずれもOpenJDKベースで機能的な差異はほぼありません。AWSを使用している場合はCorrettoが最もシームレスに統合できます。

jdepsによる事前確認
JDK付属のjdepsツールで内部API依存を確認してください。jdeps --jdk-internals myapp.jarを実行して警告が出ないことを確認することで、アップグレード後の問題を未然に防げます。

Javaアプリのサーバーをクラウドへ移行するなら

JDK 17のEOLはJavaアプリケーションサーバーの見直し時期でもあります。オンプレミスサーバーで運用している場合、OSの刷新とあわせてVPSへの移行を検討することで、今後のサーバー保守コストを大幅に削減できます。

VPS環境ではJDK 21の導入が容易で、セットアップ時間を最小化できます。初期費用なしで最新のJava実行環境を構築でき、スケールアップも柔軟に対応可能です。

比較候補サービス

エックスサーバーのVPSサーバー

圧倒的なコスパと処理性能。サーバー管理費用を大幅に削減したい場合の第一候補です。

さくらのVPS

創業1996年の老舗ホスティング事業者。豊富なプラン構成と、ドキュメントが充実しています。

KAGOYAのVPS

老舗ならではの安定したインフラと法人サポートが強み。長期運用を前提とした法人利用に適しています。

広告

公式情報

参考書籍


Spring Framework超入門 ~やさしくわかるWebアプリ開発~

Spring Framework超入門 ~やさしくわかるWebアプリ開発~


新世代Javaプログラミングガイド[Java SE 10/11/12/13と言語拡張プロジェクト]

新世代Javaプログラミングガイド[Java SE 10/11/12/13と言語拡張プロジェクト]


WEB+DB PRESS Vol.124

WEB+DB PRESS Vol.124