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)

# 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 -y

Verify:

java -version
javac -version  # only if you installed JDK

Manage 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 version

Configure 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_HOME

Or 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 ~/.bashrc

CentOS / 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 java

Windows Server

Download from adoptium.net the .msi package for Windows x64.

  1. Choose Temurin 21 (LTS) or Temurin 17
  2. Download the .msi file
  3. 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.JDK

Verify 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_HOME

Java 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 nogui

Where -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

On this page