1概要

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

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

  • Ubuntuシステム


  • sudo

    特権を持つroot以外のユーザーとしてログインします。

下記の手順は、Ubuntu 18.10、18.04 LTS、16.04 LTS、および14.04 LTSでテスト済みです。 Ubuntu 14.04 LTSにはいくつかの違いがあります。それらについては本文で言及されています。

OpenJDKとOracleからダウンロードできるパッケージとリポジトリで利用可能なパッケージはどちらも定期的に更新されます。

正確なパッケージ名はおそらく数ヶ月以内に変わるでしょうが、基本的なインストール方法は変わりません。


2 JDK 11

のインストール

最新かつ最高のバージョンのJDKを使用したい場合は、手動インストールが多いでしょう。これは、OpenJDKまたはOracleサイトからパッケージをダウンロードし、

apt

がJDKパッケージを設定する方法の規則に準拠するように設定することを意味します。


2.1. OpenJDK 11の手動インストール

まず最初に、最近リリースされたOpenJDK 11の

tar

アーカイブをダウンロードしましょう。

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

そして、ダウンロードしたパッケージの

sha256

sumを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の追加バージョンをインストールしたいと思うなら、それらは一緒にうまく機能するでしょう:

[source,bash,gutter:,true]

$ 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

インストールを確認しましょう。

[source,bash,gutter:,true]

$ java -version

出力からわかるように、実際には最新バージョンのOpenJDK JREとJVMがインストールされています。

[source,bash,gutter:,true]

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)

コンパイラのバージョンも見てみましょう。

[source,bash,gutter:,true]

$ javac -version

[source,bash,gutter:,true]

javac 11

====  **  2.2.  Oracle JDK 11の手動インストール**

最新バージョンのOracle JDKを確実に使用したい場合は、OpenJDKの場合と同様に、手動のインストールワークフローに従うことができます。 https://www.oracle.com/technetwork/java/javase/download/index.html[Oracle Webサイト]からJDK 11の__tar__アーカイブをダウンロードするには、** 最初に使用許諾契約に同意する必要があります** 。このため、__wget__を介したダウンロードはOpenJDKよりも少し複雑です。

[source,bash,gutter:,true]

$ 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と同じです。

[source,bash,gutter:,true]

$ 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)がインストールされていることがわかりました。

[source,bash,gutter:,true]

$ java -version

[source,bash,gutter:,true]

java version “11.0.1” 2018-10-16 LTS
Java™ SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot™ 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

そしてコンパイラの場合:

[source,bash,gutter:,true]

$ javac -version

[source,bash,gutter:,true]

javac 11.0.1

====  **  2.3.  PPAからのOracle JDK 11のインストール**

現在、Oracle JDK 11はPPA(Personal Package Archive)でも入手できます。このインストールには2つのステップが含まれます。リポジトリを私たちのシステムに追加し、__apt:__を使ってリポジトリからパッケージをインストールすることです。

[source,bash,gutter:,true]

$ sudo add-apt-repository ppa:linuxuprising/java
$ sudo apt update
$ sudo apt install oracle-java11-installer

検証手順は、セクション2.2.1の手動インストール後と同じ結果になるはずです。

[source,bash,gutter:,true]

$ java -version

[source,bash,gutter:,true]

java version “11.0.1” 2018-10-16 LTS
Java™ SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot™ 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

そしてコンパイラの場合:

[source,bash,gutter:,true]

$ javac -version

[source,bash,gutter:,true]

javac 11.0.1

Ubuntu 14.04 LTSでは、__add-apt-repository__コマンドはデフォルトでは使用できません。リポジトリを追加するには、まず__software-properties-common__パッケージをインストールする必要があります。

[source,bash,gutter:,true]

$ sudo apt update
$ sudo apt install software-properties-common

その後は、上記のように____add-apt-repository、apt update ____、および__apt install__に進みます。

[[jdk-8]]

===  **  3 JDK 8 ** のインストール

[[default-jdk]]

====  **  3.1.  Ubuntu 16.04 LTS以降へのOpenJDK 8のインストール

JDK 8はしばらく前から存在していたLTSバージョンです。このため、サポートされているほとんどのUbuntuバージョンの“ Main”リポジトリにOpenJDK 8の最新バージョンがあります。もちろん、OpenJDKのWebサイトに行き、そこでパッケージを入手して、前のセクションで見たのと同じ方法でインストールすることもできます。

しかし、__apt__ツールと「Main」リポジトリを使用すると、いくつかの利点があります。 “ Main”リポジトリは全てのUbuntuシステムでデフォルトで利用可能です。これはCanonicalによってサポートされています -  Ubuntu自体を維持しているのと同じ会社です。

__apt__を使って“ Main”リポジトリからOpenJDK 8をインストールしましょう。

[source,bash,gutter:,true]

$ sudo apt update
$ sudo apt install openjdk-8-jdk

それでは、インストールを確認しましょう。

[source,bash,gutter:,true]

$ java -version

結果には、実行時環境とJVMがリストされます。

[source,bash,gutter:,true]

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__実行ファイルも利用できることを確認しましょう。

[source,bash,gutter:,true]

$ javac -version

上記と同じバージョン番号が表示されます。

[source,bash,gutter:,true]

javac 1.8.0__181

====  **  3.2.  Ubuntu 14.04 LTS ** へのOpenJDK 8のインストール

Ubuntu 14.04 LTSでは、OpenJDKパッケージは“ Main”リポジトリにはありませんので、__openjdk-r__ PPAからインストールします。上記のセクション2.3で見たように、__add-apt-repository__コマンドはデフォルトでは使用できません。それには__software-properties-common__パッケージが必要です。

[source,bash,gutter:,true]

$ 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

[[default-jdk]]

====  **  3.3.  PPAからのOracle JDK 8のインストール**

「メイン」リポジトリには、独自のソフトウェアは含まれていません。 **  __apt__を指定してOracle Javaをインストールする場合は、PPA ** のパッケージを使用する必要があります。私たちはすでに__linuxuprising __ PPAからOracle JDK 11をインストールする方法を見てきました。 Java 8の場合、__webupd8team__PPAにパッケージがあります。

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

[source,bash,gutter:,true]

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

それから通常の方法でパッケージをインストールすることができます。

[source,bash,gutter:,true]

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

インストール中に、オラクルのライセンス契約に同意する必要があります。

インストールを確認しましょう。

[source,bash,gutter:,true]

$ java -version

出力は、Java(TM)JREとJVMを示しています。

[source,bash,gutter:,true]

java version “1.8.0

181″
Java™ SE Runtime Environment (build 1.8.0

181-b13)
Java HotSpot™ 64-Bit Server VM (build 25.181-b13, mixed mode)

コンパイラがインストールされたことを確認することもできます。

[source,bash,gutter:,true]

$ javac -version

[source,bash,gutter:,true]

javac 1.8.0__181

[[jdk-10]]

===  4. JDK 10のインストール

Java 10とJava 9のバージョンはもうサポートされていません。セクション2と同様の手順でそれらを手動でインストールすることができます。

**  https://jdk.java.net/archive/

**  https://www.oracle.com/technetwork/java/javase/archive-139210.html

両方のサイトに同じ警告があります。

これらの古いバージョンのJDKは、開発者が古いシステムの問題をデバッグするのを助けるために提供されています。 ______________________________________________________________________________________________________________________________________________________________________________________________

====  **  4.1.  OpenJDK 10の手動インストール**

OpenJDK 10.0.1のインストール方法を見てみましょう。

[source,bash,gutter:,true]

$ 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 JDK 10の手動インストール**

セクション2.2で見たように、オラクルのWebサイトからパッケージをダウンロードするには、まず使用許諾契約に同意する必要があります。サポートされているバージョンとは反対に、__wget__とcookieを使用して古いOracle JDKをダウンロードすることはできません。 https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase10-4425482.htmlにアクセスして__tar.gz__ファイルをダウンロードする必要があります。その後は、よく知られている手順に従います。

[source,bash,gutter:,true]

$ 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

[[jdk-9]]

===  5. JDK 9をインストールする

====  5.1.  OpenJDK 9の手動インストール

OpenJDK 10.0.1で上で見たのと同じように、__wget__を介してOpenJDK 9パッケージをダウンロードし、規約に従って設定します。

[source,bash,gutter:,true]

$ 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__ファイルその後は、よく知られている手順に従います。

[source,bash,gutter:,true]

$ 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 update__と__apt upgrade__を使って、「通常の__apt__ワークフロー」でパッケージを更新することです。

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

====  **  6.2.  PPA **

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

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

====  **  6.3. 手動インストール**

パッケージはOpenJDKまたはOracleのサイトから直接ダウンロードします。

** この方法はかなりの柔軟性を提供しますが、更新は私たちの責任です。

[[other-openjdk]]

===  **  7. 他のバージョンのJDKの探索**

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

このセクションでは、「Main」リポジトリにあるOpenJDKパッケージの調査に焦点を当てます。 __add-apt-repository__を使用してPPAを追加した場合は、__apt list__と__apt show__を使用して同様に検索できます。

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

サポートされていないバージョンを使用したいのであれば、それでも難しい場合があります。

これを書いている時点では、OpenJDKとOracleのWebサイトでJava 9やJava 10のパッケージは見つかりませんでした。

他のどのJDKパッケージが「Main」リポジトリに存在するのかを見てみましょう。

[source,bash,gutter:,true]

$ apt list openjdk** jdk

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

[source,bash,gutter:,true]

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がインストールされていることにも注目する価値があります。これはすぐに変わる可能性があります。パッケージを調べると、次のようになります。

[source,bash,gutter:,true]

$ apt show openjdk-11-jdk

出力の「Depends」セクションを見てみましょう。これらのパッケージ(JREなど)も__openjdk-11-jdk__と同時にインストールされることに注意してください。

[source,bash,gutter:,true]

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パッケージ以外に、私たちが自由に使える他のパッケージを調べてみましょう。

[source,bash,gutter:,true]

$ apt list openjdk-11**

[source,bash,gutter:,true]

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__があります。

[source,bash,gutter:,true]

$ apt show default-jdk

出力の最後に、説明が述べています:

______________________________________________________________________________________________________________________________________________________________________________________________________________________________________「この依存パッケージは、このアーキテクチャ用に推奨されているJavaランタイムまたはJava互換開発キットを指しています...」

Ubuntu 18.04 LTSの場合は、現時点ではパッケージ__openjdk-11-jdk__です。

[[versions-table]]

===  **  8概要:Javaのバージョンとパッケージ**

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

[cols="^,,",options="header",]

| =================================================== ==================== | |バージョン| OpenJDK | Oracle Java | 11 |手動インストール|手動インストール__linuxuprising__ PPAの__oracle-java11-installer__

| 10 |手動インストール - サポートされていません|手動インストール - サポートされていません

| 9 |手動インストール - サポートされていません|手動インストール - サポートされていません

| 8 |「メイン」リポジトリーの__openjdk-8-jdk__ | __webupd8team__PPAの__oracle-java8-installer__ | ======================= ================================================

[[multiple-versions]]

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

Ubuntu上の同じソフトウェアの複数のバージョンを管理するための標準的な方法はDebian Alternatives Systemによるものです。ほとんどの場合、私たちは__update-alternatives__プログラムを使って代替案を作成、管理、表示します。

**  __apt__がJDKパッケージをインストールするとき、それは自動的に選択肢のエントリを追加します。

代替案を見てみましょう。

[source,bash,gutter:,true]

$ update-alternatives –display java

2つの異なるバージョンのOpenJDKをインストールしたテストシステムでは、出力に両方の選択肢がそれぞれの優先順位とともに一覧表示されます。

[source,bash,gutter:,true]

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

私たちの代替案を見たので、** それらを切り替えることもできます。

[source,bash,gutter:,true]

$ sudo update-alternatives –config java

さらに、キーボードを使って選択肢を切り替えることができる対話型の出力が得られます。

[source,bash,gutter:,true]

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結論**

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

そして最後に、__update-alternatives__を使ってUbuntuシステム上の複数のJavaインストールを管理する方法を見ました。

次のステップとして、それはhttps://www.baeldung.com/java-home-on-windows-7-8-10-mac-os-x-linux[環境変数__JAVA__HOME__を設定する]に役立つかもしれません]。