This tutorial provides all the steps required to install OpenJDK 17 on the popular Linux distribution i.e. Ubuntu. It provides all the steps for Ubuntu 20.04 LTS (Focal Fossa). The steps should be the same for other versions of Ubuntu, and Linux.
You can also follow the steps to install How To Install VSCode For Java On Ubuntu, How To Install IntelliJ IDEA for Java on Ubuntu, and How To Install Eclipse For Java Development On Ubuntu published by Tutorials24x7. You may also follow the How To Install OpenJDK 17 On Windows to install the latest OpenJDK on Windows and How To Install Java 17 On Windows to install Oracle JDK.
Notes: New version of this tutorial is available at How To Install OpenJDK 18 On Ubuntu 20.04 LTS.
Download JDK
Open the JDK 17 GA Release site and download the distribution for Linux systems as highlighted in Fig 1.
Install JDK
Open the terminal and make the directory /usr/java/openjdk to keep all the java installations in the same place. We can install multiple versions of Java in this directory. Now copy the downloaded file to this location and extract it as shown below:
>sudo mkdir -p /usr/java/openjdk >cd /usr/java/openjdk >sudo cp /data/setups/openjdk-17_linux-x64_bin.tar.gz openjdk-17_linux-x64_bin.tar.gz >sudo tar -xzvf openjdk-17_linux-x64_bin.tar.gz
The above steps will install JDK to the path /usr/java/openjdk/jdk-17.
Set Environment Variables
In this step, we will configure the environment variable to use the JDK installed by us.
>sudo nano /etc/profile
Scroll down by pressing Page Down Button and add at the end of this file:
# OpenJDK 17 JAVA_HOME=/usr/java/openjdk/jdk-17 PATH=$PATH:$HOME/bin:$JAVA_HOME/bin export JAVA_HOME export PATH
Now press Ctrl + O and press Enter to write our change. Press Ctrl + X to exit the nano editor. The nano editor should be similar to Fig. 2.
Configure Java Commands
We can configure the Java commands to use the newly installed JDK by default. We can check the installed Java before and after executing these commands as shown below:
In case JDK is already installed on the system, it should show the existing JDK as shown below.
# Check version java -version
# Output java version "17" 2021-09-14 LTS Java(TM) SE Runtime Environment (build 17+35-LTS-2724) Java HotSpot(TM) 64-Bit Server VM (build 17+35-LTS-2724, mixed mode, sharing)
It shows that Oracle JDK 17 was installed on my system. In case JDK is not installed on your system, the messages should be similar as shown below.
# Check version java -version # Output Command 'java' not found, but can be installed with:
sudo apt install openjdk-11-jre-headless # version 11.0.8+10-0ubuntu1~20.04, or sudo apt install default-jre # version 2:1.11-72 sudo apt install openjdk-13-jre-headless # version 13.0.3+3-1ubuntu2 sudo apt install openjdk-14-jre-headless # version 14.0.1+7-1ubuntu1 sudo apt install openjdk-8-jre-headless # version 8u265-b01-0ubuntu2~20.04
If JDK is not installed on your system, use the below-mentioned commands to configure the java commands.
# Configure Java Alternatives sudo update-alternatives --install "/usr/bin/java" "java" "/usr/java/openjdk/jdk-17/bin/java" 1 # Configure Javac Alternatives sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/java/openjdk/jdk-17/bin/javac" 1 # Check version java -version
# Output openjdk version "17" 2021-09-14 OpenJDK Runtime Environment (build 17+35-2724) OpenJDK 64-Bit Server VM (build 17+35-2724, mixed mode, sharing)
In case JDK is already installed on your system, use the below-mentioned commands to install JDK 17 with existing JDKs.
# Configure Java sudo update-alternatives --config java
# Output There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status ------------------------------------------------------------ 0 /usr/java/oracle/jdk-17/bin/java 1 auto mode 1 /usr/java/oracle/jdk-16.0.1/bin/java 1 manual mode * 2 /usr/java/oracle/jdk-17/bin/java 1 manual mode
Press <enter> to keep the current choice[*], or type selection number:
# Configure Java Compiler sudo update-alternatives --config javac
# Output There are 2 choices for the alternative javac (providing /usr/bin/javac).
Selection Path Priority Status ------------------------------------------------------------ 0 /usr/java/oracle/jdk-17/bin/javac 1 auto mode 1 /usr/java/oracle/jdk-16.0.1/bin/javac 1 manual mode * 2 /usr/java/oracle/jdk-17/bin/javac 1 manual mode
Press <enter> to keep the current choice[*], or type selection number:
Now check the priority number. We can configure JDK 17 using priority 1 as shown below. You can choose priority based on your requirements.
# Configure Java Alternatives sudo update-alternatives --install "/usr/bin/java" "java" "/usr/java/openjdk/jdk-17/bin/java" 1 # Configure Java sudo update-alternatives --config java
# Output There are 3 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status ------------------------------------------------------------ 0 /usr/java/oracle/jdk-17/bin/java 1 auto mode 1 /usr/java/openjdk/jdk-17/bin/java 1 manual mode 2 /usr/java/oracle/jdk-16.0.1/bin/java 1 manual mode * 3 /usr/java/oracle/jdk-17/bin/java 1 manual mode
Press <enter> to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/java/openjdk/jdk-17/bin/java to provide /usr/bin/java (java) in manual mode
# Configure Javac Alternatives sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/java/openjdk/jdk-17/bin/javac" 1
# Configure Java Compiler sudo update-alternatives --config javac
# Output There are 3 choices for the alternative javac (providing /usr/bin/javac).
Selection Path Priority Status ------------------------------------------------------------ 0 /usr/java/oracle/jdk-17/bin/javac 1 auto mode 1 /usr/java/openjdk/jdk-17/bin/javac 1 manual mode 2 /usr/java/oracle/jdk-16.0.1/bin/javac 1 manual mode * 3 /usr/java/oracle/jdk-17/bin/javac 1 manual mode
Press <enter> to keep the current choice[*], or type selection number: 1 update-alternatives: using /usr/java/openjdk/jdk-17/bin/javac to provide /usr/bin/javac (javac) in manual mode
The output of these commands is shown in Fig 3 and Fig 4. We might need to configure active Java if it is previously installed on the system.
These are the basic steps required to install the most recent version of OpenJDK on Ubuntu 20.04 LTS.
Hello World
In this section, we will write our first program in Java using the nano editor.
>sudo mkdir -p /data/programs/java >cd /data/programs/java >sudo nano HelloWorld.java
Now write the first program in Java as shown below, save the program and exit the editor.
// Hello World public class HelloWorld { // The main method public static void main( String[] args ) { // Print Hello World System.out.println( "Hello World !!" ); } }
Use the javac and java to compile and execute the program as shown below.
// Compile the program sudo javac HelloWorld.java
// Execute the program sudo java HelloWorld
// Program output Hello Java !!
These are the basic steps to writing, compiling, and executing Java programs.
Summary
This tutorial provided all the steps to install OpenJDK 17 on Ubuntu 20.04 LTS and also provided the steps to configure it to use from the console. The last section explained the steps to write, compile, and execute the first Java program. You may submit your comments to join the discussion on installing OpenJDK 17 on Ubuntu and other Linux systems.