With every new release of Java there are plenty of new features, security update, language optimizations and improvements, and performance enhancements. Java 21 LTS has undergone a series of serious development stages before the official General Availability (GA) release. Every six months there is a new Java release, but the pattern of LTS releases being every three years. At the time of updating this article, the most recent LTS release of Java is JDK 21.
This article is created to serve as an up-to-date reference information for the installation of JDK 21 on Ubuntu 22.04, Ubuntu 20.04, and Ubuntu 18.04. For all new features check out the official Oracle Java release notes. Java 21 is made possible by the contributions of many individuals and organizations in the OpenJDK Community.
The Ultimate Ubuntu Desktop Handbook
Master Ubuntu like a pro - from beautiful desktop customization to powerful terminal automation. Perfect for developers, system admins, and power users who want total control of their workspace.
Install Oracle JDK 21 LTS on Ubuntu 22.04|20.04|18.04
Oracle provides JDK 21 binaries for free to install and use in production and even redistribute, at no cost, under the Oracle No-Fee Terms and Conditions (NFTC). Visit Oracle Java downloads page and get the latest DEB package of Java Development Kit 21.
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.deb
Use apt package installation tool to install Java JDK 21 LTS installed on your Ubuntu system.
sudo apt install ./jdk-21_linux-x64_bin.deb
Verify that installation doesn’t give any errors it the output:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'jdk-21' instead of './jdk-21_linux-x64_bin.deb'
The following NEW packages will be installed:
jdk-21
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/168 MB of archives.
After this operation, 347 MB of additional disk space will be used.
Get:1 /root/jdk-21_linux-x64_bin.deb jdk-21 amd64 21.0.1-ga [168 MB]
Selecting previously unselected package jdk-21.
(Reading database ... 39280 files and directories currently installed.)
Preparing to unpack /root/jdk-21_linux-x64_bin.deb ...
Unpacking jdk-21 (21.0.1-ga) ...
Setting up jdk-21 (21.0.1-ga) ...
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jar to provide /usr/bin/jar (jar) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jarsigner to provide /usr/bin/jarsigner (jarsigner) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/java to provide /usr/bin/java (java) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/javac to provide /usr/bin/javac (javac) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/javadoc to provide /usr/bin/javadoc (javadoc) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/javap to provide /usr/bin/javap (javap) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jcmd to provide /usr/bin/jcmd (jcmd) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jconsole to provide /usr/bin/jconsole (jconsole) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jdb to provide /usr/bin/jdb (jdb) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jdeprscan to provide /usr/bin/jdeprscan (jdeprscan) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jdeps to provide /usr/bin/jdeps (jdeps) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jfr to provide /usr/bin/jfr (jfr) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jhsdb to provide /usr/bin/jhsdb (jhsdb) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jimage to provide /usr/bin/jimage (jimage) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jinfo to provide /usr/bin/jinfo (jinfo) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jlink to provide /usr/bin/jlink (jlink) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jmap to provide /usr/bin/jmap (jmap) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jmod to provide /usr/bin/jmod (jmod) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jpackage to provide /usr/bin/jpackage (jpackage) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jps to provide /usr/bin/jps (jps) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jrunscript to provide /usr/bin/jrunscript (jrunscript) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jshell to provide /usr/bin/jshell (jshell) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jstack to provide /usr/bin/jstack (jstack) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jstat to provide /usr/bin/jstat (jstat) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jstatd to provide /usr/bin/jstatd (jstatd) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/jwebserver to provide /usr/bin/jwebserver (jwebserver) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/keytool to provide /usr/bin/keytool (keytool) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/rmiregistry to provide /usr/bin/rmiregistry (rmiregistry) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/bin/serialver to provide /usr/bin/serialver (serialver) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-21-oracle-x64/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode
Scanning processes...
Scanning linux images...
Confirm installation by checking the default version of Java.
$ java --version
java 21.0.1 2023-10-17 LTS
Java(TM) SE Runtime Environment (build 21.0.1+12-LTS-29)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.1+12-LTS-29, mixed mode, sharing)
If you need to set Java Home it should be /usr/lib/jvm/jdk-21-oracle-x64/
export JAVA_HOME=/usr/lib/jvm/jdk-21-oracle-x64
export PATH=$PATH:$JAVA_HOME/bin
To persist set the values in ~/.bashrc or /etc/profile file.
Install OpenJDK 21 LTS on Ubuntu 22.04|20.04|18.04
OpenJDK is an open-source implementation of Java Platform, Standard Edition licensed under the GNU General Public License. OpenJDK 21 is a production-ready open-source builds of the Java Development Kit, version 21, an implementation of the Java SE 21 Platform.
To install OpenJDK 21, visit OpenJDK 21 release page and get the latest version available for your CPU architecture,
wget https://download.java.net/java/GA/jdk21.0.2/f2283984656d49d69e91c558476027ac/13/GPL/openjdk-21.0.2_linux-x64_bin.tar.gz
Extract downloaded archive.
tar xvf openjdk-21.0.2_linux-x64_bin.tar.gz
Move the folder created after extraction
sudo mv jdk-21.0.2 /usr/local/
Set environment variables inside /etc/profile.d/ directory.
$ sudo vim /etc/profile.d/jdk21.sh
export JAVA_HOME=/usr/local/jdk-21.0.2
export PATH=$PATH:$JAVA_HOME/bin
Source the files to make variables available in your current shell session.
source /etc/profile.d/jdk21.sh
Confirm Java version using the following command.
$ java --version
openjdk 21.0.2 2024-01-16
OpenJDK Runtime Environment (build 21.0.2+13-58)
OpenJDK 64-Bit Server VM (build 21.0.2+13-58, mixed mode, sharing)
Switching between Java versions
On systems with multiple versions of Java installed, you can switch between installed versions, using the update-java-alternatives command.
First list all java versions:
$ sudo update-java-alternatives --list
java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64
jdk-21-oracle-x64 352329728 /usr/lib/jvm/jdk-21-oracle-x64
As an example, to set Java 21 version as default, use:
sudo update-java-alternatives --set /usr/lib/jvm/jdk-21-oracle-x64
Confirm the change was successful.
# Before
$ java --version
openjdk 11.0.21 2023-10-17
OpenJDK Runtime Environment (build 11.0.21+9-post-Ubuntu-0ubuntu122.04)
OpenJDK 64-Bit Server VM (build 11.0.21+9-post-Ubuntu-0ubuntu122.04, mixed mode, sharing)
# After
$ java --version
java 21.0.1 2023-10-17 LTS
Java(TM) SE Runtime Environment (build 21.0.1+12-LTS-29)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.1+12-LTS-29, mixed mode, sharing)
Conclusion
By design, Java is an easy to use and and understand programming language. Enjoy writing your applications in Java 21, compiling, debugging, and hopefully running it in Production environments. With Java it’s easy to create modular programs and reusable code on any platform. We hope this article was helpful and we would like to thank you for visiting our website.





























































