Ubuntu Linux 18.04 LTS / 18.10でOpenJDK 11を使いたい

# やりたいこと
* Ubuntu Linuxで、OpenJDK 11を使いたい
* パッケージ管理したいので、`apt`で導入したい


# TL;DR
**更新**

2019年4月に、Ubuntu Linux 18.04 LTSでも、OpenJDK 11が`apt`でインストールできるようになりました。

[openjdk-lts package](https://launchpad.net/ubuntu/+source/openjdk-lts/)

以降は、過去の情報になります。

* 2018/11/19現在、Ubuntu Linux 18.10（Cosmic）であれば、`openjdk-11-jdk`でOpenJDK 11をインストール可能
* Ubunutu Linux 18.04 LTS（Bionic）の場合…
    * `apt`でのインストールを諦めない場合
        * [もう少し待つ](https://www.reddit.com/r/Ubuntu/comments/9sojtf/anyone_know_when_openjdk11jdk_packages_in_ubuntu/)
        * ちょっと古くて良ければ[PPAを使う](https://launchpad.net/~openjdk-r/+archive/ubuntu/ppa?field.series_filter=bionic)
        * Ubuntu LinuxのLTSを諦めてよければ、Ubuntu Linux 18.10にアップグレードする
    * `apt`を諦める場合
        * [sdkman](https://sdkman.io/)や[AdoptOpenJDK](https://adoptopenjdk.net/)など、素直に他の選択肢を使う

# 対象のUbuntu Linuxのバージョン
* 18.04 LTS以降

# Ubuntu Linux 18.10（Cosmic）の場合
なんの問題もなくOpenJDK 11が入ります。

```shell
## OSバージョン
$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="18.10 (Cosmic Cuttlefish)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.10"
VERSION_ID="18.10"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=cosmic
UBUNTU_CODENAME=cosmic


## OpenJDK 11インストール
$ sudo apt install openjdk-11-jdk
$ java -version
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment (build 11.0.1+13-Ubuntu-2ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.1+13-Ubuntu-2ubuntu1, mixed mode, sharing)
```

# 問題（Ubuntu Linux 18.04 LTS（Bionic）の場合）
Ubuntu Linux 18.04 LTSの場合、`openjdk-11-jdk`を`apt`でインストールすると、以下のような状態になります。

```shell
## OSのバージョン
$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="18.04 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic


## OpenJDK 11インストール
$ sudo apt install openjdk-11-jdk
$ java -version
openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.3)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.3, mixed mode)
```

`openjdk-11-jdk`としたにも関わらず、OpenJDK 10がインストールされます。

これは、Ubuntu Linux 18.04 LTSのリリース時点でOpenJDK 11がリリースされていないため、OpenJDK 10をデフォルトにするようにしておき、[後から差し替える](https://lists.ubuntu.com/archives/ubuntu-release/2018-February/004275.html)つもりのようです。

ですが、現時点でOpenJDK 11がリリースされてしばらく経過していますが、まだOpenJDK 10のまま、切り替えられていない模様。

では、Ubuntu Linux 18.04 LTSで`apt`でOpenJDK 11をインストールできないのかというと、どうしても…ということであればPPAを使うことでインストールできます。

[“PPA for OpenJDK uploads (restricted)” team](https://launchpad.net/~openjdk-r/+archive/ubuntu/ppa?field.series_filter=bionic)

以下、コマンド。

```shell
$ sudo add-apt-repository ppa:openjdk-r/ppa
$ sudo apt update
$ sudo apt install openjdk-11-jdk
```

やたら時間がかかるうえに、ちょっと古い、しかも謎なOpenJDK 11がインストールされます。

```shell
$ sudo apt install openjdk-11-jdk^C
$ java -version
openjdk version "11" 2018-09-25
OpenJDK Runtime Environment (build 11+24-Ubuntu-118.04)
OpenJDK 64-Bit Server VM (build 11+24-Ubuntu-118.04, mixed mode, sharing)
```

現時点だと、どうしてもUbuntu Linux 18.04 LTSで`apt`でOpenJDK 11をインストールする場合は、こういう手段になります。

か、もう少し待つか、Ubuntu Linux 18.10にアップグレードするかですね。

# Ubuntu Linux 18.04 LTSを使いつつ、`apt`でのインストールを諦める場合
以下を参考にしつつ、[AdoptOpenJDK](https://adoptopenjdk.net/)などをインストールしましょう。

[Introduction to Java 11: Support and JVM Features #jjug](https://www.slideshare.net/YujiKubota/introduction-to-java-11-support-and-jvm-features)

[sdkman](https://sdkman.io/)でインストールしてもいいでしょう。

# どうする？
個人的には、Ubuntu Linux 18.04 LTSの`apt`リポジトリにバックポートされるのを待つ所存。

# 参考情報
[openjdk-lts package in Ubuntu](https://launchpad.net/ubuntu/+source/openjdk-lts/)

[openjdk-lts 11.0.1+13-2ubuntu1 source package in Ubuntu](https://launchpad.net/ubuntu/+source/openjdk-lts/11.0.1+13-2ubuntu1)

[“PPA for OpenJDK uploads (restricted)” team](https://launchpad.net/~openjdk-r/+archive/ubuntu/ppa?field.series_filter=bionic)

[Anyone know when openjdk-11-jdk packages in Ubuntu Bionic / Cosmic Will Actually Point to Java 11?](https://www.reddit.com/r/Ubuntu/comments/9sojtf/anyone_know_when_openjdk11jdk_packages_in_ubuntu/)

[OpenJDK SRU exception](https://lists.ubuntu.com/archives/ubuntu-release/2018-February/004275.html)