Installing JDK on Ubuntu

Guide to installing Java Development Kit on Ubuntu

Overview

The Java Development Kit (JDK) is essential for Java development. This guide covers installing different JDK versions on Ubuntu.

Choosing a JDK

Available Options

  • OpenJDK: Open-source implementation (recommended)
  • Oracle JDK: Official Oracle version (requires license for production)
  • Amazon Corretto: AWS distribution of OpenJDK
  • Azul Zulu: Commercial distribution with free builds

Installing OpenJDK

Check Available Versions

apt search openjdk

Install Default JDK

sudo apt update
sudo apt install -y default-jdk

Install Specific Versions

JDK 21 (Latest LTS):

sudo apt install -y openjdk-21-jdk

JDK 17 (LTS):

sudo apt install -y openjdk-17-jdk

JDK 11 (LTS):

sudo apt install -y openjdk-11-jdk

JDK 8 (Legacy LTS):

sudo apt install -y openjdk-8-jdk

Verify Installation

java -version
javac -version

Managing Multiple Java Versions

List Installed Versions

update-java-alternatives --list

Switch Java Version

sudo update-alternatives --config java

Select the desired version from the list.

Switch Java Compiler Version

sudo update-alternatives --config javac

Setting JAVA_HOME

Find Java Installation Path

update-alternatives --display java

Look for the path, typically: /usr/lib/jvm/java-17-openjdk-amd64

Set JAVA_HOME Permanently

Edit your bash profile:

nano ~/.bashrc

Add these lines:

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin

Apply changes:

source ~/.bashrc

Verify JAVA_HOME

echo $JAVA_HOME

Installing Oracle JDK

Manual Installation

  1. Download JDK from Oracle website

  2. Extract the archive:
    tar -xzf jdk-21_linux-x64_bin.tar.gz
    
  3. Move to installation directory:
    sudo mv jdk-21 /usr/lib/jvm/
    
  4. Configure alternatives:
    sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-21/bin/java 1
    sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-21/bin/javac 1
    

Installing Amazon Corretto

Add Repository

wget -O- https://apt.corretto.aws/corretto.key | sudo apt-key add -
sudo add-apt-repository 'deb https://apt.corretto.aws stable main'

Install Corretto

sudo apt update
sudo apt install -y java-21-amazon-corretto-jdk

Installing via SDKMAN

SDKMAN is a version manager for Java and other JVM languages.

Install SDKMAN

curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"

Install Java with SDKMAN

# List available versions
sdk list java

# Install specific version
sdk install java 21.0.1-open

# Use specific version
sdk use java 21.0.1-open

# Set default version
sdk default java 21.0.1-open

Verifying Installation

Check Java Version

java -version

Expected output:

openjdk version "21.0.1" 2023-10-17
OpenJDK Runtime Environment (build 21.0.1+12-Ubuntu-2)
OpenJDK 64-Bit Server VM (build 21.0.1+12-Ubuntu-2, mixed mode, sharing)

Check Compiler Version

javac -version

Test Java Installation

Create a test file:

nano HelloWorld.java

Add this code:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

Compile and run:

javac HelloWorld.java
java HelloWorld

IDE Setup

Installing IntelliJ IDEA

# Using snap
sudo snap install intellij-idea-community --classic

# Or download from JetBrains website

Installing Eclipse

sudo snap install eclipse --classic

Installing VS Code with Java

sudo snap install --classic code

# Install Java Extension Pack in VS Code
code --install-extension vscjava.vscode-java-pack

Common Tools

Maven

sudo apt install -y maven
mvn --version

Gradle

sudo apt install -y gradle
gradle --version

Or use Gradle Wrapper in projects:

./gradlew build

Environment Setup for Development

Complete Java Environment

Edit ~/.bashrc:

# Java
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin

# Maven
export M2_HOME=/usr/share/maven
export PATH=$PATH:$M2_HOME/bin

# Gradle
export GRADLE_HOME=/opt/gradle/gradle-8.5
export PATH=$PATH:$GRADLE_HOME/bin

Troubleshooting

Java Command Not Found

# Check if Java is installed
dpkg -l | grep -i jdk

# Reconfigure alternatives
sudo update-alternatives --config java

Wrong Java Version

# Check current version
java -version

# Switch version
sudo update-alternatives --config java

JAVA_HOME Not Set

# Find Java installation
dirname $(dirname $(readlink -f $(which java)))

# Set JAVA_HOME in ~/.bashrc
export JAVA_HOME=/path/to/java

Compiler Errors

Ensure javac points to correct version:

sudo update-alternatives --config javac

Uninstalling Java

Remove OpenJDK

sudo apt remove openjdk-17-jdk
sudo apt autoremove

Remove All Java Packages

sudo apt purge openjdk-*
sudo apt autoremove

Clean Up Manually Installed Versions

sudo rm -rf /usr/lib/jvm/jdk-*
sudo update-alternatives --remove java /usr/lib/jvm/jdk-*/bin/java

Version Comparison

Version Release Support Until Use Case
Java 8 2014 2030 (LTS) Legacy applications
Java 11 2018 2026 (LTS) Stable production
Java 17 2021 2029 (LTS) Current LTS
Java 21 2023 2031 (LTS) Latest LTS

Best Practices

  1. Use LTS versions for production (8, 11, 17, 21)
  2. Set JAVA_HOME properly in system-wide config
  3. Use version managers (SDKMAN) for multiple versions
  4. Keep updated with security patches
  5. Test compatibility before upgrading

Resources

Next Steps

  • Set up your preferred IDE (IntelliJ IDEA, Eclipse, VS Code)
  • Install build tools (Maven or Gradle)
  • Learn about Java modules (JPMS)
  • Explore Spring Boot for web applications