1. 概要

このチュートリアルでは、UbuntuにJDKをインストールするためのさまざまな方法を紹介します。 次に、メソッドを簡単に比較します。 最後に、Ubuntuシステムで複数のJavaインストールを管理する方法を示します。

各方法の前提条件として、

  • Ubuntuシステム
  • sudo権限を持つ非rootユーザーとしてログインする

以下で説明する手順は、Ubuntu 18.10、18.04 LTS、16.04 LTS、および14.04LTSでテストされています。 Ubuntu 14.04 LTSの場合、テキストに記載されているいくつかの違いがあります。

OpenJDKとOracleからダウンロードできるパッケージと、リポジトリで利用できるパッケージの両方が定期的に更新されることに注意してください。 正確なパッケージ名はおそらく数か月以内に変更されますが、インストールの基本的な方法は同じままです。

2. JDK11のインストール

JDKの最新かつ最高のバージョンを使用したい場合は、多くの場合、手動インストールが最適です。 これは、OpenJDKまたはOracleサイトからパッケージをダウンロードし、aptがJDKパッケージを設定する方法の規則に準拠するように設定することを意味します。

2.1. OpenJDK11を手動でインストールする

まず、最近リリースされたOpenJDK11のtarアーカイブをダウンロードしましょう。

$ wget https://download.java.net/java/ga/jdk11/openjdk-11_linux-x64_bin.tar.gz

そして、ダウンロードしたパッケージの sha256 の合計を、OpenJDKサイトで提供されていると比較します。

$ 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/

ここで、javaおよびjavacコマンドを使用可能にします。 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. OracleJDK11の手動インストール

Oracle JDKの最新バージョンを確実に使用したい場合は、OpenJDKの場合と同様の手動インストールワークフローに従うことができます。 JDK11のtarアーカイブをOracleWebサイトからダウンロードするには、最初にライセンス契約に同意する必要があります。 このため、 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(TM)をインストールしたことを示しています。

$ 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 aptinstallを続行できます。

3. JDK8のインストール

3.1. Ubuntu16.04LTS以降へのOpenJDK8のインストール

JDK 8は、しばらく前から存在しているLTSバージョンです。 このため、サポートされているほとんどのUbuntuバージョンの「メイン」リポジトリでOpenJDK8の最新バージョンを見つけることができます。 もちろん、OpenJDK Webサイトにアクセスして、そこでパッケージを取得し、前のセクションで見たのと同じ方法でインストールすることもできます。

ただし、 apt ツールと「メイン」リポジトリを使用すると、いくつかの利点があります。 「メイン」リポジトリは、すべてのUbuntuシステムでデフォルトで使用できます。 それはCanonicalによってサポートされています—Ubuntu自体を維持しているのと同じ会社です。

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. Ubuntu14.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のインストール

「メイン」リポジトリには、プロプライエタリソフトウェアは含まれていません。  aptを使用してOracleJavaをインストールする場合は、PPAのパッケージを使用する必要があります。 linuxuprisingPPAからOracleJDK11をインストールする方法についてはすでに説明しました。 Java 8の場合、パッケージは webupd8teamPPAにあります。

まず、PPA aptリポジトリをシステムに追加する必要があります。

$ sudo add-apt-repository ppa:webupd8team/java

次に、通常の方法でパッケージをインストールできます。

$ sudo apt update
$ sudo apt install oracle-java8-installer

インストール中に、Oracleのライセンス契約に同意する必要があります。 インストールを確認しましょう:

$ java -version

出力には、Java(TM)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. JDK10のインストール

バージョンJava10およびJava9はサポートされなくなりました。 セクション2と同様の手順に従って、手動でインストールできます。 あなたはからパッケージをつかむことができます:

両方のサイトに同じ警告が含まれています。

これらの古いバージョンのJDKは、開発者が古いシステムの問題をデバッグするのに役立つように提供されています。 最新のセキュリティパッチで更新されていないため、本番環境での使用はお勧めしません。

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. OracleJDK10の手動インストール

セクション2.2で見たように、Oracle Webサイトからパッケージをダウンロードするには、最初に使用許諾契約に同意する必要があります。 サポートされているバージョンとは異なり、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. JDK9のインストール

5.1. OpenJDK9を手動でインストールする

上記のOpenJDK10.0.1で見たように、OpenJDK9パッケージを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. OracleJDK9の手動インストール

ここでも、JDK10と同じ方法を使用します。  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ネイティブ」のインストール方法です。 大きな利点は、「通常のaptワークフロー」を介してaptupdateおよびaptupgradeでパッケージを更新することです。

さらに、「メイン」リポジトリはCanonicalによって維持されており、は適度に高速な(即時ではないにしても)更新を提供します。 たとえば、OpenJDKバージョン10.0.1と10.0.2は、どちらもリリースから1か月以内に同期されました。

6.2. PPA

PPAは、個々の開発者またはグループによって維持される小さなリポジトリです。 これは、更新頻度がメンテナに依存することも意味します。

PPAからのパッケージは、「メイン」リポジトリのパッケージよりもリスクが高いと見なされます。 まず、PPAをシステムのリポジトリリストに明示的に追加して、信頼できることを示す必要があります。 その後、通常の apt ツール( aptupdateおよびaptupgrade )を介してパッケージを管理できます。

6.3. 手動インストール

パッケージは、OpenJDKまたはOracleサイトから直接ダウンロードします。 この方法は非常に柔軟性がありますが、更新は私たちの責任です。最新かつ最高のJDKが必要な場合は、これが最適な方法です。

7. JDKの他のバージョンの調査

セクション2と3の例は、Ubuntu18.04LTSの現在のステータスを反映しています。 JDKと対応するパッケージは定期的に更新されることに注意してください。 したがって、現在の可能性を探索する方法を知っておくと便利です。

このセクションでは、「メイン」リポジトリにあるOpenJDKパッケージの調査に焦点を当てます。  add-apt-repository を使用してPPAを既に追加している場合は、 aptlistおよびaptshowを使用して同様の方法でPPAを調べることができます。

利用可能なPPAを見つけるには、https://launchpad.net/にアクセスしてください。 「メイン」リポジトリとPPAで探しているものが見つからない場合は、手動インストールにフォールバックする必要があります。

サポートされていないバージョンを使用したい場合でも、それは難しい場合があります。 この記事の執筆時点では、OpenJDKおよびOracleのWebサイトでJava9またはJava10のパッケージは見つかりませんでした。

「メイン」リポジトリに存在する他のJDKパッケージを見てみましょう。

$ apt list openjdk*jdk

Ubuntu 18.04 LTSでは、現在の2つのLTSJavaバージョンから選択できます。

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のバージョンとパッケージ

それでは、この記事の執筆時点で、さまざまなバージョンのJavaをUbuntu18.04LTSにインストールする方法を見てみましょう。

バージョン OpenJDK Oracle Java
11 手動インストール linuxuprisingPPAでの手動インストールoracle-java11-installer
10 手動インストール–サポートされていません 手動インストール–サポートされていません
9 手動インストール–サポートされていません 手動インストール–サポートされていません
8 「メイン」リポジトリのopenjdk-8-jdk webupd8teamPPAのoracle-java8-installer

9. Ubuntuシステム上の複数のJavaバージョン

Ubuntuで同じソフトウェアの複数のバージョンを管理するための標準的な方法は、DebianAlternativesSystemを使用することです。 ほとんどの場合、 update-alternatives プログラムを介して代替案を作成、維持、表示します。

aptがJDKパッケージをインストールすると、代替のエントリが自動的に追加されます。手動インストールの場合、javaおよびの代替を追加する方法を確認しました。それぞれX195X]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

代替案を見てきましたので、それらを切り替えることもできます:

$ 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 <enter> to keep the current choice[*], or type selection number:

異なるバージョンのJavaで記述された複数のアプリケーションで作業している場合、他のソフトウェアの異なるバージョンも必要になる可能性があります(例: Maven、一部のアプリケーションサーバー)。 その場合、Dockerコンテナなどのより高度な抽象化の使用を検討することをお勧めします。

10. 結論

要約すると、この記事では、「メイン」リポジトリから、PPAから、および手動でJDKをインストールする例を見てきました。 これら3つのインストール方法を簡単に比較しました。

そして最後に、update-alternativesを使用してUbuntuシステムで複数のJavaインストールを管理する方法を見てきました。

次のステップとして、JAVA_HOME環境変数を設定すると便利な場合があります。