インストール方法
$ sudo apt install openjdk-17-jdk
解説
バージョンの選定
下記は、Ubuntu22.04でインストール可能なopenjdkパッケージの一例です。
$ apt list | grep "openjdk-.\+-jdk*"
openjdk-11-jdk-headless/jammy-updates,jammy-security 11.0.20+8-1ubuntu1~22.04 amd64
openjdk-11-jdk/jammy-updates,jammy-security 11.0.20+8-1ubuntu1~22.04 amd64
openjdk-17-jdk-headless/jammy-updates,jammy-security,now 17.0.8+7-1~22.04 amd64
openjdk-17-jdk/jammy-updates,jammy-security,now 17.0.8+7-1~22.04 amd64
openjdk-18-jdk-headless/jammy-updates,jammy-security 18.0.2+9-2~22.04 amd64
openjdk-18-jdk/jammy-updates,jammy-security 18.0.2+9-2~22.04 amd64
openjdk-19-jdk-headless/jammy-updates,jammy-security 19.0.2+7-0ubuntu3~22.04 amd64
openjdk-19-jdk/jammy-updates,jammy-security 19.0.2+7-0ubuntu3~22.04 amd64
openjdk-8-jdk-headless/jammy-updates,jammy-security 8u382-ga-1~22.04.1 amd64
openjdk-8-jdk/jammy-updates,jammy-security 8u382-ga-1~22.04.1 amd64
Oracle JDK
Check end-of-life, release policy and support schedule for Oracle JDK.
上記ページを見ればわかるように、現在のLTSはRelease17なので、特に理由が無ければこちらを使うべきでしょう。
headlessについて
openjdk-17-jdk-headless/jammy-updates,jammy-security,now 17.0.8+7-1~22.04 amd64 openjdk-17-jdk/jammy-updates,jammy-security,now 17.0.8+7-1~22.04 amd64
また、それぞれのバージョンについて「headless」とそうでないもの(「headful」)の2つのパッケージが存在します。 OpenJDKの「headless」モードはGUIを必要としないコマンドライン環境での実行をサポートし、通常の「headful」モードはグラフィカルなデスクトップ環境での実行を意味し、特定の用途に合わせて選択されるのことです。
ここでは、headfulの方をインストールします。
ちなみにインストール後の apt list の結果は下記のようになり、headlessの方がサブセットであることがわかります。
openjdk-17-jdk-headless/jammy-updates,jammy-security,now 17.0.8+7-1~22.04 amd64 [installed,automatic] openjdk-17-jdk/jammy-updates,jammy-security,now 17.0.8+7-1~22.04 amd64 [installed]
もしheadfulの方でheadlessモードを使用するには、Javaアプリケーションを実行する際に、-Djava.awt.headless=true フラグを指定します。 例えば、コマンドラインでの実行時に次のようにフラグを追加します。
$ java -Djava.awt.headless=true -jar YourHeadlessApp.jar
バージョンの切り替え
複数バージョン(例えば、バージョン8とバージョン17など)をインストールし、開発する対象のアプリケーションによってそれらを切り替えたい場合、 下記のコマンドを使うことで切り替えが可能です。
$ sudo update-alternatives --config java $ sudo update-alternatives --config javac
現在使用しているjava,javacのバージョンは下記のように確認できます。
$ java --version openjdk 17.0.8 2023-07-18 OpenJDK Runtime Environment (build 17.0.8+7-Ubuntu-122.04) OpenJDK 64-Bit Server VM (build 17.0.8+7-Ubuntu-122.04, mixed mode, sharing)
$ javac --version javac 17.0.8