結論

OpenJDKはJavaの開発キット(JDK)のオープンソース版で、無料で使えるビルドを複数の配布元が出しています。選ぶ基準は、LTSの更新期間と動かす環境です。

この記事でわかること

  • 主な配布元6つのLTS・更新期限・ライセンス比較表
  • OpenJDK 8〜25とTemurinのjava -version実物6種
  • OS別のインストール3通りと版の切り替え4手順

2026年10月17日更新|OpenJDK 8〜25(Ubuntu版)・Temurin 25で実行確認

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 が四半期ごとに出すセキュリティ更新です。
混同 1OpenJDK は機能が少ない無料版
→
実際Java 11 以降は Oracle JDK とほぼ同じビルド

Red Hat の説明。違いはライセンスと更新の受け方

混同 2Oracle JDK はすべて有償
→
実際27・25 は NFTC で無料。有償になり得るのは OTN の版

21 は2026年10月の CPU から OTN へ移る予定

混同 3名前に OpenJDK と出れば Oracle と無関係
→
実際Oracle も jdk.java.net で OpenJDK のビルドを出している

配布元は 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)
2031年9月以降Temurin 25 の更新の目安Corretto 25 は2032年10月、Microsoft 25 は2030年9月
2027年10月以降Temurin 11・17 の更新の目安Microsoft の 11・17 は2027年9月が最も早い終了時期
2年ごとLTS の間隔25(2025年9月)の次は 29(2027年9月)

版ごとの新機能や、Oracle の Premier Support の期限は、関連記事「Javaバージョン一覧【2026年】LTSのサポート期限と違い」で扱っています。

AdoptOpenJDKがEclipse Temurinになった経緯

AdoptOpenJDK は、2021年に Eclipse Foundation へ移って「Eclipse Adoptium」になり、配っている JDK の名前は「Eclipse Temurin」になりました。 中身は同じ流れのビルドで、AdoptOpenJDK の名前の新しい更新は出ていません。

1

2017年:AdoptOpenJDK が始まる

London Java Community を拠点に、OpenJDK を無料でビルドして配るコミュニティとして始まりました。

2

2021年3月23日:Eclipse Adoptium の発足を告知

Eclipse Foundation への移管に合わせて、名前を AdoptOpenJDK から Adoptium に変えると発表しました。

3

2021年8月1日:Docker の adoptopenjdk イメージの更新が止まる

Docker Hub の adoptopenjdk イメージは非推奨になり、後継は eclipse-temurin イメージです。

Docker Hub の adoptopenjdk の説明文

4

2021年8月2日:Eclipse Temurin の最初のリリース

Java SE 8・11・16 の Temurin が adoptium.net で公開され、移管の完了が告知されました。

5

現在: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期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?