Linux Java Runtime Environment !!exclusive!! -

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 :

# Run with java explicitly java -jar myapp.jar chmod +x myapp.jar 10.5 "UnsupportedClassVersionError" Cause : JAR compiled with newer Java than your JRE. linux java runtime environment

COPY --chown=appuser:appuser myapp.jar /app/ sudo apt update sudo apt install temurin-17-jre #

java -Djava.awt.headless=true -jar app.jar Fix : COPY --chown=appuser:appuser myapp

# Disable SSLv3, TLSv1, TLSv1.1 jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, MD5withRSA package.access=sun.,com.sun.xml.,com.sun.jndi.,... 9.3 Running JRE with least privilege Create a dedicated system user:

# Search for java binary find /usr -name java -type f 2>/dev/null export PATH=$PATH:/usr/lib/jvm/java-17-openjdk/bin 10.2 "Error: Could not create the Java Virtual Machine" Cause : Insufficient memory or invalid JVM flags.

linux java runtime environment
LOADING