UbuntuにJavaをインストールする
1. 概要
このチュートリアルでは、different methods for installing a JDK on Ubuntuを紹介します。 次に、方法を簡単に比較します。 最後に、Ubuntuシステムで複数のJavaインストールを管理する方法を示します。
各方法の前提条件として、必要なのは
-
Ubuntuシステム
-
sudo権限を持つ非rootユーザーとしてログインする
以下に説明する手順は、Ubuntu 18.10、18.04 LTS、16.04 LTS、および14.04 LTSでテストされています。 Ubuntu 14.04 LTSの場合、本文に記載されているいくつかの違いがあります。
OpenJDKおよびOracleからダウンロードできるパッケージと、リポジトリで利用可能なパッケージの両方が定期的に更新されることに注意してください。 正確なパッケージ名はおそらく数か月以内に変更されますが、インストールの基本的な方法は同じままです。
2. JDK11のインストール
JDKの最新かつ最高のバージョンを使用したい場合は、多くの場合、手動インストールが最適です。 これは、OpenJDKまたはOracleサイトからパッケージをダウンロードし、aptがJDKパッケージを設定する方法の規則に準拠するように設定することを意味します。
2.1. OpenJDK11を手動でインストールする
まず、最近リリースされたOpenJDK 11のtarアーカイブをダウンロードしましょう。
$ wget https://download.java.net/java/ga/jdk11/openjdk-11_linux-x64_bin.tar.gz
そして、ダウンロードしたパッケージのsha256の合計をthe one provided on the OpenJDK siteと比較します。
$ sha256sum openjdk-11_linux-x64_bin.tar.gz
tarアーカイブを抽出しましょう:
$ tar xzvf openjdk-11_linux-x64_bin.tar.gz
次に、抽出したjdk-11ディレクトリを/usr/lib/jvmのサブディレクトリに移動しましょう。 次のセクションで説明するaptパッケージも、JDKを次のディレクトリに配置します。
$ sudo mkdir /usr/lib/jvm
$ sudo mv jdk-11 /usr/lib/jvm/openjdk-11-manual-installation/
ここで、make the java and javac commands availableにします。 1つの可能性は、たとえば/usr/binディレクトリにそれらのシンボリックリンクを作成することです。 ただし、代わりに、両方の代替をインストールします。 このように、JDKの追加バージョンをインストールしたい場合、それらは一緒にうまく動作します:
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/openjdk-11-manual-installation/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/openjdk-11-manual-installation/bin/javac 1
インストールを確認しましょう:
$ java -version
出力からわかるように、OpenJDKJREとJVMの最新バージョンを実際にインストールしました。
openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
コンパイラのバージョンも見てみましょう。
$ javac -version
javac 11
2.2. Oracle JDK11の手動インストール
Oracle JDKの最新バージョンを使用したい場合は、OpenJDKの場合と同様の手動インストールワークフローに従うことができます。 JDK 11のtarアーカイブをOracle website、we must accept a license agreement firstからダウンロードするため。 このため、wgetを介したダウンロードは、OpenJDKの場合よりも少し複雑です。
$ wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" \
http://download.oracle.com/otn-pub/java/jdk/11.0.1+13/90cf5d8f270a4347a95050320eef3fb7/jdk-11.0.1_linux-x64_bin.tar.gz
上記の例では、11.0.1のパッケージがダウンロードされます。正確なダウンロードリンクは、マイナーバージョンごとに変わります。
次の手順は、OpenJDKの場合と同じです。
$ sha256sum jdk-11.0.1_linux-x64_bin.tar.gz
$ tar xzvf jdk-11.0.1_linux-x64_bin.tar.gz
$ sudo mkdir /usr/lib/jvm
$ sudo mv jdk-11.0.1 /usr/lib/jvm/oracle-jdk-11-manual-installation/
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/oracle-jdk-11-manual-installation/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/oracle-jdk-11-manual-installation/bin/javac 1
検証も同じです。 しかし、出力は、今回はOpenJDKではなくJava™をインストールしたことを示しています。
$ java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
コンパイラーの場合:
$ javac -version
javac 11.0.1
2.3. PPAからのOracleJDK11のインストール
現在、Oracle JDK 11はPPA(個人パッケージアーカイブ)でも利用可能です。 このインストールには2つのステップが含まれます。システムにリポジトリを追加することと、apt:を介してリポジトリからパッケージをインストールすることです。
$ sudo add-apt-repository ppa:linuxuprising/java
$ sudo apt update
$ sudo apt install oracle-java11-installer
検証手順では、セクション2.2.1の手動インストール後と同じ結果が表示されます。
$ java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
コンパイラーの場合:
$ javac -version
javac 11.0.1
Ubuntu 14.04 LTSでは、add-apt-repositoryコマンドはデフォルトでは使用できません。 リポジトリを追加するには、最初にsoftware-properties-commonパッケージをインストールする必要があります。
$ sudo apt update
$ sudo apt install software-properties-common
その後、上記のようにadd-apt-repository, apt update とapt installを続行できます。
3. JDK8のインストール
3.1. Ubuntu 16.04LTS以降へのOpenJDK8のインストール
JDK 8は、しばらく前から存在しているLTSバージョンです。 このため、サポートされているほとんどのUbuntuバージョンの「メイン」リポジトリでOpenJDK 8の最新バージョンを見つけることができます。 もちろん、OpenJDK Webサイトにアクセスして、そこでパッケージを取得し、前のセクションで見たのと同じ方法でインストールすることもできます。
ただし、aptツールと「メイン」リポジトリを使用すると、いくつかの利点があります。 「メイン」リポジトリは、すべてのUbuntuシステムでデフォルトで使用可能です。 これは、Ubuntu自体を管理しているのと同じ会社であるCanonicalによってサポートされています。
aptを使用して「メイン」リポジトリからOpenJDK8をインストールしましょう。
$ sudo apt update
$ sudo apt install openjdk-8-jdk
それでは、インストールを確認しましょう。
$ java -version
結果には、ランタイム環境とJVMがリストされます。
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.18.04.1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
javac実行可能ファイルも使用可能であることを確認しましょう。
$ javac -version
これで、上記と同じバージョン番号が表示されるはずです。
javac 1.8.0_181
3.2. Ubuntu 14.04LTSへのOpenJDK8のインストール
Ubuntu 14.04 LTSでは、OpenJDKパッケージは「メイン」リポジトリで利用できないため、openjdk-rPPAからインストールします。 上記のセクション2.3で見たように、add-apt-repositoryコマンドはデフォルトでは使用できません。 そのためにsoftware-properties-commonパッケージが必要です。
$ sudo apt update
$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:openjdk-r/ppa
$ sudo apt update
$ sudo apt install openjdk-8-jdk
3.3. PPAからのOracleJDK8のインストール
「メイン」リポジトリには、専用ソフトウェアは含まれていません。 If we want to install Oracle Java with apt, we’ll have to use a package from a PPA。 linuxuprisingPPAからOracleJDK11をインストールする方法についてはすでに説明しました。 Java 8の場合、パッケージはwebupd8teamPPAにあります。
まず、PPAaptリポジトリをシステムに追加する必要があります。
$ sudo add-apt-repository ppa:webupd8team/java
その後、通常の方法でパッケージをインストールできます。
$ sudo apt update
$ sudo apt install oracle-java8-installer
インストール中に、Oracleの使用許諾契約に同意する必要があります。 インストールを確認しましょう:
$ java -version
出力には、Java™JREとJVMが表示されます。
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
コンパイラがインストールされていることも確認できます。
$ javac -version
javac 1.8.0_181
4. JDK 10のインストール
Java10およびJava9のバージョンはサポートされなくなりました。 セクション2と同様の手順に従って、手動でインストールできます。 以下からパッケージを入手できます。
両方のサイトに同じ警告が含まれています:
これらの古いバージョンのJDKは、開発者が古いシステムの問題をデバッグするのに役立つように提供されています。 They are not updated with the latest security patches and are not recommended for use in production.
4.1. OpenJDK10を手動でインストールする
OpenJDK10.0.1をインストールする方法を見てみましょう。
$ wget https://download.java.net/java/GA/jdk10/10.0.1/fb4372174a714e6b8c52526dc134031e/10/openjdk-10.0.1_linux-x64_bin.tar.gz
$ sha256sum openjdk-10.0.1_linux-x64_bin.tar.gz
$ tar xzvf openjdk-10.0.1_linux-x64_bin.tar.gz
$ sudo mkdir /usr/lib/jvm
$ sudo mv jdk-10.0.1 /usr/lib/jvm/openjdk-10-manual-installation/
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/openjdk-10-manual-installation/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/openjdk-10-manual-installation/bin/javac 1
$ java -version
$ javac -version
4.2. Oracle JDK10の手動インストール
セクション2.2で説明したように、Oracle Webサイトからパッケージをダウンロードするには、we must accept a license agreement firstを使用します。 サポートされているバージョンとは異なり、wgetとCookieを介して古いOracleJDKをダウンロードすることはできません。 https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase10-4425482.htmlに移動し、tar.gzファイルをダウンロードする必要があります。 その後、おなじみの手順に従います。
$ sha256sum jdk-10.0.2_linux-x64_bin.tar.gz
$ tar xzvf jdk-10.0.2_linux-x64_bin.tar.gz
$ sudo mkdir /usr/lib/jvm
$ sudo mv jdk-10.0.2 /usr/lib/jvm/oracle-jdk-10-manual-installation/
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/oracle-jdk-10-manual-installation/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/oracle-jdk-10-manual-installation/bin/javac 1
$ java -version
$ javac -version
5. JDK 9のインストール
5.1. OpenJDK 9の手動インストール
上記のOpenJDK10.0.1で見たように、OpenJDK 9パッケージをwget経由でダウンロードし、規則に従ってセットアップします。
$ wget https://download.java.net/java/GA/jdk9/9.0.4/binaries/openjdk-9.0.4_linux-x64_bin.tar.gz
$ sha256sum openjdk-9.0.4_linux-x64_bin.tar.gz
$ tar xzvf openjdk-9.0.4_linux-x64_bin.tar.gz
$ sudo mkdir /usr/lib/jvm
$ sudo mv jdk-9.0.4 /usr/lib/jvm/openjdk-9-manual-installation/
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/openjdk-9-manual-installation/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/openjdk-9-manual-installation/bin/javac 1
$ java -version
$ javac -version
5.2. Oracle JDK 9の手動インストール
ここでも、JDK 10と同じ方法を使用します。 https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase9-3934878.htmlに移動し、tar.gzファイルをダウンロードする必要があります。 その後、おなじみの手順に従います。
$ sha256sum jdk-9.0.4_linux-x64_bin.tar.gz
$ tar xzvf jdk-9.0.4_linux-x64_bin.tar.gz
$ sudo mkdir /usr/lib/jvm
$ sudo mv jdk-9.0.4 /usr/lib/jvm/oracle-jdk-9-manual-installation/
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/oracle-jdk-9-manual-installation/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/oracle-jdk-9-manual-installation/bin/javac 1
$ java -version
$ javac -version
6. 比較
UbuntuにJDKをインストールする3つの異なる方法を見てきました。 それぞれの概要を簡単に説明し、長所と短所を指摘しましょう。
6.1. 「メイン」リポジトリ
これは“Ubuntu native” way of installationです。 大きな利点は、「通常のaptワークフロー」を介してapt updateとapt upgradeでパッケージを更新することです。
さらに、「メイン」リポジトリは、provides reasonably fast (if not immediate) updatesであるCanonicalによって維持されます。 たとえば、OpenJDKバージョン10.0.1と10.0.2は両方ともリリース後1か月以内に同期されました。
6.2. PPA
PPAは小さなリポジトリmaintained by an individual developer or a groupです。 これは、更新頻度がメンテナーに依存することも意味します。
PPAからのパッケージはriskier than the packages in the “Main” repositoryと見なされます。 まず、PPAをシステムのリポジトリリストに明示的に追加して、信頼できることを示す必要があります。 その後、通常のaptツール(apt updateおよびapt upgrade)を介してパッケージを管理できます。
6.3. 手動インストール
OpenJDKまたはOracleサイトからパッケージを直接ダウンロードします。 Although this method offers a great deal of flexibility, updates are our responsibility.最新かつ最高のJDKが必要な場合は、これが最適な方法です。
7. JDKの他のバージョンの調査
セクション2および3の例は、Ubuntu 18.04 LTSの現在のステータスを反映しています。 JDKおよび対応するパッケージは定期的に更新されることに注意してください。 したがって、explore our current possibilitiesの方法を知っておくと便利です。
このセクションでは、「メイン」リポジトリにあるOpenJDKパッケージの調査に焦点を当てます。 add-apt-repositoryを使用してPPAを既に追加している場合は、apt listおよびapt showを使用して同様の方法でPPAを探索できます。
利用可能なPPAを見つけるには、https://launchpad.net/に進みます。 「メイン」リポジトリとPPAで探しているものが見つからない場合は、手動インストールにフォールバックする必要があります。
サポートされていないバージョンを使用したい場合でも、それは難しい場合があります。 この記事の執筆時点では、OpenJDKおよびOracleのWebサイトでJava9またはJava10のパッケージは見つかりませんでした。
「メイン」リポジトリに存在する他のJDKパッケージを見てみましょう。
$ apt list openjdk*jdk
Ubuntu 18.04 LTSでは、2つの現在のLTS Javaバージョンから選択できます。
Listing... Done
openjdk-11-jdk/bionic-updates,bionic-security,now 10.0.2+13-1ubuntu0.18.04.2 amd64 [installed,automatic]
openjdk-8-jdk/bionic-updates,bionic-security 8u181-b13-0ubuntu0.18.04.1 amd64
パッケージはopenjdk-11-jdkと呼ばれていますが、この記事の執筆時点では、実際にはバージョン10.0.2がインストールされていることにも注意してください。 これはすぐに変更される可能性があります。 パッケージを検査すると、次のことがわかります。
$ apt show openjdk-11-jdk
出力の「依存」セクションを見てみましょう。 これらのパッケージ(例: JRE)もopenjdk-11-jdkと一緒にインストールされます:
Depends: openjdk-11-jre (= 10.0.2+13-1ubuntu0.18.04.2),
openjdk-11-jdk-headless (= 10.0.2+13-1ubuntu0.18.04.2),
libc6 (>= 2.2.5)
デフォルトのjdkパッケージ以外に、自由に使用できる他のパッケージを調べてみましょう。
$ apt list openjdk-11*
Listing... Done
openjdk-11-dbg/bionic-updates,bionic-security 10.0.2+13-1ubuntu0.18.04.2 amd64
openjdk-11-demo/bionic-updates,bionic-security 10.0.2+13-1ubuntu0.18.04.2 amd64
openjdk-11-doc/bionic-updates,bionic-updates,bionic-security,bionic-security 10.0.2+13-1ubuntu0.18.04.2 all
openjdk-11-jdk/bionic-updates,bionic-security 10.0.2+13-1ubuntu0.18.04.2 amd64
openjdk-11-jdk-headless/bionic-updates,bionic-security 10.0.2+13-1ubuntu0.18.04.2 amd64
openjdk-11-jre/bionic-updates,bionic-security,now 10.0.2+13-1ubuntu0.18.04.2 amd64 [installed,automatic]
openjdk-11-jre-headless/bionic-updates,bionic-security,now 10.0.2+13-1ubuntu0.18.04.2 amd64 [installed,automatic]
openjdk-11-jre-zero/bionic-updates,bionic-security 10.0.2+13-1ubuntu0.18.04.2 amd64
openjdk-11-source/bionic-updates,bionic-updates,bionic-security,bionic-security 10.0.2+13-1ubuntu0.18.04.2 all
これらのパッケージのいくつかが役立つことがあります。 たとえば、openjdk-11-sourceにはJavaコアAPIのクラスのソースファイルが含まれ、openjdk-11-dbgにはデバッグシンボルが含まれます。
openjdk-*ファミリの他に、調査する価値のあるdefault-jdkパッケージがあります。
$ apt show default-jdk
出力の最後に、説明があります:
「この依存パッケージは、Javaランタイム、またはこのアーキテクチャに推奨されるJava互換開発キットを指します…」
Ubuntu 18.04 LTSの場合、現時点ではパッケージopenjdk-11-jdkです。
8. 概要:Javaバージョンとパッケージ
それでは、この記事の執筆時点で、Ubuntu 18.04LTSにさまざまなバージョンのJavaをインストールする方法を見てみましょう。
バージョン | OpenJDK | Oracle Java |
---|---|---|
11 |
手動インストール |
linuxuprising PPAの手動インストールoracle-java11-installer |
10 |
手動インストール–サポートされていません |
手動インストール–サポートされていません |
9 |
手動インストール–サポートされていません |
手動インストール–サポートされていません |
8 |
「メイン」リポジトリのopenjdk-8-jdk |
webupd8team PPAのoracle-java8-installer |
9. Ubuntuシステム上の複数のJavaバージョン
Ubuntuで同じソフトウェアの複数のバージョンを管理する標準的な方法は、Debian Alternatives Systemを使用することです。 ほとんどの場合、update-alternativesプログラムを介して代替案を作成、維持、表示します。
When apt installs a JDK package, it automatically adds the entries for the alternatives.手動インストールの場合、それぞれjavaとjavacの代替を追加する方法を見てきました。
代替案を見てみましょう。
$ update-alternatives --display java
2つの異なるバージョンのOpenJDKをインストールしたテストシステムでは、出力に両方の選択肢とそれぞれの優先順位が一覧表示されます。
java - auto mode
link best version is /usr/lib/jvm/java-11-openjdk-amd64/bin/java
link currently points to /usr/lib/jvm/java-11-openjdk-amd64/bin/java
link java is /usr/bin/java
slave java.1.gz is /usr/share/man/man1/java.1.gz
/usr/lib/jvm/java-11-openjdk-amd64/bin/java - priority 1101
slave java.1.gz: /usr/lib/jvm/java-11-openjdk-amd64/man/man1/java.1.gz
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java - priority 1081
slave java.1.gz: /usr/lib/jvm/java-8-openjdk-amd64/jre/man/man1/java.1.gz
代替案を確認したので、we can also switch between them:
$ sudo update-alternatives --config java
さらに、インタラクティブな出力が得られ、キーボードを使用して代替を切り替えることができます。
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 manual mode
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
Press to keep the current choice[*], or type selection number:
異なるバージョンのJavaで記述された複数のアプリケーションで作業している場合、他のソフトウェアの異なるバージョンも必要になる可能性があります(例: Maven、一部のアプリケーションサーバー)。 その場合、Dockerコンテナーなどのより高度な抽象化の使用を検討することをお勧めします。
10. 結論
要約すると、この記事では、「メイン」リポジトリから、PPAから、および手動でJDKをインストールする例を見てきました。 これら3つのインストール方法を簡単に比較しました。
そして最後に、update-alternativesを使用してUbuntuシステムで複数のJavaインストールを管理する方法を見てきました。
次のステップとして、set the JAVA_HOME environment variableが役立つ場合があります。