Install & Setup Oracle Java JDK 21 in Your Linux [Ubuntu, Fedora, Manjaro]

I’ve written about how to install the latest Oracle Java JDK in Ubuntu. Here I’m going to rewrite the tutorial to cover more Linux systems.

Oracle offers official binary packages for downloading in its website. User has just to install the files into right location and setup the environment variables. And here’s how to do the job step by step.

Step 1: Download & Install Java package

First, go to the official download page by visiting the link below:

Then select download one of the packages below for your system:

  • x64 Debian Package – for modern 64-bit Debian, Ubuntu, Linux Mint, Pop! OS, Zorin OS, Kali Linux, etc.
  • x64 RPM Package – for 64-bit Fedora, REHL, Rocky Linux, CentOS, openSUSE, etc.
  • x64 Compressed Archive – for Arch, Manjaro and other Linux.
  • Arm 64 RPM Package – for Fedora, REHL, etc on Apple Silicon, Raspberry Pi etc devices.
  • Arm 64 Compressed Archive – universal package for Linux on Arm devices.

Install the Debian (.deb) package

After downloading the .deb package in Debian/Ubuntu based systems, either double-click on it in file manager to open with your system Software App and click install.

Or open terminal and install the package via apt command:

sudo apt install ~/Downloads/jdk-*_linux-x64_bin.deb

Here assume you saved the package in user’s ‘Downloads’ folder. When done, just go bottom step to verify.

Install the RPM package

Also, in today’s Linux, you may double-click on the RPM package to install via system’s Software App.

Or, search for and open terminal, then run the dnf command in Fedora based systems:

sudo dnf install ~/Downloads/jdk-*.rpm

And for openSUSE, use the zypper command to install the RPM package:

sudo zypper install ~/Downloads/jdk-*.rpm

When done, just go bottom step to verify.

Install the compressed archive for other Linux

For other Linux, just grab the ‘.tar.gz’ tarball, then extract to the system directory (usually ‘/usr/lib/jvm’).

First, search for and open terminal from start menu. Run command to create the destination folder in case it does not exist:

sudo mkdir -p /usr/lib/jvm

Then, run command to extract Java tarball to that folder:

sudo tar -zxf ~/Downloads/jdk-21_linux-aarch64_bin.tar.gz -C /usr/lib/jvm
Change "jdk-21_linux-aarch64_bin.tar.gz" depends on which package you downloaded.

Finally, do next steps to set Java environment variables.

Step 2: Set Java Home, $PATH environments

Installing RPM and Debian package will AUTOMATICALLY set all things up!!
So, only follow this step if you installed it via "Compressed Archive"

Set this Java as default in Debian/Ubuntu

For Debian and Ubuntu based systems, update-alternatives is the good choice to create symbolic links for having multiple Java versions.

First, open terminal from start menu (press Ctrl+Alt+T in Ubuntu) and run command to create symbolic links:

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-21/bin/java 1
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-21/bin/javac 1
Replace 'jdk-21' according to the Java version you installed.


You may then run the commands below one by one to configure the executable files and select desired one as default.

sudo update-alternatives --config java
sudo update-alternatives --config javac

Setup Java Home & $PATH variables

To add the Java directory to your $PATH and setup Java Home, either edit ‘/etc/profile’ for global or ‘~/.bashrc’ for current user only.

For easy management, here I’m going to create 2 script files under ‘/etc/profile.d‘ directory for global use.

1. First, open terminal and run command to create /etc/profile.d/jdk.sh for Bourne Shell:

sudo gedit /etc/profile.d/jdk.sh
replace 'gedit' with your system text editor, or use nano that works in most Linux.

When the file opens, page the lines below and save it (For nano, press Ctrl+X, type y and hit Enter):

export J2SDKDIR=/usr/lib/jvm/jdk-21
export J2REDIR=/usr/lib/jvm/jdk-21
export PATH=$PATH:/usr/lib/jvm/jdk-21/bin:/usr/lib/jvm/jdk-21/db/bin
export JAVA_HOME=/usr/lib/jvm/jdk-21
export DERBY_HOME=/usr/lib/jvm/jdk-21/db

2. Then, create /etc/profile.d/jdk.csh for C Shell:

sudo gedit /etc/profile.d/jdk.csh

input the lines below and save it:

setenv J2SDKDIR /usr/lib/jvm/jdk-21
setenv J2REDIR /usr/lib/jvm/jdk-21
setenv PATH ${PATH}:/usr/lib/jvm/jdk-21/bin:/usr/lib/jvm/jdk-21/db/bin
setenv JAVA_HOME /usr/lib/jvm/jdk-21
setenv DERBY_HOME /usr/lib/jvm/jdk-21/db

Also, change jdk-21 according to Java version you installed.

To apply the changes, you need to log out and then back in.

Verify

Finally, verify java version via command:

java -version
javac -version

And verify Java home via:

java -XshowSettings:properties -version

Summary

Installing Oracle Java in Linux today is quite easy. In general, just download and install the RPM/Debian package depends on your Linux. It automatically setup Java HOME and make it as default.

For other Linux, user need to manually extract the compressed tarball to ‘/usr/lib/jvm’ and setup $PATH and java home. For system without update-alternatives, add Java directory to the beginning of $PATH variable will make Linux use it as first choice.