Skip to main content

Step 4: Java Development Kit

Time: 5 minutes
Purpose: Install Java 17 (LTS) for Java applications and company tools

Java 17 Installation Options

Recommended: Amazon Corretto - Free, production-ready OpenJDK distribution

ProviderOfficial DocumentationUse Case
Amazon Correttoaws.amazon.com/correttoRecommended - Enterprise, production-ready
Adoptiumadoptium.netOpen source, widely used
Oracle Javaoracle.com/javaOfficial Oracle distribution

Quick Install via Package Managers

# macOS (Homebrew)
brew install --cask corretto17 # Amazon Corretto (recommended)
brew install openjdk@17 # Alternative: Adoptium/OpenJDK

# Windows (Chocolatey - PowerShell 7 as Administrator)
choco install corretto17jdk -y # Amazon Corretto (recommended)
choco install openjdk17 -y # Alternative: Adoptium/OpenJDK

# Linux (Ubuntu/Debian)
# For Corretto: see aws.amazon.com/corretto/faqs/#How_do_I_install_Amazon_Corretto
sudo apt install openjdk-17-jdk # Alternative: OpenJDK

Direct Downloads (GUI Installers)

Amazon Corretto (Recommended):

Adoptium (Alternative):

Configure Java Environment

Most package managers auto-configure Java. If java -version doesn't work, manually set environment variables.

Java Environment documentation: Oracle Java Environment Setup

Automatic Configuration

Most installations handle this automatically. Test first:

java -version   # Should show Java 17.x
javac -version # Should show Java 17.x compiler

Manual JAVA_HOME Setup (if needed)

# macOS - Auto-detect Java 17 path
export JAVA_HOME=$(/usr/libexec/java_home -v 17)

# Linux - Common OpenJDK path
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64

# Add to shell profile to persist
echo 'export JAVA_HOME=$(/usr/libexec/java_home -v 17)' >> ~/.zshrc # macOS
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc # Linux
# Windows PowerShell - Auto-detect Java installation
if (-not $env:JAVA_HOME) {
$javaPath = (Get-Command java -ErrorAction SilentlyContinue).Path
if ($javaPath) {
$javaHome = Split-Path (Split-Path $javaPath -Parent) -Parent
[Environment]::SetEnvironmentVariable("JAVA_HOME", $javaHome, "User")
$env:JAVA_HOME = $javaHome
}
}

Find Java Installation Paths

# macOS - List all Java versions
/usr/libexec/java_home -V

# Linux - Show installed Java alternatives
sudo update-alternatives --config java

# Windows - Typical installation directories
# C:\Program Files\Amazon Corretto\jdk17.x.x_x\
# C:\Program Files\Eclipse Adoptium\jdk-17.x.x.x-hotspot\

Verification

# Check Java version (should show Amazon Corretto 17.x.x)
java -version

# Check compiler
javac -version

# Check JAVA_HOME is set
echo $JAVA_HOME # Unix/macOS
echo $env:JAVA_HOME # Windows PowerShell

Expected output (Amazon Corretto):

openjdk version "17.0.x" 2023-xx-xx LTS
OpenJDK Runtime Environment Corretto-17.0.x.x (build 17.0.x+xx-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.x.x (build 17.0.x+xx-LTS, mixed mode, sharing)

Troubleshooting

"java: command not found"

  1. Verify Java is installed: Check Applications folder (macOS) or Programs folder (Windows)
  2. Check JAVA_HOME is set correctly
  3. Restart terminal after setting environment variables
  4. On macOS, try running /usr/libexec/java_home to find the correct path

Multiple Java versions installed

If you have multiple Java versions, ensure you're using Java 17:

# macOS - Set to Java 17 specifically
export JAVA_HOME=$(/usr/libexec/java_home -v 17)

# Linux - Set default Java version (if using Corretto)
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-amazon-corretto/bin/java 1
sudo update-alternatives --set java /usr/lib/jvm/java-17-amazon-corretto/bin/java

Next Step

Step 5: Docker