How to Install Java on Debian

Install Java on Debian

Installing Java on your Debian system doesn’t have to be complicated. Whether you’re a developer building the next big application or a system administrator setting up servers, this comprehensive guide will walk you through every method to get Java running on your Debian machine.

With over 9 million Java developers worldwide and Java powering everything from enterprise applications to Android apps, having a proper Java installation is crucial for modern computing. Let’s dive into the various ways you can install Java on Debian, from the simplest one-command installation to more advanced setups.

Understanding Java: JRE vs JDK and OpenJDK vs Oracle JDK

Before we jump into the installation process, let’s clear up some confusion about Java components and versions. Think of it like building a house – you need different tools for different jobs.

What is JRE (Java Runtime Environment)?

The JRE is like having a fully furnished apartment. It contains everything you need to run Java applications, but you can’t build new ones. It includes the Java Virtual Machine (JVM), core libraries, and supporting files. If you’re just planning to run Java programs (like Minecraft or Eclipse), the JRE is sufficient.

What is JDK (Java Development Kit)?

The JDK is the complete toolkit – imagine having not just the furnished apartment, but also all the construction tools. It includes the JRE plus additional tools like the Java compiler (javac), debugger, and documentation. If you’re developing Java applications, you need the JDK.

OpenJDK vs Oracle JDK: Which Should You Choose?

Here’s where it gets interesting. Both OpenJDK and Oracle JDK are functionally identical since Java 11, as confirmed by Oracle themselves. The main differences are:

  • OpenJDK: Open-source, free, comes with Debian by default
  • Oracle JDK: Commercial license, official Oracle support, identical functionality

For most users, OpenJDK is the recommended choice because it’s freely available and perfectly compatible with all Java applications.

Prerequisites for Installing Java on Debian

System Requirements

Before installing Java, ensure your Debian system meets these requirements:

  • Debian 11, 12, or 13 (Bullseye,Bookworm, or Trixie)
  • At least 128 MB RAM (though 512 MB is recommended)
  • 200-300 MB free disk space
  • sudo privileges or root access

Checking Current Java Installation

First, let’s see if Java is already installed on your system. Open your terminal and run:

java -version

If you see something like bash: java: command not found, congratulations – you’re starting fresh! If Java is already installed, you’ll see version information that looks like this:

openjdk version "11.0.16" 2022-07-19
OpenJDK Runtime Environment (build 11.0.16+8-post-Debian-1deb11u1)

Method 1: Installing Java Using APT Package Manager

This is the easiest and most recommended method for most users. The APT package manager handles dependencies automatically and keeps your Java installation updated with system updates.

Installing Default OpenJDK

Let’s start with the simplest approach. First, update your package repository:

sudo apt update && sudo apt upgrade

This ensures you’re getting the latest package information. Now, install the default JDK:

sudo apt install default-jdk

This command installs OpenJDK 11 on Debian 11, which is the current Long Term Support (LTS) version. The installation typically takes 2-3 minutes and downloads about 200 MB of packages.

If you only need to run Java applications (not develop them), you can install just the JRE:

sudo apt install default-jre

Installing Specific Java Versions

Sometimes you need a specific Java version for compatibility reasons. Here’s how to install different versions:

Installing Java 11 (LTS)

Java 11 is widely used in enterprise environments:

sudo apt install openjdk-11-jdk

Installing Java 17 (LTS)

Java 17 offers improved performance and new features:

sudo apt install openjdk-17-jdk

Installing Java 21 (Latest LTS)

For the latest features and performance improvements:

sudo apt install openjdk-21-jdk

Note: Debian 12 repositories may not always have the very latest Java versions immediately available. If you need cutting-edge versions, consider Method 2 below.

Method 2: Installing Oracle JDK via DEB Package

If you specifically need Oracle JDK (perhaps for commercial applications or specific compatibility requirements), you can download and install it directly from Oracle.

Downloading Oracle JDK

First, download the latest Oracle JDK package. For Java 21:

wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.deb

This downloads the official Oracle JDK 21 package (approximately 160 MB).

Installing the DEB Package

Once downloaded, install it using:

sudo apt install ./jdk-21_linux-x64_bin.deb

The ./ prefix tells APT to install from the local file rather than searching repositories. After installation, clean up:

rm jdk-21_linux-x64_bin.deb

Method 3: Manual Installation Using TAR.GZ Archive

While not commonly needed, manual installation gives you complete control over where Java is installed and how it’s configured.

When to Use Manual Installation

Consider manual installation when:

  • You need multiple Java versions simultaneously
  • You’re in a restricted environment without package manager access
  • You want Java in a specific directory location
  • You’re setting up a custom application server

Step-by-Step Manual Installation

Download the tar.gz archive from Oracle:

wget https://download.oracle.com/java/21/archive/jdk-21.0.2_linux-x64_bin.tar.gz

Create a directory for Java installations:

sudo mkdir -p /usr/lib/jvm

Extract the archive:

sudo tar zxvf jdk-21.0.2_linux-x64_bin.tar.gz -C /usr/lib/jvm

The Java files are now installed in /usr/lib/jvm/jdk-21.0.2/.

Managing Multiple Java Versions

Real-world development often requires juggling different Java versions. Fortunately, Debian provides excellent tools for this.

Using update-alternatives Command

The update-alternatives system lets you manage multiple versions elegantly. First, register your Java installation:

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk-21.0.2/bin/java" 1

Switching Between Java Versions

To switch between installed Java versions:

sudo update-alternatives --config java

You’ll see a menu like this:

Selection    Path                           Priority   Status
* 0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      manual mode
  2            /usr/lib/jvm/jdk-21.0.2/bin/java             1         manual mode

Simply enter the number corresponding to your preferred version. This is incredibly useful when working on projects that require different Java versions.

Setting Up JAVA_HOME Environment Variable

Why JAVA_HOME is Important

Many Java applications and build tools (like Maven, Gradle, and Tomcat) rely on the JAVA_HOME environment variable to locate your Java installation. Without it, you might encounter cryptic errors.

Setting JAVA_HOME Permanently

First, find your Java installation path:

readlink -f $(which java)

This might return something like /usr/lib/jvm/java-11-openjdk-amd64/bin/java. The JAVA_HOME should be the parent directory (without /bin/java).

Add JAVA_HOME to your profile. Edit ~/.bashrc:

echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc

Reload your profile:

source ~/.bashrc

Verify it’s set correctly:

echo $JAVA_HOME

Verification and Troubleshooting

Verifying Java Installation

After installation, always verify everything is working:

java -version
javac -version
echo $JAVA_HOME

You should see version information for both the runtime and compiler, plus your JAVA_HOME path.

Common Issues and Solutions

Problem: java: command not found after installation
Solution: Your PATH might not include Java. Try logging out and back in, or run source ~/.bashrc.

Problem: Wrong Java version being used
Solution: Use update-alternatives --config java to switch versions.

Problem: JAVA_HOME not set
Solution: Add the export statement to your shell profile and reload it.

Problem: Permission denied errors
Solution: Ensure you’re using sudo for system-wide installations.

Best Practices for Java on Debian

  1. Stick with LTS versions (11, 17, 21) for production environments
  2. Use APT when possible – it handles updates automatically
  3. Set JAVA_HOME properly – many tools depend on it
  4. Keep only needed versions – multiple JDKs consume disk space
  5. Regular updates – run sudo apt update && sudo apt upgrade monthly
  6. Document your choice – note which Java version your applications require

For development machines, having Java 11 and Java 17 installed covers most compatibility needs, while Java 21 gives you access to the latest features.

Frequently Asked Questions (FAQs)

Q: What’s the difference between OpenJDK and Oracle JDK?
A: Since Java 11, OpenJDK and Oracle JDK are functionally identical. OpenJDK is open-source and free, while Oracle JDK comes with commercial support. For most users, OpenJDK is the better choice.

Q: Which Java version should I install for development?
A: Java 21 is the latest LTS version and recommended for new projects. However, if you’re working with legacy applications, you might need Java 11 or 17 for compatibility.

Q: Can I have multiple Java versions installed simultaneously?
A: Yes! Debian’s update-alternatives system makes it easy to manage multiple Java versions and switch between them as needed.

Q: Do I need JDK if I’m only running Java applications?
A: No, the JRE is sufficient for running Java applications. Only install the JDK if you plan to develop Java programs or use development tools.

Q: How do I know if Java is properly installed?
A: Run java -version and javac -version in your terminal. Both should return version information without errors. Also verify that echo $JAVA_HOME shows the correct path.

Marshall Anthony is a professional Linux DevOps writer with a passion for technology and innovation. With over 8 years of experience in the industry, he has become a go-to expert for anyone looking to learn more about Linux.

Related Posts