Java on Devuan (3 Part Series)
1 Java 21 on Devuan 5 (Debian 12): Install manually
2 Maven on Java 21 and Devuan 5 (Debian 12): Install manually
3 Quarkus 3.4 – Container-first Java Stack: Install with OpenJDK 21 and Create REST API
Summary
Around Java, the general-purpose programming language, the next LTS (Long Term Support) version of OpenJDK, 21, was released last month, on 17 Sep. 2023
On Debian 12 – bookworm repositories, the current version is 17 aka the previous LTS.
This post shows how to install 21 manually on Devuan 5 – Daedalus based on Debian 12.
Alternatively, JDK 21 “x64 Debian Package” Oracle offers is available.
In addition, Just in order to taste the latest, Oracle offers Java 21 PlayGround, too, which doesn’t require local installation.
Moreover, one of the easiest ways is to use “OpenJDK” Docker Official Image and its “21-bookworm” tag.
Environment
- OS: Devuan 5 Daedalus
- based on Debian 12 bookworm
- App Engine: OpenJDK 21
Tutorial
Get OpenJDK package
Visit: https://jdk.java.net/21/
You can get it there. I used the command line below:
<span>$</span><span> </span>curl <span>-LO</span> https://download.java.net/java/GA/jdk21/fd2272bbf8e04c3dbaee13770090416c/35/GPL/openjdk-21_linux-x64_bin.tar.gz<span>$</span><span> </span>curl <span>-LO</span> https://download.java.net/java/GA/jdk21/fd2272bbf8e04c3dbaee13770090416c/35/GPL/openjdk-21_linux-x64_bin.tar.gz$ 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
You can verify the download by comparing the checksums between the server and the local. Use the command lines below, for example:
<span>$</span><span> </span><span>echo</span> <span>"</span><span>$(</span>curl <span>-s</span> https://download.java.net/java/GA/jdk21/fd2272bbf8e04c3dbaee13770090416c/35/GPL/openjdk-21_linux-x64_bin.tar.gz.sha256<span>)</span><span> openjdk-21_linux-x64_bin.tar.gz"</span> | <span>\</span><span> sha256sum -c openjdk-21_linux-x64_bin.tar.gz: OK </span><span>$</span><span> </span><span>echo</span> <span>"</span><span>$(</span>curl <span>-s</span> https://download.java.net/java/GA/jdk21/fd2272bbf8e04c3dbaee13770090416c/35/GPL/openjdk-21_linux-x64_bin.tar.gz.sha256<span>)</span><span> openjdk-21_linux-x64_bin.tar.gz"</span> | <span>\</span> <span> sha256sum -c openjdk-21_linux-x64_bin.tar.gz: OK </span>$ 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
It means it was confirmed that the server checksum was equal to the local one:
<span>$</span><span> </span><span># checksum of the downloaded file</span><span>$</span><span> </span><span>sha256sum </span>openjdk-21_linux-x64_bin.tar.gz<span>a30c454a9bef8f46d5f1bf3122830014a8fbe7ac03b5f8729bc3add4b92a1d0a openjdk-21_linux-x64_bin.tar.gz </span><span>$</span><span> </span><span># checksum of the downloaded file</span> <span>$</span><span> </span><span>sha256sum </span>openjdk-21_linux-x64_bin.tar.gz <span>a30c454a9bef8f46d5f1bf3122830014a8fbe7ac03b5f8729bc3add4b92a1d0a openjdk-21_linux-x64_bin.tar.gz </span>$ # checksum of the downloaded file $ sha256sum openjdk-21_linux-x64_bin.tar.gz a30c454a9bef8f46d5f1bf3122830014a8fbe7ac03b5f8729bc3add4b92a1d0a openjdk-21_linux-x64_bin.tar.gz
Enter fullscreen mode Exit fullscreen mode
Place files
Extract it:
<span>$</span><span> </span><span>tar </span>xzf openjdk-21_linux-x64_bin.tar.gz<span>$</span><span> </span><span>tar </span>xzf openjdk-21_linux-x64_bin.tar.gz$ tar xzf openjdk-21_linux-x64_bin.tar.gz
Enter fullscreen mode Exit fullscreen mode
The result is as below:
<span>$</span><span> </span><span>ls</span> <span>{</span>.,jdk-21<span>}</span><span>.: jdk-21 openjdk-21_linux-x64_bin.tar.gz jdk-21: bin conf include jmods legal lib release </span><span>$</span><span> </span><span>ls</span> <span>{</span>.,jdk-21<span>}</span> <span>.: jdk-21 openjdk-21_linux-x64_bin.tar.gz jdk-21: bin conf include jmods legal lib release </span>$ 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
Now you have jdk-21
directory which contains bin
etc.
Set environment variables
Prepare PATH
and JAVA_HOME
.
As to PATH
:
<span>$</span><span> </span><span># case bash</span><span>$</span><span> </span><span>export </span><span>PATH</span><span>=</span><span>$(</span><span>readlink</span> <span>-f</span> ./jdk-21/bin<span>)</span>:<span>$PATH</span><span>$</span><span> </span><span># case fish</span><span>$</span><span> </span><span>#set -x PATH $(readlink -f ./jdk-21/bin/):$PATH</span><span>$</span><span> </span><span># case bash</span> <span>$</span><span> </span><span>export </span><span>PATH</span><span>=</span><span>$(</span><span>readlink</span> <span>-f</span> ./jdk-21/bin<span>)</span>:<span>$PATH</span> <span>$</span><span> </span><span># case fish</span> <span>$</span><span> </span><span>#set -x PATH $(readlink -f ./jdk-21/bin/):$PATH</span>$ # case bash $ export PATH=$(readlink -f ./jdk-21/bin):$PATH $ # case fish $ #set -x PATH $(readlink -f ./jdk-21/bin/):$PATH
Enter fullscreen mode Exit fullscreen mode
As to JAVA_HOME
:
<span>$</span><span> </span><span># case bash</span><span>$</span><span> </span><span>export </span><span>JAVA_HOME</span><span>=</span><span>$(</span><span>readlink</span> <span>-f</span> .<span>)</span><span>$</span><span> </span><span># case fish</span><span>$</span><span> </span><span>#set -x JAVA_HOME $(readlink -f .)</span><span>$</span><span> </span><span># case bash</span> <span>$</span><span> </span><span>export </span><span>JAVA_HOME</span><span>=</span><span>$(</span><span>readlink</span> <span>-f</span> .<span>)</span> <span>$</span><span> </span><span># case fish</span> <span>$</span><span> </span><span>#set -x JAVA_HOME $(readlink -f .)</span>$ # case bash $ export JAVA_HOME=$(readlink -f .) $ # case fish $ #set -x JAVA_HOME $(readlink -f .)
Enter fullscreen mode Exit fullscreen mode
Ready
Conclusion
Now Java 21 is in your hands:
<span>$</span><span> </span>java <span>--version</span><span>openjdk 21 2023-09-19 OpenJDK Runtime Environment (build 21+35-2513) OpenJDK 64-Bit Server VM (build 21+35-2513, mixed mode, sharing) </span><span>$</span><span> </span>java <span>--version</span> <span>openjdk 21 2023-09-19 OpenJDK Runtime Environment (build 21+35-2513) OpenJDK 64-Bit Server VM (build 21+35-2513, mixed mode, sharing) </span>$ 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
Let’s do test run. Create a .java
file:
<span>$</span><span> </span>nvim HelloWorld.java<span>$</span><span> </span>nvim HelloWorld.java$ nvim HelloWorld.java
Enter fullscreen mode Exit fullscreen mode
Write below in it:
<span>public</span> <span>class</span> <span>HelloWorld</span> <span>{</span><span>public</span> <span>static</span> <span>void</span> <span>main</span><span>(</span><span>String</span><span>[]</span> <span>args</span><span>)</span> <span>{</span><span>System</span><span>.</span><span>out</span><span>.</span><span>println</span><span>(</span><span>"Hello, world."</span><span>);</span><span>}</span><span>}</span><span>public</span> <span>class</span> <span>HelloWorld</span> <span>{</span> <span>public</span> <span>static</span> <span>void</span> <span>main</span><span>(</span><span>String</span><span>[]</span> <span>args</span><span>)</span> <span>{</span> <span>System</span><span>.</span><span>out</span><span>.</span><span>println</span><span>(</span><span>"Hello, world."</span><span>);</span> <span>}</span> <span>}</span>public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, world."); } }
Enter fullscreen mode Exit fullscreen mode
The way to execute it directly is as below:
<span>$</span><span> </span>java HelloWorld.java<span>Hello, world. </span><span>$</span><span> </span>java HelloWorld.java <span>Hello, world. </span>$ java HelloWorld.java Hello, world.
Enter fullscreen mode Exit fullscreen mode
Yay. Next, try to compile it manually and run it:
<span>$</span><span> </span><span>ls </span>HelloWorld<span>*</span><span>HelloWorld.java </span><span>$</span><span> </span>javac HelloWorld.java<span>$</span><span> </span><span># .class file is generated</span><span> </span><span>$</span><span> </span><span>ls </span>HelloWorld<span>*</span><span>HelloWorld.class HelloWorld.java </span><span>$</span><span> </span>java HelloWorld<span>Hello, world. </span><span>$</span><span> </span><span>ls </span>HelloWorld<span>*</span> <span>HelloWorld.java </span><span>$</span><span> </span>javac HelloWorld.java <span>$</span><span> </span><span># .class file is generated</span> <span> </span><span>$</span><span> </span><span>ls </span>HelloWorld<span>*</span> <span>HelloWorld.class HelloWorld.java </span><span>$</span><span> </span>java HelloWorld <span>Hello, world. </span>$ ls HelloWorld* HelloWorld.java $ javac HelloWorld.java $ # .class file is generated $ ls HelloWorld* HelloWorld.class HelloWorld.java $ java HelloWorld Hello, world.
Enter fullscreen mode Exit fullscreen mode
Hello, the latest Java on the latest Devuan
Java on Devuan (3 Part Series)
1 Java 21 on Devuan 5 (Debian 12): Install manually
2 Maven on Java 21 and Devuan 5 (Debian 12): Install manually
3 Quarkus 3.4 – Container-first Java Stack: Install with OpenJDK 21 and Create REST API
暂无评论内容