この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:7
ページ更新者:guest
更新日時:2026-06-10 06:57:13

タイトル: プラットホーム
SEOタイトル: Java プラットフォーム完全ガイド — SE/EE/JDK/JVM

この記事の要点
  • Java プラットフォームは用途別に Java SE (Standard) / Java EE → Jakarta EE (サーバ) / Java ME (組込) に分かれる
  • JDK (開発者用) = JRE + コンパイラ + ツール、JRE (実行のみ) = JVM + 標準ライブラリ
  • JVM 実装: Oracle HotSpot (デファクト) / OpenJ9 (IBM) / GraalVM (ネイティブイメージ対応)
  • LTS バージョン: Java 8 / 11 / 17 / 21 が長期サポート。それ以外は短期 (6 ヶ月毎)
  • ディストリビューション: Oracle JDK (商用は有償) / OpenJDK / Amazon Corretto / Eclipse Adoptium Temurin / Azul Zulu / Microsoft Build of OpenJDK

3 つのプラットフォームエディション

エディション用途主要 API現状
Java SE (Standard Edition)デスクトップ / 一般用途 / バックエンドの基盤java.lang, java.util, java.io, java.nio, java.net, java.time現役
Java EEJakarta EEエンタープライズサーバ(Web/DB/メッセージング)Servlet, JSP, JPA, EJB, CDI, JMS, JAX-RSOracle → Eclipse Foundation 移管 (2018)、Jakarta EE 8/9/10
Java ME (Micro Edition)組込・フィーチャーフォン限定的ほぼ衰退、IoT は Java SE Embedded へ

JDK / JRE / JVM の違い

名前正式名役割含むもの
JDKJava Development Kit開発者用(コンパイル含む)JRE + javac, javadoc, jar, jdb, jshell 等
JREJava Runtime Environment実行のみJVM + 標準ライブラリ
JVMJava Virtual Machineバイトコードを実行する VMクラスローダ / 実行エンジン / GC

Java 9 からは JRE 単体配布が廃止され、jlink で必要モジュールだけ含めたカスタムランタイムを作るのが現代的です。

# バージョン確認
java  -version    # JRE 機能(実行系)
javac -version    # JDK 機能(コンパイラ)

# 出力例
# openjdk version "21.0.1" 2023-10-17 LTS
# OpenJDK Runtime Environment Temurin-21.0.1+12 (build 21.0.1+12-LTS)
# OpenJDK 64-Bit Server VM Temurin-21.0.1+12 (build 21.0.1+12-LTS, mixed mode)

JVM 実装の比較

JVM提供特徴
HotSpotOracle / OpenJDKデファクト。JIT (C1/C2) コンパイラ、G1 GC / ZGC
OpenJ9IBM (Eclipse)メモリフットプリント小、起動高速。コンテナに有利
GraalVMOracle Labs多言語対応 (Polyglot)、Native Image でネイティブバイナリ化
Azul Zing (Prime)Azul Systems低レイテンシ GC (C4) 商用

Java バージョンと LTS

バージョンリリースLTS主な追加機能
Java 82014-03ラムダ式、Stream API、java.time、default メソッド
Java 92017-09モジュールシステム (Jigsaw)、jshell
Java 102018-03var 型推論
Java 112018-09HttpClient 標準化、ZGC (実験)、Single File Run
Java 142020-03record (プレビュー)、switch 式
Java 172021-09sealed クラス、record 正式、pattern matching
Java 212023-09仮想スレッド (Virtual Threads)、record パターン、Sequenced Collections

2018 年から6 ヶ月ごとのリリースになり、3 年ごとに LTS 指定(Java 17 → 21 → 25 …)です。非 LTS は次バージョンが出ると保守終了。

ディストリビューション (ベンダー)

ベンダー名称ライセンス備考
OracleOracle JDK商用は有償 (Java 17 以降の本番)開発・テストは無料 (NFTC ライセンス)
OracleOpenJDKGPL+CEリファレンス実装
AmazonCorretto無料AWS / 本番運用に最適化
Eclipse FoundationAdoptium Temurin無料旧 AdoptOpenJDK の後継、コミュニティ標準
AzulZulu (無料) / Zing (有償)無料 / 有償Zing は低レイテンシ GC
MicrosoftMicrosoft Build of OpenJDK無料Azure 親和性
Red HatOpenJDKRHEL に同梱RHEL サブスクで商用サポート
BellSoftLiberica JDK無料Spring Boot 推奨

Oracle ライセンスの変遷

  • ~Java 8 (2019 年 4 月まで): Oracle JDK は商用無料、Premier Support 終了後は有償
  • Java 11 (2019 年): Oracle JDK 商用利用は有償サブスクリプション必須(無料は開発・テストのみ)
  • Java 17 以降 (2021 年 9 月~): NFTC (No-Fee Terms and Conditions) ライセンスで本番でも無料(次の LTS リリース後 1 年は無料)
  • Java 21 (2023 年): 同じく NFTC で無料

OpenJDK ベースのTemurin / Corretto / Liberica は商用も無料で、本番にはOpenJDK 系を選ぶのが現代の定石です。

インストールと切替 (sdkman)

# sdkman 導入
curl -s "https://get.sdkman.io" | bash

# 利用可能 JDK 一覧
sdk list java

# Temurin 21 をインストール
sdk install java 21.0.1-tem

# Corretto 17 もインストール
sdk install java 17.0.9-amzn

# プロジェクト毎に切替
sdk use java 21.0.1-tem
sdk default java 17.0.9-amzn

Java SE と Jakarta EE の境界

Java EE 8 (2017) を最後に Oracle が Eclipse Foundation へ移管し、Jakarta EE となりました。パッケージ名も javax.*jakarta.* へ変更(Jakarta EE 9 から)。

// 旧 (Java EE 8 まで)
import javax.servlet.http.HttpServletRequest;
import javax.persistence.Entity;

// 新 (Jakarta EE 9+)
import jakarta.servlet.http.HttpServletRequest;
import jakarta.persistence.Entity;

Spring Framework は6.0 から jakarta.* に完全移行。Spring Boot 3.0 以降は Jakarta EE 9 互換 (Tomcat 10 系) となり、Java 17+ が必須です。

FAQ

Q: 業務で使うならどのバージョン?
A: 2026 年現在は Java 17 か 21。Spring Boot 3 は Java 17+ 必須。新規案件は Java 21 LTS が無難。

Q: Oracle JDK を本番で使うとライセンス料がかかる?
A: Java 17/21 は NFTC で無料利用可(次 LTS 後 1 年)。心配ならTemurin / Correttoを選べば確実に無料。

Q: GraalVM Native Image のメリットは?
A: 起動が数十 ms、メモリ削減大。サーバレス (Lambda) や CLI ツールに最適。リフレクション制限あり。