sudo apt update sudo apt install temurin-17-jre # Download from https://adoptium.net/ wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.9%2B9/OpenJDK17U-jre_x64_linux_hotspot_17.0.9_9.tar.gz Extract to /opt sudo tar -xzf OpenJDK17U-jre_x64_linux_hotspot_17.0.9_9.tar.gz -C /opt Set environment variables echo "export JAVA_HOME=/opt/jdk-17.0.9+9-jre" | sudo tee /etc/profile.d/java.sh echo "export PATH=$JAVA_HOME/bin:$PATH" | sudo tee -a /etc/profile.d/java.sh source /etc/profile.d/java.sh 5. Managing Multiple JRE Versions Linux allows multiple JREs side-by-side. Use update-alternatives (Debian/Ubuntu) or manual symlinks. 5.1 Using update-alternatives (Debian family) # Register a new JRE sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1700 List available JREs sudo update-alternatives --config java Switch version interactively (enter selection number) 5.2 Manual management via JAVA_HOME # Set per user (in ~/.bashrc) export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH Or system-wide (in /etc/environment) JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64" 6. Verifying Your JRE Installation | Command | Purpose | |---------|---------| | java -version | Shows JRE vendor, version, and VM mode | | which java | Shows path to java binary | | update-alternatives --list java | Lists all installed JREs (Debian) | | readlink -f $(which java) | Resolves symlinks to actual binary | | ldd $(which java) | Shows linked system libraries | Example validation script: #!/bin/bash echo "Java version:" java -version 2>&1 | head -1 echo "JAVA_HOME: $JAVA_HOME:-not set" echo "Java binary: $(readlink -f $(which java))" 7. JRE in Headless Environments (Servers & Containers) For server applications (no GUI), use headless JRE :
| Distribution | Provider | Free | Long-Term Support (LTS) | Notes | |--------------|----------|------|------------------------|-------| | | Oracle / Community | Yes | Yes (8,11,17,21) | Default on RHEL, Debian, Ubuntu | | Eclipse Adoptium (formerly AdoptOpenJDK) | Eclipse Foundation | Yes | Yes | Reliable, pre-built binaries | | Amazon Corretto | AWS | Yes | Yes | Multi-platform, performance tweaks | | Azul Zulu | Azul | Yes | Yes | Broad platform support | | Oracle JDK | Oracle | No (commercial use) | Yes | Only for development/test | linux java runtime environment
sudo useradd -r -s /bin/false javauser sudo chown -R javauser:javauser /opt/myapp sudo -u javauser java -jar /opt/myapp/app.jar 10.1 "java: command not found" Cause : JRE not installed or PATH not set. sudo apt update sudo apt install temurin-17-jre #