How to Install Java on Linux (All Distros)

Linux has the easiest Java install path of any OS — every major distribution ships OpenJDK in its standard package manager. One command gets you a working JDK.

Debian / Ubuntu

sudo apt update
sudo apt install openjdk-21-jdk
java -version

Install the JRE only (smaller, no compiler):

sudo apt install openjdk-21-jre

Available versions depend on your Ubuntu release. Ubuntu 24.04 (Noble) ships OpenJDK 21 by default; 22.04 ships 17 and 21; older releases may only have 11 or 17 in the default repo.

Fedora / RHEL 9 / CentOS Stream

sudo dnf install java-21-openjdk-devel   # JDK
# or JRE only:
sudo dnf install java-21-openjdk

Arch Linux / Manjaro

sudo pacman -S jdk-openjdk           # latest OpenJDK
# or a specific version:
sudo pacman -S jdk21-openjdk

Set the default:

sudo archlinux-java set java-21-openjdk

openSUSE / SLES

sudo zypper install java-21-openjdk-devel

Alpine Linux (musl)

apk add openjdk21-jdk

For Alpine (used in Docker containers), prefer Azul Zulu or the Temurin Alpine build — they include musl-compatible JDKs.

Manual install from Temurin tarball

When you need a specific version not in your repo:

# Download Temurin 21 tarball from adoptium.net
tar -xzf OpenJDK21U-jdk_x64_linux_hotspot_*.tar.gz
sudo mv jdk-21.* /opt/jdk-21
echo 'export JAVA_HOME=/opt/jdk-21' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
java -version

Multiple JDKs with update-alternatives

# Register a manually installed JDK:
sudo update-alternatives --install /usr/bin/java java /opt/jdk-21/bin/java 2100
sudo update-alternatives --install /usr/bin/javac javac /opt/jdk-21/bin/javac 2100

# Switch:
sudo update-alternatives --config java

SDKMAN! (version manager)

SDKMAN! manages multiple Java versions and dozens of JVM tools:

curl -s "https://get.sdkman.io" | bash
source ~/.sdkman/bin/sdkman-init.sh
sdk install java 21.0.3-tem    # Temurin 21
sdk use java 17.0.11-tem       # switch to 17 in current shell