お金をかけずにサーバーの勉強をしよう

Java SE Development Kit (JDK) 21 インストール

2024年5月1日

メニューへ戻る

JDK 21は 17以降に久しぶりにリリースされた LTS(Long Term Support)版です。

Spring Frameworkや Spring Bootは既に当バージョンに対応していますし、今後の Java開発の主要バージョンになっていくのは間違いありませんね。

Ubuntuに導入してみます。


1.環境

OSは Ubuntu Server 24.04にしますが、Desktop版でも同じです。
これに Open JDK 21 をインストールします。


2.インストール

Ubuntuでのパッケージインストールでいつも気になるのは、snapか aptか、どちらにするかということです。

まずはどのバージョンのものがあるかそれぞれ調べてみます。

snapのほう。

subro@UbuntuServer2404-1:~$ snap search openjdk
Name                       Version   Publisher  Notes  Summary
openjdk                    22.0.1+8  jgneff     -      Current JDK release and early-access builds
minecraft-server-jdstrand  20.04.2   jdstrand   -      Minecraft server packaging for Ubuntu Core
openjfx                    22.0.1+7  jgneff     -      Current JavaFX release and early-access builds
shellsnap                  2.0       chhokar    -      OpenJDK Swing Example Applications
hello-java                 1.0.0-1   jgneff     -      Sample Java Swing and console applications

Ver.22まで上がってしまっていますね。
(マイクラサーバーのパッケージもあるんだw)

できれば LTSの 21を使いたいので、古いリリースのパッケージがないか見てみましょう。
snap infoコマンドを使います。

subro@UbuntuServer2404-1:~$ snap info openjdk
name:      openjdk
summary:   Current JDK release and early-access builds
publisher: John Neffenger (jgneff)
store-url: https://snapcraft.io/openjdk
contact:   https://github.com/jgneff/openjdk/discussions
license:   GPL-2.0-with-classpath-exception
description: |
  OpenJDK is the official reference implementation of the Java
  Platform, Standard Edition, a cross-platform computing environment
  that lets you develop and deploy Java applications on desktops,
  servers, and embedded systems.

  This package provides everything you need to develop a Java
  application on Linux, including all of the latest development tools,
  class libraries, API documentation, and source code of the Java
  Development Kit (JDK).

  Installing this package does not replace the JDK provided by your
  Linux distribution but instead allows you to use both of them side by
  side. To get started, see the README file for this package on GitHub:

  https://github.com/jgneff/openjdk

  Java and OpenJDK are trademarks or registered trademarks of Oracle
  and/or its affiliates.
snap-id: B43U2oy1SaZMShbuIBPRGfHOIyckFNaB
channels:
  latest/stable:    22.0.1+8 2024-04-18 (1764) 255MB -
  latest/candidate: ↑
  latest/beta:      ↑
  latest/edge:      23+20    2024-04-25 (1776) 269MB -

一番下の「channels:」ってとこにあれば、そちらのチャネルから取れるんですが、Ubuntu 24.04だと今の所 OpenJDK 21のパッケージは用意されていないのかも知れません。

aptのほう。

subro@UbuntuServer2404-1:~$ apt search openjdk-21
ソート中... 完了
全文検索... 完了
default-jdk/noble 2:1.21-75+exp1 amd64
  Standard Java or Java compatible Development Kit

default-jdk-doc/noble 2:1.21-75+exp1 amd64
  Standard Java or Java compatible Development Kit (documentation)

default-jdk-headless/noble 2:1.21-75+exp1 amd64
  Standard Java or Java compatible Development Kit (headless)

default-jre/noble 2:1.21-75+exp1 amd64
  標準的な Java または Java 互換のランタイム

default-jre-headless/noble 2:1.21-75+exp1 amd64
  標準的な Java または Java 互換のランタイム (ヘッドレス)

openjdk-21-dbg/noble 21.0.3+9-1ubuntu1 amd64
  OpenJDK ベースの Java ランタイム (デバッグシンボル)

openjdk-21-demo/noble 21.0.3+9-1ubuntu1 amd64
  OpenJDK ベースの Java ランタイム (デモおよびサンプルファイル)

openjdk-21-doc/noble 21.0.3+9-1ubuntu1 all
  OpenJDK Development Kit (JDK) documentation

openjdk-21-jdk/noble 21.0.3+9-1ubuntu1 amd64
  OpenJDK Development Kit (JDK)

openjdk-21-jdk-headless/noble 21.0.3+9-1ubuntu1 amd64
  OpenJDK Development Kit (JDK) (headless)

openjdk-21-jre/noble 21.0.3+9-1ubuntu1 amd64
  OpenJDK Java ランタイム - Hotspot JIT 版

openjdk-21-jre-headless/noble 21.0.3+9-1ubuntu1 amd64
  OpenJDK Java ランタイム - Hotspot JIT 版 (ヘッドレス)

openjdk-21-jre-zero/noble 21.0.3+9-1ubuntu1 amd64
  Alternative JVM for OpenJDK, using Zero

openjdk-21-source/noble 21.0.3+9-1ubuntu1 all
  OpenJDK Development Kit (JDK) source files

openjdk-21-testsupport/noble 21.0.3+9-1ubuntu1 amd64
  Java runtime based on OpenJDK (regression test support)

こちらには 21がありました。

Ubuntu 24.04がリリースされても開発元である Canonicalの snapに対する態度がハッキリせず、どちらのパッケージを導入するべきなのか悩みどころです。

Desktopには snapで、Serverには aptで、というやり方でも良いような気もするし、「クライアントでの開発とサーバーでの実行で別な JDK使っちゃダメだろ」と言われると困るし、と言ってクラウドの JDKなんかもっと別物だし…、Write Once Run Anywhere はどこ行った?とも。

色々考えた末、ここでは aptリポジトリを使って debパッケージをインストールすることにしました。

インストールします。

subro@UbuntuServer2404-1:~$ sudo apt install -y openjdk-21-jdk
〜〜〜 かなりの数のライブラリがインストールされるので省略 〜〜〜

無事インストールできました。

動作確認を兼ねてバージョン確認をします。

subro@UbuntuServer2404-1:~$ java --version
openjdk 21.0.3 2024-04-16
OpenJDK Runtime Environment (build 21.0.3+9-Ubuntu-1ubuntu1)
OpenJDK 64-Bit Server VM (build 21.0.3+9-Ubuntu-1ubuntu1, mixed mode, sharing)

javaコマンドにパスも通っており、Version 21ですので、問題ありません。


==========
まだ去年の秋に出たばかりのバージョンゆえ、Javaベースの製品で未対応のものが多いと思いますが、やはり LTSですので 18・19の時と違って製品側も早々に対応しないといけないはずです。

Javaでの新規開発案件では、採用対象バージョンに入ってくると思いますので、プログラマの人は早めにインストールして慣れておくと良いでしょう。

サーバー運用管理の面では Javaってもうインフラですから、あんまりアレコレとアップデートするものでもないですね。

Ver.21がしばらくは続くはずなので、メジャーバージョンはこれに固定して後はセキュリティアップデートが出る度に上げていく感じになりましょうか。


スキわかシリーズの Java本も 4版が出ていますね。(21対応じゃないと思いますけど)


基本を覚えたら、これがお奨めです。


デザインパターンについては、この本は書き口が軽くて良かったです。
人気があったのか 2版も出ました。