- 技術 💻
OpenJDKとは|Oracle JDKとの違い・配布元比較とインストール
結論
OpenJDKはJavaの開発キット(JDK)のオープンソース版で、無料で使えるビルドを複数の配布元が出しています。選ぶ基準は、LTSの更新期間と動かす環境です。
この記事でわかること
- 主な配布元6つのLTS・更新期限・ライセンス比較表
- OpenJDK 8〜25とTemurinのjava -version実物6種
- OS別のインストール3通りと版の切り替え4手順
OpenJDK が出しているのはソースコードで、それをビルドして配る「配布元」が複数あります。中身はほぼ同じで、違うのは更新の期間・ライセンス・サポートです。
flowchart TD
S[OpenJDK のソース<br>openjdk.org] --> B[各社がビルド]
B --> T[Temurin<br>Corretto など]
B --> U[OS の<br>パッケージ]
B --> O[Oracle<br>JDK]
T --> J[java -version<br>で配布元を見る]
U --> J
O --> J
状況ごとに、よく選ばれる配布元は次のとおりです。
| 状況 | よく選ばれる配布元 | 詳しくは |
|---|---|---|
| 学習・個人開発で、どれか1つ入れたい | Eclipse Temurin の最新LTS(25) | 主な配布元の比較 |
| AWS で動かす | Amazon Corretto | 主な配布元の比較 |
| Azure で動かす | Microsoft Build of OpenJDK | 主な配布元の比較 |
| Linux サーバーで OS と一緒に更新したい | OS の openjdk パッケージ | OS別のインストール |
| Java 8 のシステムを保守する | Temurin 8・Corretto 8・OS の openjdk-8 | LTSの版と終了時期 |
| Oracle の有償サポートが要る | Oracle JDK(契約) | Oracle JDKとの違い |
| 最新の機能を試したい | 非LTSの Java 27 | LTSの版と終了時期 |
確認環境:Ubuntu 24.04 の apt で入れた OpenJDK 8u504・11.0.32.1・17.0.20.1・21.0.10・25.0.4.1 と、Eclipse Temurin 25.0.2+10(PyPI の jdk4py 25.0.2.1 に同梱のランタイム)で、java -version・-XshowSettings:properties・javac --release・版が合わないときのエラーを実際に出して載せています。JAVA_HOME の誤りは Gradle 8.14.3 で確かめました。配布元の更新期限・ライセンス・インストール手順は、Oracle・Eclipse Adoptium・AWS・Microsoft Learn・SDKMAN! の公式ページで確かめました(確認日 2026年10月17日)。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「OpenJDKとは|Oracle JDKとの違い・配布元比較とインストール」
OpenJDKとは
OpenJDK は、Java SE(Java の標準仕様)をオープンソースで実装するプロジェクトと、そのソースコードのことです。 公式サイト openjdk.org は、自らを「Java Platform, Standard Edition と関連プロジェクトのオープンソース実装で共同作業する場所」と説明しています。ライセンスは GPLv2 + Classpath Exception(GPL に「リンクして使うだけのアプリにはソース公開の義務を広げない」という例外を付けたもの)です。
まぎらわしい言葉を先に整理します。
| 言葉 | 意味 | 例 |
|---|---|---|
| Java SE | Java の標準の仕様 | Java SE 25 |
| JDK | 開発キット。コンパイラ javac と実行環境を含む | OpenJDK 25、Oracle JDK 25 |
| JRE | 実行環境だけ。javac を含まない | Ubuntu の openjdk-25-jre |
| OpenJDK | JDK のオープンソース実装(ソース) | openjdk.org の jdk リポジトリ |
| ディストリビューション(配布元) | OpenJDK をビルドして配る組織と、その製品名 | Eclipse Temurin、Amazon Corretto |
「OpenJDK をダウンロードする」とは何を入れることか
OpenJDK という名前の公式インストーラーが1つあるわけではありません。実際に入れるのは、どこかの配布元がビルドした JDK です。Oracle も jdk.java.net で OpenJDK のビルドを GPL で公開していますが、ここに置かれるのは最新の版です。そのため、同じ版を何年も使う用途では、LTS の更新期間を公開している配布元(Temurin・Corretto・Microsoft など)や OS のパッケージが選ばれます。
Eclipse Temurin の FAQ は、各リリースが Oracle の互換性テスト(JCK)に合格し、品質テスト群 AQAvit も通過していると説明しています。配布元が違っても、Java SE の仕様どおりに動くことが確かめられています。
OpenJDKとOracle JDKの違い
機能はほぼ同じで、違うのはライセンス・費用・更新の受け方です。 Red Hat は、Java 11 以降の OpenJDK と Oracle JDK のビルドは本質的に同じで、機能の差はわずかと説明しています。
| 項目 | OpenJDK のビルド(Temurin など) | Oracle JDK |
|---|---|---|
| ライセンス | GPLv2 + Classpath Exception | 版によって NFTC か OTN(下の表) |
| 費用 | 無料 | NFTC の版は無料。OTN の版は用途によって契約が要る |
| java -version の1行目 | openjdk version "25.0.4.1" |
java version "25"(Oracle のドキュメントの例) |
| 長期の更新 | 配布元ごとに期間を公開 | Premier・Extended Support(有償) |
| 入手先 | 各配布元のサイト・パッケージ管理 | oracle.com |
Oracle JDK のライセンスは版ごとに違う
Oracle のダウンロードページとサポートロードマップで確かめた、2026年10月17日時点の状況です。
| 版 | ライセンス | 補足 |
|---|---|---|
| Oracle JDK 27 | NFTC | 最新の版 |
| Oracle JDK 25 | NFTC(2028年9月より後の更新は OTN の予定) | 25.0.4.1 が最新の更新 |
| Oracle JDK 21 | NFTC → 2026年10月の CPU から OTN の予定 | 無料で使い続けるなら 25 以降へ、と Oracle は案内 |
| Oracle JDK 17・11・8 | OTN | 17.0.20.1・11.0.32.1・8u503 |
- NFTC(Oracle No-Fee Terms and Conditions):社内の業務での利用や開発・テストを無料で認めるライセンスです。再配布は、料金を取らない場合に限られます。
- OTN(Oracle Technology Network License):無料で認められる用途は、個人の利用・開発やテスト・Oracle が認めた製品の実行・Oracle Cloud 上の利用の4つです。それ以外の用途には Oracle との別の契約が要ります。
- CPU(Critical Patch Update):Oracle が四半期ごとに出すセキュリティ更新です。
Red Hat の説明。違いはライセンスと更新の受け方
21 は2026年10月の CPU から OTN へ移る予定
配布元は java -version の2行目と java.vendor で見分ける(後の節)
OpenJDKの主な配布元の比較
各配布元の公式ページで確かめた、2026年10月17日時点の比較です。どれも OpenJDK のソースからビルドされ、ライセンスは GPLv2 + Classpath Exception です(Oracle JDK を除く)。
| 配布元(製品名) | 提供元 | 無料の更新がある LTS | 特徴 |
|---|---|---|---|
| Eclipse Temurin | Eclipse Adoptium | 8・11・17・21・25 | 旧 AdoptOpenJDK。JCK と AQAvit に合格 |
| Amazon Corretto | Amazon | 8・11・17・21・25 | 四半期ごとに更新。AWS で使われる |
| Microsoft Build of OpenJDK | Microsoft | 11・17・21・25 | 8 は無い(Azure の 8 は Temurin を使う) |
| Oracle の OpenJDK ビルド | Oracle | ―(最新の版のみ) | jdk.java.net。GPL |
| OS のパッケージ | Ubuntu・Red Hat など | OS が収録する版 | apt・dnf で OS と一緒に更新 |
| Oracle JDK | Oracle | 版によって NFTC・OTN | 有償の Premier・Extended Support |
ほかにも Azul Zulu・BellSoft Liberica・IBM Semeru・SAP SapMachine などがあり、SDKMAN! の JDK 一覧には17の配布元が並んでいます。
どれを選ぶかの判断表
| 条件 | 選ぶもの | 理由 |
|---|---|---|
| 特に決まりがない | Eclipse Temurin | 8〜25 の全 LTS がそろい、OS も幅広い |
| AWS(Lambda・EC2・ECS など) | Amazon Corretto | AWS が提供。更新期限が公開されている |
| Azure・Windows 中心 | Microsoft Build of OpenJDK | Microsoft が提供。winget・Homebrew・apt で入る |
| Linux サーバーで更新を楽にしたい | OS の openjdk パッケージ | apt upgrade で OS と一緒に更新される |
| 有償サポートの契約が必要 | Oracle JDK、または各社の有償サポート | 契約で長期の修正を受ける |
| チームで版をそろえたい | SDKMAN! などで同じ識別子を指定 | 配布元と版を1行で固定できる |
OpenJDKのLTSの版と終了時期の早見表
LTS(Long-Term Support)は、長く更新が出る版です。 Oracle は LTS を2年ごとに出す方針で、次の LTS は 2027年9月の Java 29 です。LTS 以外の版(非LTS)は、次の版が出ると更新が止まります。
| 版 | 種類 | リリース | クラスファイルの版 |
|---|---|---|---|
| Java 8 | LTS | 2014年3月 | 52 |
| Java 11 | LTS | 2018年9月 | 55 |
| Java 17 | LTS | 2021年9月 | 61 |
| Java 21 | LTS | 2023年9月 | 65 |
| Java 25 | LTS | 2025年9月 | 69 |
| Java 26 | 非LTS | 2026年3月 | 70 |
| Java 27 | 非LTS(最新) | 2026年9月 | 71 |
| Java 29 | LTS(予定) | 2027年9月 | ― |
クラスファイルの版は、8〜25 は JDK 25 の javac --release で作ったファイルを javap -v で見た値です(26・27 は 25 に1ずつ足した値)。
配布元ごとの更新の終了時期
各社の公式ページの値です。Temurin は「少なくともこの時期まで」、Microsoft は「最も早い終了時期」として公開しています。
| 版 | Temurin | Corretto | Microsoft | Oracle JDK(Extended) |
|---|---|---|---|---|
| 8 | 2030年12月以降 | 2030年12月 | 提供なし | 2030年12月 |
| 11 | 2027年10月以降 | 2032年1月 | 2027年9月 | 2032年1月 |
| 17 | 2027年10月以降 | 2029年10月 | 2027年9月 | 2029年9月 |
| 21 | 2029年12月以降 | 2030年10月 | 2028年9月 | 2031年9月 |
| 25 | 2031年9月以降 | 2032年10月 | 2030年9月 | 2033年9月 |
| 27(非LTS) | 2027年3月 | 2027年4月 | 提供なし | 2027年3月(Premier) |
版ごとの新機能や、Oracle の Premier Support の期限は、関連記事「Javaバージョン一覧【2026年】LTSのサポート期限と違い」で扱っています。
AdoptOpenJDKがEclipse Temurinになった経緯
AdoptOpenJDK は、2021年に Eclipse Foundation へ移って「Eclipse Adoptium」になり、配っている JDK の名前は「Eclipse Temurin」になりました。 中身は同じ流れのビルドで、AdoptOpenJDK の名前の新しい更新は出ていません。
2017年:AdoptOpenJDK が始まる
London Java Community を拠点に、OpenJDK を無料でビルドして配るコミュニティとして始まりました。
2021年3月23日:Eclipse Adoptium の発足を告知
Eclipse Foundation への移管に合わせて、名前を AdoptOpenJDK から Adoptium に変えると発表しました。
2021年8月1日:Docker の adoptopenjdk イメージの更新が止まる
Docker Hub の adoptopenjdk イメージは非推奨になり、後継は eclipse-temurin イメージです。
2021年8月2日:Eclipse Temurin の最初のリリース
Java SE 8・11・16 の Temurin が adoptium.net で公開され、移管の完了が告知されました。
現在:adoptopenjdk.net は adoptium.net へ転送
2026年10月17日に adoptopenjdk.net を開くと、adoptium.net へ転送されました(302)。過去の AdoptOpenJDK のビルドは保管されていますが、更新は Temurin で出ています。
AdoptOpenJDK から移るときに置き換えるものは次のとおりです。
| AdoptOpenJDK のころ | いまの置き換え先 |
|---|---|
| adoptopenjdk.net | adoptium.net |
| api.adoptopenjdk.net(ダウンロード用 API) | api.adoptium.net |
Docker イメージ adoptopenjdk |
eclipse-temurin |
| OpenJ9 版のビルド | IBM の Semeru(Adoptium は OpenJ9 版を出さない) |
java -versionの読み方(配布元と版)
どの配布元のどの版が動いているかは、java -version の1〜2行目で分かります。 同じ Ubuntu に入れた 8・11・17・21・25 と、Temurin 25 の出力です。
$ java -version # OpenJDK 8(Ubuntu)
openjdk version "1.8.0_504"
OpenJDK Runtime Environment (build 1.8.0_504-8u504-ga-1ubuntu1~24.04.3-b01)
OpenJDK 64-Bit Server VM (build 25.504-b01, mixed mode)
$ java -version # OpenJDK 11(Ubuntu)
openjdk version "11.0.32.1" 2026-08-18
OpenJDK Runtime Environment (build 11.0.32.1+1-post-1ubuntu1-24.04-Ubuntu)
OpenJDK 64-Bit Server VM (build 11.0.32.1+1-post-1ubuntu1-24.04-Ubuntu, mixed mode, sharing)
$ java -version # OpenJDK 17(Ubuntu)
openjdk version "17.0.20.1" 2026-08-18
OpenJDK Runtime Environment (build 17.0.20.1+1-1-24.04-Ubuntu)
OpenJDK 64-Bit Server VM (build 17.0.20.1+1-1-24.04-Ubuntu, mixed mode, sharing)
$ java -version # OpenJDK 21(Ubuntu)
openjdk version "21.0.10" 2026-01-20
OpenJDK Runtime Environment (build 21.0.10+7-Ubuntu-124.04)
OpenJDK 64-Bit Server VM (build 21.0.10+7-Ubuntu-124.04, mixed mode, sharing)
$ java -version # OpenJDK 25(Ubuntu)
openjdk version "25.0.4.1" 2026-08-18
OpenJDK Runtime Environment (build 25.0.4.1+1-1-24.04.4-Ubuntu)
OpenJDK 64-Bit Server VM (build 25.0.4.1+1-1-24.04.4-Ubuntu, mixed mode, sharing)
$ java -version # Eclipse Temurin 25
openjdk version "25.0.2" 2026-01-20 LTS
OpenJDK Runtime Environment Temurin-25.0.2+10 (build 25.0.2+10-LTS)
OpenJDK 64-Bit Server VM Temurin-25.0.2+10 (build 25.0.2+10-LTS, mixed mode)
出力の各部分の意味
| 見る場所 | 例 | 分かること |
|---|---|---|
| 1行目の先頭 | openjdk version / java version |
OpenJDK のビルドか、Oracle JDK か |
| 1行目の版 | 25.0.4.1 |
機能版.暫定.更新.緊急修正(下の説明) |
| 1行目の日付 | 2026-08-18 |
その更新の日付 |
| 1行目の末尾 | LTS |
配布元が LTS として出している印 |
| 2行目の名前 | Temurin-25.0.2+10 |
配布元(Temurin・Corretto など) |
| build の後ろ | -Ubuntu、ubuntu1~24.04 |
OS のパッケージでビルドされたもの |
JEP 322 によると、版の番号は 機能版.暫定.更新.緊急修正($FEATURE.$INTERIM.$UPDATE.$PATCH)の形です。25.0.4.1 は「25 の4回目の更新に、緊急の修正を1回足したもの」と読めます。2行目の配布元名(Temurin-25.0.2+10)は java.vendor.version の値で、入れない配布元もあります。上の Ubuntu のビルドには、配布元名も LTS の印もありません。Corretto のドキュメントの例では、2行目が OpenJDK Runtime Environment Corretto-25.0.4.10.1 (build 25.0.4+10-LTS) です。
Java 8 だけは形が違い、1.8.0_504 は「8 の更新 504」(8u504)という意味です。 Java 9 から今の形になりました。
更新が最新かも、版の番号で分かる
上の 21 は 21.0.10 でした。Oracle のダウンロードページでは 21 の最新の更新は 21.0.12.1 で、この Ubuntu の apt でも次の候補が出ていました。
$ apt-cache policy openjdk-21-jdk-headless
openjdk-21-jdk-headless:
Installed: 21.0.10+7-1~24.04
Candidate: 21.0.12.1+1-1~24.04.4
OS のパッケージで入れた JDK は、apt upgrade などで OS を更新するまで前の更新のまま残ります。
配布元は java.vendor でも確かめられる
スクリプトで判定するときは、-XshowSettings:properties の java.vendor を見ると確実です。
java -XshowSettings:properties -version 2>&1 | grep -E 'java\.(vendor|vendor\.version|runtime\.version) '
# Eclipse Temurin 25
java.runtime.version = 25.0.2+10-LTS
java.vendor = Eclipse Adoptium
java.vendor.version = Temurin-25.0.2+10
# OpenJDK 25(Ubuntu)
java.runtime.version = 25.0.4.1+1-1-24.04.4-Ubuntu
java.vendor = Ubuntu
-version と --version の違い
| オプション | 出力先 | 使える版 |
|---|---|---|
java -version |
標準エラー | 全部の版 |
java --version |
標準出力 | 11・17・21・25 で使えた。8 では Unrecognized option: --version |
JDK 25 で試すと、java -version 2>/dev/null は0行、java --version 2>/dev/null は3行出ました。java -version | grep ... が何も拾わないのは、標準エラーに出ているためです。 2>&1 を付けるか、9 以降なら --version を使います。
入っている JDK を一覧にするスクリプト
#!/usr/bin/env bash
# 指定したフォルダの下にある JDK の版と配布元を一覧にする(既定は /usr/lib/jvm)
for home in "${1:-/usr/lib/jvm}"/*/; do
home=${home%/}
[ -L "$home" ] && continue # 別名のシンボリックリンクは飛ばす
java="$home/bin/java"
[ -x "$java" ] || continue
props=$("$java" -XshowSettings:properties -version 2>&1)
ver=$(printf '%s\n' "$props" | awk -F' = ' '/^ *java.runtime.version =/{print $2}')
vendor=$(printf '%s\n' "$props" | awk -F' = ' '/^ *java.vendor =/{print $2}')
printf '%-38s %-17s %s\n' "$home" "$vendor" "$ver"
done
/usr/lib/jvm/java-11-openjdk-amd64 Ubuntu 11.0.32.1+1-post-1ubuntu1-24.04-Ubuntu
/usr/lib/jvm/java-17-openjdk-amd64 Ubuntu 17.0.20.1+1-1-24.04-Ubuntu
/usr/lib/jvm/java-21-openjdk-amd64 Ubuntu 21.0.10+7-Ubuntu-124.04
/usr/lib/jvm/java-25-openjdk-amd64 Ubuntu 25.0.4.1+1-1-24.04.4-Ubuntu
/usr/lib/jvm/java-8-openjdk-amd64 Ubuntu 1.8.0_504-8u504-ga-1ubuntu1~24.04.3-b01
Temurin 25 のフォルダに対して実行すると、配布元は Eclipse Adoptium、版は 25.0.2+10-LTS と出ました。macOS では引数に /Library/Java/JavaVirtualMachines の下の各 JDK の Contents/Home を渡す形に変えます。
JVM の起動オプション全般は、関連記事「JVMオプション一覧|Xmx・Xms・GCログ設定をJava 21対応で」で扱っています。
OpenJDKのインストール(Windows・Mac・Linux)
各配布元の公式ページに載っているコマンドです。版の数字(25)を変えると、ほかの LTS も同じ形で入ります。
Windows
winget(Windows のパッケージ管理)なら1行で入ります。Adoptium のページに載っている ID です。
winget install EclipseAdoptium.Temurin.25.JDK
winget install EclipseAdoptium.Temurin.11.JDK
MSI のインストーラーでは、既定で入る機能は本体・PATH の更新・.jar の関連付けの3つで、JAVA_HOME の設定(FeatureJavaHome)は既定では入りません。 画面で選ぶか、コマンドで指定します。
msiexec /i <package>.msi ADDLOCAL=FeatureMain,FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome INSTALLDIR="c:\Program Files\Temurin\" /quiet
Windows での手順を画面つきで追う場合は、関連記事「Javaインストール(Windows)|JDK 25とJAVA_HOME設定まで」で扱っています。
Mac
Homebrew の cask で入ります。temurin は最新の版(2026年10月17日時点で 27)、Microsoft のビルドは版を指定できます。
brew install --cask temurin
brew install --cask microsoft-openjdk@25
macOS では、JDK は /Library/Java/JavaVirtualMachines/ の下に入ります(Temurin は temurin-<版>.jdk)。どの版を使うかは、Oracle のドキュメントにある java_home で指定できます。
/usr/libexec/java_home -v 25 --exec javac -version
export JAVA_HOME=$(/usr/libexec/java_home -v 21)
Linux(Ubuntu・Debian)
OS のパッケージなら追加の設定なしで入ります。Ubuntu 24.04 の apt には 8・11・17・21・25 があります。
sudo apt update
sudo apt install openjdk-25-jdk # 画面(GUI)用のライブラリも入る
sudo apt install openjdk-25-jdk-headless # サーバー向け。GUI 用のライブラリなし
| パッケージ | 中身 |
|---|---|
openjdk-25-jdk-headless |
JDK(javac あり)。GUI なし |
openjdk-25-jdk |
上に GUI 用の部分を足したもの |
openjdk-25-jre-headless |
実行環境だけ(javac なし)。GUI なし |
openjdk-25-jre |
実行環境だけ。GUI あり |
Temurin・Corretto・Microsoft のビルドを apt で入れるときは、それぞれのリポジトリを足します。
# Eclipse Temurin(Adoptium のページの手順)
sudo apt install -y wget apt-transport-https gpg
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/adoptium.list
sudo apt update
sudo apt install temurin-25-jdk
# Amazon Corretto(AWS のドキュメントの手順)
wget -O - https://apt.corretto.aws/corretto.key | sudo gpg --dearmor -o /usr/share/keyrings/corretto-keyring.gpg && \
echo "deb [signed-by=/usr/share/keyrings/corretto-keyring.gpg] https://apt.corretto.aws stable main" | sudo tee /etc/apt/sources.list.d/corretto.list
sudo apt-get update; sudo apt-get install -y java-25-amazon-corretto-jdk
Linux(RHEL・Fedora)
# Eclipse Temurin:/etc/yum.repos.d/adoptium.repo を作ってから
sudo dnf install temurin-25-jdk
# Amazon Corretto
sudo rpm --import https://yum.corretto.aws/corretto.key
sudo curl -L -o /etc/yum.repos.d/corretto.repo https://yum.corretto.aws/corretto.repo
sudo yum install -y java-25-amazon-corretto-devel
OpenJDK 8 を入れるとき
| 方法 | コマンド・入手先 |
|---|---|
| Ubuntu の apt | sudo apt install openjdk-8-jdk-headless |
| Eclipse Temurin 8 | adoptium.net、または SDKMAN! の -tem |
| Amazon Corretto 8 | AWS の Corretto 8 のページ |
| Microsoft | 8 は出していない(Azure では Temurin 8 を使う) |
Java 8 の JDK は、フォルダの中に jre があり、java は jre/bin/java にあります(Ubuntu の update-alternatives も java-8-openjdk-amd64/jre/bin/java を指していました)。9 以降には jre フォルダはありません。
JAVA_HOMEの設定
JAVA_HOME は、ビルドツールや IDE が「どの JDK を使うか」を知るための環境変数です。 JDK のフォルダ(bin の1つ上)を指定します。
# ~/.bashrc や ~/.zshrc に書く(Linux の例)
export JAVA_HOME=/usr/lib/jvm/java-25-openjdk-amd64
export PATH="$JAVA_HOME/bin:$PATH"
JAVA_HOME だけ変えても java の版は変わらない
ターミナルで打つ java は PATH で決まり、JAVA_HOME では決まりません。 実際に試した結果です。
$ readlink -f $(which java)
/usr/lib/jvm/java-21-openjdk-amd64/bin/java
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
$ java -version
openjdk version "21.0.10" 2026-01-20 ← 21 のまま
$ export PATH="$JAVA_HOME/bin:$PATH"
$ java -version
openjdk version "17.0.20.1" 2026-08-18 ← PATH を足すと 17 になる
$ javac -version
javac 17.0.20.1
一方、Gradle などのツールは JAVA_HOME を見ます。JAVA_HOME を間違えたときに Gradle 8.14.3 が出したエラーです。
$ JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64/bin gradle --version
ERROR: JAVA_HOME is set to an invalid directory: /usr/lib/jvm/java-21-openjdk-amd64/bin
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
bin まで書くと誤りです。 存在しないフォルダを指定したときも同じエラーでした。PATH の設定の書き方は、関連記事「Linux環境変数PATHの設定方法|exportと.bashrcの使い分け早見表」で扱っています。
複数のOpenJDKを切り替える方法
1台に複数の版を入れて切り替える方法は、次の4つです。
1update-alternatives(Debian・Ubuntu)
OS 全体の java を切り替えます。sudo update-alternatives --config java で番号を選びます。RHEL 系は alternatives。
2シェルの関数(その場だけ)
JAVA_HOME と PATH をまとめて書き換える関数を作ります。開いているターミナルだけに効きます。
3java_home(macOS)
export JAVA_HOME=$(/usr/libexec/java_home -v 21) のように版の数字で選びます。
4SDKMAN!(Linux・macOS・WSL)
配布元と版を識別子で入れて切り替えます。プロジェクトごとに .sdkmanrc で固定できます。
update-alternatives で OS 全体を切り替える
登録されている JDK と、いま選ばれているものを確かめます。
$ update-alternatives --display java
java - manual mode
link best version is /usr/lib/jvm/java-25-openjdk-amd64/bin/java
link currently points to /usr/lib/jvm/java-21-openjdk-amd64/bin/java
link java is /usr/bin/java
...
$ update-alternatives --list java
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
/usr/lib/jvm/java-17-openjdk-amd64/bin/java
/usr/lib/jvm/java-21-openjdk-amd64/bin/java
/usr/lib/jvm/java-25-openjdk-amd64/bin/java
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
manual mode は、手で選んだ版(ここでは 21)が使われている状態です。一番新しい 25 が入っていても、自動では切り替わりません。切り替えるコマンドは次のとおりで、javac も別に選びます。
sudo update-alternatives --config java
sudo update-alternatives --config javac
Ubuntu には、java・javac などをまとめて切り替える update-java-alternatives もあります。
$ update-java-alternatives -l
java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64
java-1.17.0-openjdk-amd64 1711 /usr/lib/jvm/java-1.17.0-openjdk-amd64
java-1.21.0-openjdk-amd64 2111 /usr/lib/jvm/java-1.21.0-openjdk-amd64
java-1.25.0-openjdk-amd64 2511 /usr/lib/jvm/java-1.25.0-openjdk-amd64
java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64
sudo update-java-alternatives --set java-1.25.0-openjdk-amd64
シェルの関数でその場だけ切り替える
# ~/.bashrc に書く
jdk() {
export JAVA_HOME="/usr/lib/jvm/java-$1-openjdk-amd64"
export PATH="$JAVA_HOME/bin:$PATH"
java -version 2>&1 | head -1
}
$ jdk 17
openjdk version "17.0.20.1" 2026-08-18
$ jdk 8
openjdk version "1.8.0_504"
$ jdk 25
openjdk version "25.0.4.1" 2026-08-18
$ javac -version
javac 25.0.4.1
SDKMAN! で配布元ごと切り替える
SDKMAN! は、識別子の末尾で配布元を表します(-tem は Temurin、-amzn は Corretto、-ms は Microsoft、-oracle は Oracle JDK、-open は jdk.java.net のビルド)。
sdk list java # 入れられる配布元と版の一覧
sdk install java 21.0.4-tem # 版と配布元を指定して入れる
sdk use java 21.0.4-tem # このシェルだけ切り替える
sdk default java 21.0.4-tem # 以後のシェルの既定にする
sdk current java # 使っている版を表示
sdk env init # プロジェクトに .sdkmanrc を作る
sdk env # .sdkmanrc の版に切り替える
21.0.4-tem は SDKMAN! のドキュメントにある例です。入れられる版は sdk list java で確かめます。
版が合わないときのエラーと直し方
JDK を複数入れると、コンパイルした版と実行する版がずれてエラーになりやすくなります。JDK 25 でコンパイルしたクラスを JDK 8 で動かすと、次のエラーになりました。
$ javac Hello.java # JDK 25
$ java Hello # JDK 8
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: Hello has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 52.0
--release で実行する側の版に合わせてコンパイルすると動きます。
$ javac --release 8 Hello.java # JDK 25 の javac
warning: [options] source value 8 is obsolete and will be removed in a future release
warning: [options] target value 8 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
3 warnings
$ java Hello # JDK 8
java.version = 1.8.0_504
java.vendor = Ubuntu
java.home = /usr/lib/jvm/java-8-openjdk-amd64/jre
| エラー文(原文) | 原因 | 直し方 |
|---|---|---|
UnsupportedClassVersionError ... (class file version 69.0) ... up to 52.0 |
25 で作ったクラスを 8 で実行 | 実行側を新しくする。または javac --release 8 |
UnsupportedClassVersionError ... (class file version 65.0) ... up to 61.0 |
21 で作ったクラスを 17 で実行 | 実行側を 21 以上にする。または --release 17 |
error: release version 7 not supported |
JDK 25 の javac は 7 向けに作れない | 8 以上を指定する |
Unrecognized option: --version |
Java 8 の java は --version を受け付けない |
java -version を使う |
ERROR: JAVA_HOME is set to an invalid directory |
JAVA_HOME が bin まで、または存在しないフォルダ |
JDK のフォルダ(bin の1つ上)を指定 |
java: command not found |
PATH に JDK の bin が無い |
PATH に $JAVA_HOME/bin を足す |
エラー文の「class file version」は、前の「LTSの版と終了時期」の表で版に読み替えられます(52 が 8、61 が 17、65 が 21、69 が 25)。最新の非LTS である Java 27 の変更点は、関連記事「Java 27の新機能まとめ|値クラス(Valhalla)も解説」で扱っています。
よくある質問
Q. openjdk とは何ですか? A. Java SE をオープンソースで実装したプロジェクトと、そのソースコードです。実際に入れるのは、Temurin・Corretto などの配布元がビルドした JDK です。「OpenJDKとは」の節で詳しく説明しています。
Q. open jdk と Oracle JDK はどちらを使えばよいですか? A. 機能はほぼ同じなので、ライセンスと更新の受け方で選びます。無料で長く更新を受けたいなら OpenJDK の配布元(Temurin・Corretto など)、Oracle の有償サポートが要るなら Oracle JDK です。
Q. openjdk 8 はまだ使えますか? A. Temurin 8 は2030年12月以降、Corretto 8 は2030年12月まで更新が予定されています。Microsoft Build of OpenJDK には 8 がありません。「LTSの版と終了時期」の表にまとめています。
Q. adoptopenjdk はどうなりましたか? A. 2021年に Eclipse Foundation へ移って Eclipse Adoptium になり、JDK の名前は Eclipse Temurin になりました。adoptopenjdk.net は adoptium.net へ転送され、Docker イメージは eclipse-temurin が後継です。
Q. openjdk lts はどの版ですか? A. 8・11・17・21・25 が LTS で、次は2027年9月の 29 の予定です。26・27 は非LTS で、次の版が出ると更新が止まります。
Q. openjdk インストールの方法は?
A. Windows は winget install EclipseAdoptium.Temurin.25.JDK、Mac は brew install --cask temurin、Ubuntu は sudo apt install openjdk-25-jdk です。入れたら java -version と JAVA_HOME を確かめます。
まとめ
- OpenJDK はソースコード。入れるのは配布元(Temurin・Corretto・Microsoft・OS のパッケージなど)がビルドした JDK。
- Oracle JDK との違いは機能ではなく、ライセンス(NFTC・OTN)・費用・更新の受け方。Oracle JDK 21 は2026年10月の CPU から OTN の予定。
- LTS は 8・11・17・21・25。更新の終了時期は配布元で違う(25 なら Temurin 2031年9月以降、Corretto 2032年10月、Microsoft 2030年9月)。
- AdoptOpenJDK は2021年に Eclipse Temurin になった。Docker は eclipse-temurin、API は api.adoptium.net。
- 配布元と版は
java -versionの1〜2行目とjava.vendorで分かる。-versionは標準エラーに出る。 - ターミナルの
javaは PATH で決まり、ツールは JAVA_HOME を見る。JAVA_HOME はbinの1つ上を指定する。 - 版の切り替えは update-alternatives・シェルの関数・java_home・SDKMAN! の4通り。
UnsupportedClassVersionErrorは--releaseか実行側の版で直す。
参考・出典
確認日はいずれも 2026年10月17日です。
- OpenJDK:https://openjdk.org/
- JEP 322: Time-Based Release Versioning:https://openjdk.org/jeps/322
- jdk.java.net(Oracle の OpenJDK ビルド):https://jdk.java.net/
- Oracle「Oracle Java SE Support Roadmap」:https://www.oracle.com/java/technologies/java-se-support-roadmap.html
- Oracle「Java Downloads」:https://www.oracle.com/java/technologies/downloads/
- Oracle「Oracle No-Fee Terms and Conditions (NFTC)」:https://www.oracle.com/downloads/licenses/no-fee-license.html
- Oracle「Oracle Technology Network License Agreement for Oracle Java SE」:https://www.oracle.com/downloads/licenses/javase-license1.html
- Oracle「Installation of the JDK on macOS」:https://docs.oracle.com/en/java/javase/25/install/installation-jdk-macos.html
- Eclipse Adoptium「Support」:https://adoptium.net/support/
- Eclipse Adoptium「FAQ」:https://adoptium.net/docs/faq/
- Eclipse Adoptium「Installation」:https://adoptium.net/installation/
- Eclipse Adoptium「Linux (RPM/DEB/APK) installer packages」:https://adoptium.net/installation/linux/
- Eclipse Adoptium「Windows MSI installer packages」:https://adoptium.net/installation/windows/
- Eclipse Adoptium「macOS PKG installer packages」:https://adoptium.net/installation/macOS/
- Eclipse Adoptium「Eclipse Adoptium Welcomes You」:https://adoptium.net/news/2021/03/eclipse-adoptium-announcement
- Eclipse Adoptium「Adoptium Celebrates First Release」:https://adoptium.net/news/2021/08/adoptium-celebrates-first-release/
- AdoptOpenJDK「Goodbye AdoptOpenJDK. Hello Adoptium!」:https://blog.adoptopenjdk.net/2021/08/goodbye-adoptopenjdk-hello-adoptium/
- Docker Hub「adoptopenjdk」:https://hub.docker.com/_/adoptopenjdk
- AWS「Amazon Corretto FAQs」:https://aws.amazon.com/corretto/faqs/
- AWS「Amazon Corretto 25 Installation Instructions for Debian-Based, RPM-Based and Alpine Linux Distributions」:https://docs.aws.amazon.com/corretto/latest/corretto-25-ug/generic-linux-install.html
- Microsoft Learn「Support roadmap for the Microsoft Build of OpenJDK」:https://learn.microsoft.com/en-us/java/openjdk/support
- Microsoft Learn「Install the Microsoft Build of OpenJDK」:https://learn.microsoft.com/en-us/java/openjdk/install
- Microsoft Learn「Download the Microsoft Build of OpenJDK」:https://learn.microsoft.com/en-us/java/openjdk/download
- Homebrew「temurin」:https://formulae.brew.sh/cask/temurin
- SDKMAN!「Usage」:https://sdkman.io/usage
- SDKMAN!「JDK Distributions」:https://sdkman.io/jdks
- Red Hat「OpenJDK と Oracle JDK」:https://www.redhat.com/ja/topics/application-modernization/openjdk-vs-oracle-jdk
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「OpenJDKとは|Oracle JDKとの違い・配布元比較とインストール」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。