Java 21 on Devuan 5 (Debian 12): インストール (手動で)
Tags: java, openjdk, devuan, debian
Published: 2023-10-15 07:55:44

## はじめに

[Java](https://dev.java/) 汎用プログラミング言語に関して、[OpenJDK](https://openjdk.org/) の新しい LTS (Long Term Support) バージョンである [21](https://jdk.java.net/21/) が先月の 2023 年 9 月 17 日にリリースされました 🎉

[Debian](https://www.debian.org/) [12 - bookworm](https://www.debian.org/releases/bookworm/) の [リポジトリ](https://packages.debian.org/bookworm/) 上では、現行バージョンはまだ 17 すなわち一つ前の LTS です。

本記事で、21 を手動でインストールする方法を紹介します。ターゲット環境は Debian 12 をもとにしてつくられている [Devuan](https://www.devuan.org/) [5 - Daedalus](https://www.devuan.org/os/announce/daedalus-release-announce-2023-08-14) という Linux ディストロです。

---

別の方法もあります。JDK 21 の "[x64 Debian Package](https://www.oracle.com/java/technologies/downloads/#java21)" が [Oracle](https://www.oracle.com/) から配布されています。それを使うこともできます。

さらに、最新バージョンを試すだけの目的であれば、Oracle から Java 21 の [PlayGround](https://dev.java/playground/) 環境も提供されています。こちらはオンラインで利用でき、ローカル環境へのインストールは不要です。

それから、最もかんたんな方法の一つも挙げておきます。["OpenJDK" Docker 公式イメージ](https://hub.docker.com/_/openjdk) を使うことです。["21-bookworm" タグ](https://hub.docker.com/layers/library/openjdk/21-jdk/images/sha256-c67f402f77197f2e6ae84ff1fca868699ce3b38bfa78604524051420fa2e4383) が公開されています。

### 環境

- OS: Devuan 5 Daedalus
  - ベースは Debian 12 bookworm
- App Engine: OpenJDK 21

## チュートリアル

### OpenJDK パッケージの取得

公式 Web サイトが出発点になります: https://jdk.java.net/21/

ここでパッケージを取得できます。私は以下のコマンドで取得しました:

```console
$ curl -LO https://download.java.net/java/GA/jdk21/fd2272bbf8e04c3dbaee13770090416c/35/GPL/openjdk-21_linux-x64_bin.tar.gz
```

サーバーとローカルのチェックサムを比較することで、ダウンロード結果を検証できます。一例ですが、以下のコマンドで実施できます:

```console
$ echo "$(curl -s https://download.java.net/java/GA/jdk21/fd2272bbf8e04c3dbaee13770090416c/35/GPL/openjdk-21_linux-x64_bin.tar.gz.sha256) openjdk-21_linux-x64_bin.tar.gz" | \
      sha256sum -c
openjdk-21_linux-x64_bin.tar.gz: OK
```

上は、サーバーのチェックサムがローカルと一致することが確認できた、ということを意味します:

```console
$ # ダウンロードしたファイルのチェックサム
$ sha256sum openjdk-21_linux-x64_bin.tar.gz
a30c454a9bef8f46d5f1bf3122830014a8fbe7ac03b5f8729bc3add4b92a1d0a  openjdk-21_linux-x64_bin.tar.gz
```

### ファイル群の配置

展開します:

```console
$ tar xzf openjdk-21_linux-x64_bin.tar.gz
```

結果は以下の通りでした:

```console
$ ls {.,jdk-21}
.:
jdk-21  openjdk-21_linux-x64_bin.tar.gz

jdk-21:
bin  conf  include  jmods  legal  lib  release
```

`jdk-21` ディレクトリを手に入れました。その中には `bin` などが含まれています 👍

### 環境変数の設定

`PATH` を `JAVA_HOME` を設定します。

`PATH` の設定:

```console
$ # bash の場合
$ export PATH=$(readlink -f ./jdk-21/bin):$PATH
$ # fish の場合
$ #set -x PATH $(readlink -f ./jdk-21/bin/):$PATH
```

`JAVA_HOME` の設定:

```console
$ # bash の場合
$ export JAVA_HOME=$(readlink -f .)
$ # fish の場合
$ #set -x JAVA_HOME $(readlink -f .)
```

準備完了です 🙌

## おわりに

これで Java 21 環境を構築できました:

```console
$ java --version
openjdk 21 2023-09-19
OpenJDK Runtime Environment (build 21+35-2513)
OpenJDK 64-Bit Server VM (build 21+35-2513, mixed mode, sharing)
```

試しに実行してみましょうか。`.java` ファイルを作成しましょう:

```console
$ nvim HelloWorld.java
```

そこに以下のように記述します:

```java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, world.");
    }
}
```

直接ファイルを実行する場合、以下のようにします:

```console
$ java HelloWorld.java
Hello, world.
```

うまく行きましたね。では次に、手動でコンパイルしてから実行してみましょう:

```console
$ ls HelloWorld*
HelloWorld.java

$ javac HelloWorld.java
$ # .class ファイルが作成されます

$ ls HelloWorld*
HelloWorld.class  HelloWorld.java

$ java HelloWorld
Hello, world.
```

こんにちは、最新の Devuan さんの上で動く 最新の Java さん ☺