Software & Configuration
Install Java (JDK/JRE)
How to install Java on Linux and Windows Server, manage multiple versions and configure JAVA_HOME
Linux (Ubuntu/Debian)
OpenJDK (recommended, free)
# Update packages
sudo apt update
# Java 21 LTS (current recommended version)
sudo apt install openjdk-21-jdk -y
# Java 17 LTS (very common, Minecraft, Spring Boot, etc.)
sudo apt install openjdk-17-jdk -y
# Java 11 LTS (legacy)
sudo apt install openjdk-11-jdk -y
# JRE only (runtime, without compiler: lighter)
sudo apt install openjdk-21-jre -yVerify:
java -version
javac -version # only if you installed JDKManage multiple versions with update-alternatives
# See installed versions
sudo update-alternatives --list java
# Change default version
sudo update-alternatives --config java
# A menu will appear: enter the number of the desired versionConfigure JAVA_HOME
# Find the path of the active version
readlink -f $(which java) | sed 's|/bin/java||'
# Example output: /usr/lib/jvm/java-21-openjdk-amd64
# Add to /etc/environment (all sessions, all users)
echo 'JAVA_HOME="/usr/lib/jvm/java-21-openjdk-amd64"' | sudo tee -a /etc/environment
echo 'PATH="$PATH:$JAVA_HOME/bin"' | sudo tee -a /etc/environment
# Apply to current session
source /etc/environment
echo $JAVA_HOMEOr for current user only (~/.bashrc):
echo 'export JAVA_HOME="/usr/lib/jvm/java-21-openjdk-amd64"' >> ~/.bashrc
echo 'export PATH="$PATH:$JAVA_HOME/bin"' >> ~/.bashrc
source ~/.bashrcCentOS / AlmaLinux / RHEL
# Java 21
sudo dnf install java-21-openjdk-devel -y
# Java 17
sudo dnf install java-17-openjdk-devel -y
# Change version
sudo alternatives --config javaWindows Server
Method 1: Download from Adoptium (recommended)
Download from adoptium.net the .msi package for Windows x64.
- Choose Temurin 21 (LTS) or Temurin 17
- Download the
.msifile - Run the setup: it automatically includes JAVA_HOME and adds to PATH
Method 2: winget
# Java 21
winget install EclipseAdoptium.Temurin.21.JDK
# Java 17
winget install EclipseAdoptium.Temurin.17.JDK
# Java 11
winget install EclipseAdoptium.Temurin.11.JDKVerify and set JAVA_HOME manually
# Verify installation
java -version
# Set JAVA_HOME (if not already set by installer)
[System.Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\Program Files\Eclipse Adoptium\jdk-21.0.0.37-hotspot", "Machine")
$env:PATH += ";$env:JAVA_HOME\bin"
# Verify
echo $env:JAVA_HOMEJava for Minecraft/game servers
For Minecraft, PaperMC, etc.:
# Install Java 21 (required by Minecraft 1.20.5+)
sudo apt install openjdk-21-jdk -y
# Run the server with optimized parameters for performance
java -Xms2G -Xmx4G \
-XX:+UseG1GC \
-XX:+ParallelRefProcEnabled \
-XX:MaxGCPauseMillis=200 \
-XX:+UnlockExperimentalVMOptions \
-XX:+DisableExplicitGC \
-XX:+AlwaysPreTouch \
-XX:G1NewSizePercent=30 \
-XX:G1MaxNewSizePercent=40 \
-jar server.jar noguiWhere -Xms = minimum RAM and -Xmx = maximum RAM (adapt to your VPS).
Install a specific version (SDKMAN)
To manage multiple Java versions flexibly:
# Install SDKMAN
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
# List available versions
sdk list java
# Install specific version
sdk install java 21.0.3-tem
# Change version in current project
sdk use java 17.0.11-tem
# Set global default
sdk default java 21.0.3-tem