CentOS7上にJavaのOpenJDK(バージョン17や最新安定版)やJREをダウンロードとインストールする方法について説明しています。Java開発ツールの環境やJavaアプリの実行環境を構築したい方は参考にしてください。
※ 本ページはプロモーションが含まれています。
本記事では、Java開発ツールや実行環境のOpenJDKをダウンロード&インストールする方法について説明しています。(Javaの実行環境のみのOpenJREのインストールについても。)
Javaアプリの実行環境を構築したい方や、Javaプログラミング開発を勉強したい入門者・初心者の方も参考にしてください。
◾️動作環境とバージョン情報です
OS:CentOS Linux release 7.9
インストールしてみたOpenJDK、OpenJRE:Eclipse Temurin(Adoptium)のOpenJDK17(Java17)、JRE17、OpenJDK20(Java20)、MicrosoftのOpenJDK(Microsoft Build of OpenJDK)のOpenJDK17、CentOS7のデフォルトのyumリポジトリにあったOpenJDK11(Java11)、JRE11
別ページで、macにEclipse Temurin(Adoptium)のOpenJDK17、ec2(Amazon Linux2とAmazon Linux 2023)上にAmazonのOpenJDKのAmazon Correttoをインストールする方法について説明しています。
OpenJDKをインストールする【ec2(Amazon Linux 2,2023)】
OpenJDK17をインストールする【macOS】
このページではJavaのOpenJDKとOpenJREのインストール方法について説明していきますが、まずJDKとJREの違いについての簡単な説明です。
JRE(Java Runtime Environment)はJavaの実行環境で、JDK(Java Development Kit)はJavaプログラミング開発をするためのツールをまとめた物です。(JDKをインストールするとJREも一緒にインストールされます。)
ですので、Javaの開発環境と実行環境の両方を構築したい人や、Javaプログラミングの学習をしたい人はOpenJDKをインストールして、Javaアプリの実行環境さえあればいいという人はOpenJREをインストールすれば良いと思います。
次にOpenJDKは、Java(JDK)のオープンソースの参照実装です。そして、OpenJDKはいくつかのディストリビューション(ビルド)があります。例えば、Eclipse AdoptiumのEclipse Temurin(旧AdoptOpenJDK)というOpenJDKや、AmazonのAmazon CorrettoというOpenJDKや、MicrosoftのMicrosoft Build of OpenJDK、Azul Zulu Builds of OpenJDKなどです。
そして、OpenJDKは各ディストリビューションのライセンスに従って、フリー(無料)で使用する事ができます。
OpenJDK - Wikipedia
このページでもこのあとでEclipse AdoptiumとMicrosoftのOpenJDKのインストール方法について説明しています。
まず、OpenJDKをインストールする前の準備としてyum updateしました。
実際にyum updateするかどうかは各自の環境・判断でお願いします。
$ sudo yum update
あと、EPELのインストールについても各自の判断で。私の環境ではEPELを入れなくてもOpenJDKをインストールできたので入れませんでした。
$ sudo yum install epel-release
また、各OpenJDK(Javaディストリビューション)をダウンロード&インストールする為にyumリポジトリを追加しましたが、yumリポジトリ追加前のデフォルトのリポジトリ状態はこんな感じでした(自分の環境の場合)。
$ ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Sources.repo CentOS-fasttrack.repo
CentOS-CR.repo CentOS-Media.repo CentOS-Vault.repo CentOS-x86_64-kernel.repo
$ yum repolist
〜
リポジトリー ID リポジトリー名 状態
base/7/x86_64 CentOS-7 - Base 10,072
extras/7/x86_64 CentOS-7 - Extras 515
updates/7/x86_64 CentOS-7 - Updates 4,926
yum repolistコマンドは、現在有効なリポジトリ一覧を確認できます。(有効・無効関係なくリポジトリ一覧を確認したい場合はallオプションを付ける。「$ yum repolist all」)
ここでは、CentOS7のデフォルトのyumリポジトリからOpenJDKをインストールする方法について説明します。
Eclipse Temurin(Adoptium)のOpenJDK17(java17)やJREをインストールしたい場合はこの後に書いてあるこちらの方を参考にしてください。また、MicrosoftのOpenJDK17をインストールした場合はこちらの方を参考にしてください。
yum searchコマンドでOpenJDKを調べてみたら色々出てきました。
$ yum search openjdk
〜
java-1.8.0-openjdk.i686 : OpenJDK Runtime Environment 8
〜
java-11-openjdk.i686 : OpenJDK Runtime Environment 11
java-11-openjdk.x86_64 : OpenJDK 11 Runtime Environment
java-11-openjdk-demo.i686 : OpenJDK Demos 11
java-11-openjdk-demo.x86_64 : OpenJDK 11 Demos
java-11-openjdk-devel.i686 : OpenJDK Development Environment 11
java-11-openjdk-devel.x86_64 : OpenJDK 11 Development Environment
〜
色々あるけど、Javaのバージョンは1.6〜1.8や11とやはり古いバージョンばかりです。この中で一番新しいバージョンはJava11(OpenJDK11)なので(LTS(長期安定サポート)だし)、試しにこのOpenJDK11をインストールしてみます。$ sudo yum install java-11-openjdk-devel
〜
インストール:
java-11-openjdk-devel.x86_64 1:11.0.19.0.7-1.el7_9
依存性関連をインストールしました:
alsa-lib.x86_64 0:1.1.8-1.el7 avahi-libs.x86_64 0:0.6.31-20.el7
copy-jdk-configs.noarch 0:3.3-11.el7_9 cups-libs.x86_64 1:1.6.3-51.el7
dejavu-fonts-common.noarch 0:2.33-6.el7 dejavu-sans-fonts.noarch 0:2.33-6.el7
fontconfig.x86_64 0:2.13.0-4.3.el7 fontpackages-filesystem.noarch 0:1.44-8.el7
giflib.x86_64 0:4.1.6-9.el7 graphite2.x86_64 0:1.3.10-1.el7_3
harfbuzz.x86_64 0:1.7.5-2.el7 java-11-openjdk.x86_64 1:11.0.19.0.7-1.el7_9
java-11-openjdk-headless.x86_64 1:11.0.19.0.7-1.el7_9 javapackages-tools.noarch 0:3.4.1-11.el7
libICE.x86_64 0:1.0.9-9.el7 libSM.x86_64 0:1.2.2-2.el7
〜
完了しました!
インストールできました!
javaコマンドもjavacコマンドも実行できます(バージョン確認したらちゃんとOpenJDK11)。
$ java -version
openjdk version "11.0.19" 2023-04-18 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.19.0.7-1.el7_9) (build 11.0.19+7-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.19.0.7-1.el7_9) (build 11.0.19+7-LTS, mixed mode, sharing)
$ javac -version
javac 11.0.19
せっかくOpenJDKをインストールしたので、簡単なJavaプログラミングコードを書いてコンパイルして実行してみます。下の方の「Javaコードのコンパイルと実行を試してみる」で書いてあるので参考にしてください。
ちなみにOpenJDKではなくJRE(Javaの実行環境だけ)をインストールしたい場合、yum searchコマンで確認した"java-11-openjdk"の説明文が「OpenJDK Runtime Environment 11」となっているので、これをインストールすればできます。
$ sudo yum install java-11-openjdk
インストールした後に、javaとjavacコマンドを実行すると、javaは実行できるけど、javacはできません(JREで実行環境だけなのでこれでいい)。
$ java -version
openjdk version "11.0.19" 2023-04-18 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.19.0.7-1.el7_9) (build 11.0.19+7-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.19.0.7-1.el7_9) (build 11.0.19+7-LTS, mixed mode, sharing)
$ javac -version
-bash: javac: コマンドが見つかりません
ここでは、Eclipse Temurin(Adoptium)ディストリビューションのOpenJDKをインストールする方法について説明します。
Eclipse Temurinはライセンスに従って無料で使えるオープンソースのOpenJDKで、割と使用されているOpenJDKだと思います。昔あったAdoptOpenJDK(Java11かJava14ぐらいまで??)がEclipse Foundationに移行してAdoptiumワーキンググループができ、AdoptiumがEclipse TemurinというOpenJDKを公開しています。Adoptium TemurinはGCP(Google Cloud Platform)のJava環境にも使われているようなので、やはり結構人気のあるOpenJDKなのだと思います。
Google CloudのJavaランタイムにEclipse Temurin採用へ、GoogleがEclipse Adoptiumに参加を発表
まず、Eclipse TemurinのOpenJDKをインストールする為のyumリポジトリを追加します。下記コマンドを実行すれば(rootユーザで実行する)、Eclipse Temurin OpenJDK用のyumリポジトリファイル(/etc/yum.repos.d/adoptium.repo)が作成されます。
$ cat <<EOF > /etc/yum.repos.d/adoptium.repo
[Adoptium]
name=Adoptium
baseurl=https://packages.adoptium.net/artifactory/rpm/${DISTRIBUTION_NAME:-$(. /etc/os-release; echo $ID)}/\$releasever/\$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.adoptium.net/artifactory/api/gpg/key/public
EOF
一般ユーザで/etc/yum.repos.dディレクトリ下にリポジトリファイルを作るなら、|(パイプ)とsudo teeを使って下記コマンドを実行する。
$ cat <<EOF | sudo tee /etc/yum.repos.d/adoptium.repo
[Adoptium]
name=Adoptium
baseurl=https://packages.adoptium.net/artifactory/rpm/${DISTRIBUTION_NAME:-$(. /etc/os-release; echo $ID)}/\$releasever/\$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.adoptium.net/artifactory/api/gpg/key/public
EOF
作成されたadoptium.repoファイルの中身はこんな感じです(恐らく実行環境によってbaseurlの部分が少し異なると思う)。
$ cat /etc/yum.repos.d/adoptium.repo
[Adoptium]
name=Adoptium
baseurl=https://packages.adoptium.net/artifactory/rpm/centos/$releasever/$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.adoptium.net/artifactory/api/gpg/key/public
yum repolistで現在有効なリポジトリ一覧を確認すると、Adoptiumリポジトリ(Eclipse Temurin用)が追加されています。
$ yum repolist
〜
リポジトリー ID リポジトリー名 状態
Adoptium/7/x86_64 Adoptium 52
base/7/x86_64 CentOS-7 - Base 10,072
extras/7/x86_64 CentOS-7 - Extras 515
updates/7/x86_64 CentOS-7 - Updates 4,926
yum searchコマンドで確認してみます。
$ yum search temurin
〜
temurin-11-jdk.x86_64 : Eclipse Temurin 11 JDK
temurin-11-jre.x86_64 : Eclipse Temurin 11 JRE
temurin-17-jdk.x86_64 : Eclipse Temurin 17 JDK
temurin-17-jre.x86_64 : Eclipse Temurin 17 JRE
temurin-18-jdk.x86_64 : Eclipse Temurin 18 JDK
temurin-19-jdk.x86_64 : Eclipse Temurin 19 JDK
temurin-19-jre.x86_64 : Eclipse Temurin 19 JRE
temurin-20-jdk.x86_64 : Eclipse Temurin 20 JDK
temurin-20-jre.x86_64 : Eclipse Temurin 20 JRE
temurin-8-jdk.x86_64 : Eclipse Temurin 8 JDK
temurin-8-jre.x86_64 : Eclipse Temurin 8 JRE
Eclipse TemurinのOpenJDKとOpenJREがたくさんあります。
この中の最新バージョンはOpenJDK20(Java20)だけど、LTS(長期安定サポート)の最新安定板はOpenJDK17(Java17)なので(2023/5/16時点)、"temurin-17-jdk(Eclipse Temurin 17 JDK)"をダウンロード&インストールします。
$ sudo yum install temurin-17-jdk
〜
インストール:
temurin-17-jdk.x86_64 0:17.0.7.0.0.7-1
依存性関連をインストールしました:
alsa-lib.x86_64 0:1.1.8-1.el7 dejavu-fonts-common.noarch 0:2.33-6.el7 dejavu-sans-fonts.noarch 0:2.33-6.el7
fontconfig.x86_64 0:2.13.0-4.3.el7 fontpackages-filesystem.noarch 0:1.44-8.el7 libX11.x86_64 0:1.6.7-4.el7_9
libX11-common.noarch 0:1.6.7-4.el7_9 libXau.x86_64 0:1.0.8-2.1.el7 libXext.x86_64 0:1.3.3-3.el7
libXi.x86_64 0:1.7.9-1.el7 libXrender.x86_64 0:0.9.10-1.el7 libXtst.x86_64 0:1.2.3-1.el7
libxcb.x86_64 0:1.13-1.el7
完了しました!
Eclipse Temurin OpenJDKのバージョン20をインストールしたい場合のコマンドはこっち。
$ sudo yum install temurin-20-jdk
インストールできました!
javaコマンドもjavacコマンドも実行できます(バージョンはTemurinのOpenJDK17)。
$ java -version
openjdk version "17.0.7" 2023-04-18
OpenJDK Runtime Environment Temurin-17.0.7+7 (build 17.0.7+7)
OpenJDK 64-Bit Server VM Temurin-17.0.7+7 (build 17.0.7+7, mixed mode, sharing)
$ javac -version
javac 17.0.7
せっかくOpenJDKをインストールしたので、簡単なJavaプログラミングコードを書いてコンパイルして実行するまでを試してみます。下の方の「Javaコードのコンパイルと実行を試してみる」で書いてあるので参考にしてください。
ちなみにEclipse TemurinのJREだけ(Javaの実行環境だけ)インストールしたい場合、"temurin-17-jre"(OpenJREのバージョン17)をインストールすればできます。
$ sudo yum install temurin-17-jre
インストールした後にコマンドを確認すると、javaコマンドは実行できるけど、javacコマンドはできません(JREなのでこれでいい)。
$ java -version
openjdk version "17.0.7" 2023-04-18
OpenJDK Runtime Environment Temurin-17.0.7+7 (build 17.0.7+7)
OpenJDK 64-Bit Server VM Temurin-17.0.7+7 (build 17.0.7+7, mixed mode, sharing)
$ javac -version
-bash: javac: コマンドが見つかりません
■インストールしたOpenJDKをアンインストールする
上記の説明でインストールしたEclipse TemurinのOpenJDK17のアンインストール方法について説明します。(他のOpenJDKも同じやり方でできると思う。)
yum installでインストールしたので、yum removeでアンインストールをできる事はできます。
$ sudo yum remove temurin-17-jdk
ただ、yum removeコマンドだと指定した"temurin-17-jdk"だけ削除されて、"temurin-17-jdk"をインストールした時に一緒にインストールされた依存性関連のあるライブラリは削除されませんでした。(例えば、alsa-lib、libX11、libX11-common、dejavu-fonts-common…などのライブラリ)
依存性関連のあるライブラリを1つずつyum removeコマンドで削除してもいいのですが、数が多いのではっきり言って面倒です。
一方、yum autoremoveを実行したら、依存性関連のあるライブラリも同時に削除してくれました。
$ sudo yum autoremove temurin-17-jdk
yum autoremoveコマンドは、指定したパッケージを削除する時に必要なくなったパッケージ・ライブラリも自動で削除してくれるコマンドです。
ただ、yum autoremoveで削除されるライブラリ群の中にはもしかしたら削除してはいけない物も入っているかもと考えるとちょっと怖いので、いざyum autoremoveコマンドを実行する時は自己責任でお願いします。
あと、インストールしたパッケージ・ライブラリが残っているかどうかは、yum list installedコマンドの結果をgrepすれば確認できます。例えばこんな感じで。
$ yum list installed | grep -i java
$ yum list installed | grep -i jdk
$ yum list installed | grep -i libX11
$ yum list installed | grep -i dejavu
〜
MicrosoftもOpenJDKのディストリビューションを公開しているので、インストールを試してみます。
Eclipse Temurin(Adoptium)のOpenJDK17(java17)やJREをインストールする場合はこちらの方で説明しています。
Microsoftのサイトを確認すると、Windows,macOS,Linuxなどの各OS環境でインストールできそうです。
OpenJDK のMicrosoftビルドをインストールする | Microsoft Learn
CentOS7の場合、まず下のコマンドを実行してMicrosoftのOpenJDKをダウンロード&インストールする為のyumリポジトリを追加します。
$ sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
/etc/yum.repos.d/ディレクトリを確認すると、microsoft-prod.repoファイルが作成されました。
$ ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Sources.repo CentOS-fasttrack.repo microsoft-prod.repo
CentOS-CR.repo CentOS-Media.repo CentOS-Vault.repo CentOS-x86_64-kernel.repo
microsoft-prod.repoファイルの中身です。(恐らくOS環境によってbaseurlあたりが違うと思う。)
$ cat /etc/yum.repos.d/microsoft-prod.repo
[packages-microsoft-com-prod]
name=packages-microsoft-com-prod
baseurl=https://packages.microsoft.com/centos/7/prod
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc
sslverify=1
また、yum repolistでリポジトリを確認すると、packages-microsoft-com-prod リポジトリ(MicrosoftのOpenJDK用)が追加されています。
$ yum repolist
〜
リポジトリー ID リポジトリー名 状態
base/7/x86_64 CentOS-7 - Base 10,072
extras/7/x86_64 CentOS-7 - Extras 515
packages-microsoft-com-prod packages-microsoft-com-prod 1,755
updates/7/x86_64 CentOS-7 - Updates 4,926
yum searchコマンドで確認してみます。
$ yum search jdk
〜
msopenjdk-11.x86_64 : OpenJDK Development Kit 11 (JDK) with Hotspot by Microsoft
msopenjdk-16.x86_64 : OpenJDK Development Kit 16 (JDK) with Hotspot by Microsoft
msopenjdk-17.x86_64 : OpenJDK Development Kit 17 (JDK) with Hotspot by Microsoft
〜
MicrosoftのOpenJDKのバージョンは11,16,17の3つあります。11,17があるのでLTS(長期安定サポート)中心ですね。あと、JREだけというのは無さそうです。
もしかしたらMicrosoftのOpenJDK用のリポジトリが無効状態であるかもと思って、allオプションを付けてyum repolistコマンドを実行してみたけど無かったですね。
$ yum repolist all | grep -i micro
packages-microsoft-com-prod packages-microsoft-com-prod 有効: 1,756
という事でJREだけというのはやっぱり無さそうです。
この中の最新版のOpenJDK17をダウンロード&インストールします。
$ sudo yum install msopenjdk-17
〜
インストール:
msopenjdk-17.x86_64 0:17.0.7-1
完了しました!
インストールできました!$ java -version
openjdk version "17.0.7" 2023-04-18 LTS
OpenJDK Runtime Environment Microsoft-7626293 (build 17.0.7+7-LTS)
OpenJDK 64-Bit Server VM Microsoft-7626293 (build 17.0.7+7-LTS, mixed mode, sharing)
$ javac -version
javac 17.0.7
インストールしたOpenJDKで、Javaプログラミングコードのコンパイルと実行を試してみます。
簡単なJavaファイル(ただのHello world出力)を作成します。
$ ls
HelloWorld.java
$ cat HelloWorld.java
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Java OpenJDK world!!!.");
}
}
javacコマンドでコンパイルします。
$ javac HelloWorld.java
$ ls
HelloWorld.class HelloWorld.java
javaコマンドで実行します。
$ java HelloWorld
Hello, Java OpenJDK world!!!.
インストールしたOpenJDKを使ってjavaコンパイルから実行まで問題なくできました!
以上、本記事ではCentOS7環境でいくつかのディストリビューションのOpenJDK(OpenJREも)のインストール方法について説明しました。