DEV Community

nabbisen
nabbisen

Posted on • Originally published at scqr.net

1 1

Java 21 on Devuan 5 (Debian 12): インストール (手動で)

はじめに

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

Debian 12 - bookwormリポジトリ 上では、現行バージョンはまだ 17 すなわち一つ前の LTS です。

本記事で、21 を手動でインストールする方法を紹介します。ターゲット環境は Debian 12 をもとにしてつくられている Devuan 5 - Daedalus という Linux ディストロです。


別の方法もあります。JDK 21 の "x64 Debian Package" が Oracle から配布されています。それを使うこともできます。

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

それから、最もかんたんな方法の一つも挙げておきます。"OpenJDK" Docker 公式イメージ を使うことです。"21-bookworm" タグ が公開されています。

環境

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

チュートリアル

OpenJDK パッケージの取得

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

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

$ curl -LO https://download.java.net/java/GA/jdk21/fd2272bbf8e04c3dbaee13770090416c/35/GPL/openjdk-21_linux-x64_bin.tar.gz
Enter fullscreen mode Exit fullscreen mode

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

$ 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
Enter fullscreen mode Exit fullscreen mode

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

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

ファイル群の配置

展開します:

$ tar xzf openjdk-21_linux-x64_bin.tar.gz
Enter fullscreen mode Exit fullscreen mode

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

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

jdk-21:
bin  conf  include  jmods  legal  lib  release
Enter fullscreen mode Exit fullscreen mode

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

環境変数の設定

PATHJAVA_HOME を設定します。

PATH の設定:

$ # bash の場合
$ export PATH=$(readlink -f ./jdk-21/bin):$PATH
$ # fish の場合
$ #set -x PATH $(readlink -f ./jdk-21/bin/):$PATH
Enter fullscreen mode Exit fullscreen mode

JAVA_HOME の設定:

$ # bash の場合
$ export JAVA_HOME=$(readlink -f .)
$ # fish の場合
$ #set -x JAVA_HOME $(readlink -f .)
Enter fullscreen mode Exit fullscreen mode

準備完了です 🙌

おわりに

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

$ 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)
Enter fullscreen mode Exit fullscreen mode

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

$ nvim HelloWorld.java
Enter fullscreen mode Exit fullscreen mode

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

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, world.");
    }
}
Enter fullscreen mode Exit fullscreen mode

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

$ java HelloWorld.java
Hello, world.
Enter fullscreen mode Exit fullscreen mode

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

$ ls HelloWorld*
HelloWorld.java

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

$ ls HelloWorld*
HelloWorld.class  HelloWorld.java

$ java HelloWorld
Hello, world.
Enter fullscreen mode Exit fullscreen mode

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

Do your career a big favor. Join DEV. (The website you're on right now)

It takes one minute, it's free, and is worth it for your career.

Get started

Community matters

Top comments (0)

Great read:

Is it Time to go Back to the Monolith?

History repeats itself. Everything old is new again and I’ve been around long enough to see ideas discarded, rediscovered and return triumphantly to overtake the fad. In recent years SQL has made a tremendous comeback from the dead. We love relational databases all over again. I think the Monolith will have its space odyssey moment again. Microservices and serverless are trends pushed by the cloud vendors, designed to sell us more cloud computing resources.

Microservices make very little sense financially for most use cases. Yes, they can ramp down. But when they scale up, they pay the costs in dividends. The increased observability costs alone line the pockets of the “big cloud” vendors.

👋 Kindness is contagious

Dive into an ocean of knowledge with this thought-provoking post, revered deeply within the supportive DEV Community. Developers of all levels are welcome to join and enhance our collective intelligence.

Saying a simple "thank you" can brighten someone's day. Share your gratitude in the comments below!

On DEV, sharing ideas eases our path and fortifies our community connections. Found this helpful? Sending a quick thanks to the author can be profoundly valued.

Okay