Installing Java on Arch Linux

Cover Image for Installing Java on Arch Linux

So you want to install Java on your Arch Linux computer?

Great choice.

Java is an extremely versatile programming language used for everything from desktop applications to Android apps and large-scale web systems. Getting it set up properly can seem daunting, but I'll walk you through the process step-by-step.

Understanding Java Versions

Before we begin, it helps to understand the different Java versions available. Oracle releases major Java versions every few years - Java 8, Java 11, Java 17, etc. Each has new features and improvements.

For most desktop uses, the latest long-term support (LTS) version is recommended. As of 2024, that is Java 17. It will receive security updates from Oracle until 2029. However, some software may require an older Java version to function properly. Check the software documentation to see if a specific Java version is needed.

Checking for Existing Installations

Let's first check if you have Java already installed:

java -version

If this returns a Java version, you're all set! If not, you will get an error like "command not found" - meaning Java is not yet available on your system.

It's also worth ensuring no old Java packages are still around from previous installations:

pacman -Qs java

If any Java packages are listed, remove them before moving forward:

sudo pacman -Rs java-package-name

This will clean the slate for a fresh Java installation.

Installing OpenJDK 17

With no Java present, we can now install it properly. On Arch Linux, the recommended package is called jdk-openjdk. This contains Oracle's high-performance OpenJDK Java implementation.

Run this command to install OpenJDK 17:

sudo pacman -S jdk-openjdk

This will install the latest stable OpenJDK 17 package and all its dependencies.

Simple.

To confirm, check the version again:

java -version

You should see something like openjdk 17.0.2 2022-01-18. Perfect! Java 17 is ready to roll.

Setting the JAVA_HOME Environment Variable

While the Java installation works already, it's good practice to set the JAVA_HOME environment variable. This points your system to where Java is installed and assists Java-based applications to detect it properly.

First, find where Java is installed:

sudo archlinux-java get

Take note of the main JDK location, likely something like /usr/lib/jvm/java-17-openjdk.

Now open your ~/.bashrc file to configure JAVA_HOME:

nano ~/.bashrc

Add this line, using the location from the previous step:

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk

Save and close the file when finished editing. Finally, reload it:

source ~/.bashrc

JAVA_HOME now points to the Java installation location.

Testing the Java Install

With everything set up, test that Java works properly:

java -version
javac -version

You should see the Java 17 version output confirming both the runtime (java) and compiler (javac) are active.

Also, try running a simple Java program like HelloWorld:

javac HelloWorld.java
java HelloWorld

If you see the printed output Hello World! - congratulations! Java is installed and working perfectly.

Switching Between Java Versions

If you require multiple Java versions on one system, Arch makes this easy too. The archlinux-java the command can set the active Java version.

For example, to switch from the default Java 17 to an older Java 11:

sudo archlinux-java set java-11-openjdk

The output will confirm Java 11 is now active. Check with java -version to verify.

To revert back to Java 17 later on:

sudo archlinux-java set java-17-openjdk

You can switch Java versions on the fly like this as needed.

Keeping Java Up-to-Date

Like all software packages on Arch Linux, Java receives regular updates from the package repositories.

To update your system's Java packages when updates are available:

sudo pacman -Syu

This will refresh all packages, including an upgraded Java version if available.

Keeping Java updated ensures you get the latest security fixes and improvements from Oracle.

Controlling Java versions systemwide

For shared environments, like application servers or system-wide deployments, it's best to ensure the same Java version is used for all system users.

The recommended approach is to link the desired Java version as the default:

sudo archlinux-java set java-17-openjdk --force

This will ensure Java 17 is always invoked as the default system-wide.

Individual users can still change and manage their own Java environments locally using another version if required. However, shared services will always use the configured system default.

Potential Challenges

While the open-source OpenJDK Java implementation works very well, a few corner cases to be aware of:

  • Some Java Web Start applications may not function properly due to a lack of included JavaFX modules.

  • Rarely, an application might expect Oracle JDK-specific paths or environment settings.

  • Performance or compatibility differences between Oracle JDK and OpenJDK have largely been erased, but may still come into play for select application use cases.

Thankfully these issues are increasingly uncommon. But if you run into application startup problems, tools like jabba can help manage Oracle JDK installations as needed on Arch.

Also read - Converting JSON to CSV on Linux

Looking Ahead

Installing Java has become refreshingly straightforward on modern Arch Linux. Powerful tools like archlinux-java give you fine-grained control to configure multiple Java versions and defaults.

While early Java deployments were complex and error-prone, modern best practices like containers and immutable infrastructure have streamlined the developer experience. Arch provides a robust platform to build and deliver Java innovation from desktop to cloud.

So give Java on Arch Linux a try today - and let me know if you have any other questions.