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