OpenJDKをインストールする【CentOS7】

CentOS7上にJavaのOpenJDK(バージョン17や最新安定版)やJREをダウンロードとインストールする方法について説明しています。Java開発ツールの環境やJavaアプリの実行環境を構築したい方は参考にしてください。

※ 本ページはプロモーションが含まれています。

このページの目的と動作環境

最終更新日:2023/5/28

本記事では、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のJDKとJREの違い。OpenJDKとは?OpenJDKの複数の種類について

このページでは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リポジトリの状態

まず、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」)

デフォルトのyumリポジトリからOpenJDK11をインストールする。JREだけインストールする場合も。

ここでは、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をインストールしてみます。
"java-11-openjdk-devel"の説明文に「OpenJDK Development Environment」と書いてあるのでこれがOpenJDKなのでこいつをインストールします。
$ 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(Eclipse Adoptium)のOpenJDK17、JRE17をインストールする。OpenJDKのアンインストール方法についても。

ここでは、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
〜

(広告)アマゾンでITネットワーク関連の本を探す!

MicrosoftのOpenJDK(Microsoft Build of OpenJDK)をインストールする

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、javacコマンド両方とも実行できます。(OpenJDKのバージョンはもちろん17です。)
$ 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

Javaコードのコンパイルと実行を試してみる

インストールした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も)のインストール方法について説明しました。