How to Install OpenJDK 11 on CentOS 8

Reading Time: 5 minutes

What is OpenJDK?

openjdk logo

OpenJDk or Open Java Development Kit is a free, open-source framework of the Java Platform, Standard Edition (or Java SE). It contains the virtual machine, the Java Class Library, and the Java compiler. The difference between the Oracle OpenJDK and Oracle JDK is that OpenJDK is a source code reference point for the open-source model. Simultaneously, the Oracle JDK is a continuation or advanced model of the OpenJDK, which is not open source and requires a license to use.

In this article, we will be installing OpenJDK on Centos 8.

Prerequisites

  • A Liquid Web core managed server running CentOS 8.
  • An account with root privileges
  • A root password set up on our system.
  • Access to a terminal window or an SSH command-line interface
[root@host2 ~]# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
[root@host2 ~]#

Install OpenJDK 11

First, we want to locate the available versions of OpenJDK listed in the CentOS 8 repository using the following command.

[root@host2 ~]# dnf search jdk
Last metadata expiration check: 0:02:37 ago on Fri Aug 21 15:09:18 2020.
========== Name & Summary Matched: jdk ==========
java-11-openjdk-demo.x86_64 : OpenJDK Demos 11
java-1.8.0-openjdk-demo.x86_64 : OpenJDK Demos 8
java-11-openjdk-jmods.x86_64 : JMods for OpenJDK 11
java-11-openjdk-src.x86_64 : OpenJDK Source Bundle 11
java-1.8.0-openjdk-src.x86_64 : OpenJDK Source Bundle 8
java-11-openjdk.x86_64 : OpenJDK Runtime Environment 11
copy-jdk-configs.noarch : JDKs configuration files copier
java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment 8
java-11-openjdk-javadoc.x86_64 : OpenJDK 11 API documentation
java-1.8.0-openjdk-javadoc.noarch : OpenJDK 8 API documentation
>>>java-11-openjdk-devel.x86_64 : OpenJDK Development Environment 11
java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment 8
java-11-openjdk-headless.x86_64 : OpenJDK Headless Runtime Environment 11
java-1.8.0-openjdk-accessibility.x86_64 : OpenJDK 8 accessibility connector
java-1.8.0-openjdk-headless.x86_64 : OpenJDK Headless Runtime Environment 8
java-11-openjdk-javadoc-zip.x86_64 : OpenJDK 11 API documentation compressed in single archive
java-1.8.0-openjdk-javadoc-zip.noarch : OpenJDK 8 API documentation compressed in single archive
========== Summary Matched: jdk ==========
jmc-core.noarch : Core API for JDK Mission Control
jmc.x86_64 : JDK Mission Control is a profiling and diagnostics tool
icedtea-web.noarch : Additional Java components for OpenJDK - Java browser plug-in and Web Start implementation
[root@host2 ~]#  
Note:
While we can run Java apps directly using the JRE, our apps will have to be compiled each time they are executed, which tends to be slower than running apps that have already been compiled. This would not be desirable if we plan to execute apps multiple times.

As you can see above, the version we want to install is:
java-11-openjdk-devel.x86_64 : OpenJDK Development Environment 11

To install this version, run the following command.

[root@host2 ~]# dnf install java-11-openjdk-devel.x86_64
Last metadata expiration check: 0:09:28 ago on Fri Aug 21 15:19:11 2020.
Dependencies resolved.
========================================================================
 Package Architecture Version Repository Size
========================================================================
Installing:
 Java-11-openjdk-devel x86_64 1:11.0.8.10-0.el8_2 system-AppStream 3.4 M

Installing dependencies:
…
…
…
...
Enabling module streams:
 javapackages-runtime 201801

Transaction Summary
========================================================================
Install 63 Packages

Total download size: 68 M
Installed size: 246 M
Is this ok [y/N]:   
Downloading Packages:
(1/63): cups-libs-2.2.6-33.el8.x86_64.rpm 15 MB/s | 432 kB 00:00
(2/63): glib-networking-2.56.1-1.1.el8.x86_64.rpm 9.9 MB/s | 155 kB 00:00
(3/63): gdk-pixbuf2-2.36.12-5.el8.x86_64.rpm 8.9 MB/s | 467 kB 00:00
…
…
…
------------------------------------------------------------------------------------------------------------------------
Total 73 MB/s | 68 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Running scriptlet: copy-jdk-configs-3.7-1.el8.noarch 1/1
  Running scriptlet: java-11-openjdk-headless-1:11.0.8.10-0.el8_2.x86_64 1/1
…
…
…
Verifying : tzdata-java-2020a-1.el8.noarch 61/63
Verifying : xorg-x11-font-utils-1:7.5-40.el8.x86_64 62/63
Verifying : xorg-x11-fonts-Type1-7.5-19.el8.noarch 63/63
Installed:
java-11-openjdk-1:11.0.8.10-0.el8_2.x86_64 java-11-openjdk-devel-1:11.0.8.10-0.el8_2.x86_64
java-11-openjdk-headless-1:11.0.8.10-0.el8_2.x86_64 javapackages-filesystem-5.3.0-1.module_el8.0.0+11+5b8c10bd.noarch

Complete!
[root@host2 ~]#

Verify Installation

Once the installation is completed, you can verify the installed Java version by running the following command.

[root@host2 ~]# java -version
openjdk version "11.0.8" 2020-07-14 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.8+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.8+10-LTS, mixed mode, sharing)
[root@host2 ~]# 

Since we have chosen the full installation of the OpenJDK development kit, we can check the compiler version as well.

[root@host2 ~]# javac -version
javac 11.0.8
[root@host2 ~]#

Install OpenJDK 8

Some Java apps only run on OpenJDK 8. If this is the case, we need to install OpenJDK 8. We can install OpenJDK 8 using the following command.

[root@host2 ~]# dnf install java-1.8.0-openjdk-devel.x86_64

Verify Installation

After installing this version of Java, we can check the version using the following command.

[root@host2 ~]# java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b09)
OpenJDK 64-Bit Server VM (build 25.242-b09, mixed mode)
[root@host2 ~]#

Set Java Environment Variables

Now, we need to set the environmental variables for the new Java installations. This allows us to add both the JAVA_HOME and PATH settings, which will ensure that our Java applications can run without issue.

cat > /etc/profile.d/java11.sh <<EOF
export JAVA_HOME=\$(dirname \$(dirname \$(readlink \$(readlink \$(which javac)))))
export PATH=\$PATH:\$JAVA_HOME/bin
export CLASSPATH=.:\$JAVA_HOME/jre/lib:\$JAVA_HOME/lib:\$JAVA_HOME/lib/tools.jar
EOF

Next, we will source the file to begin using it without having to log out and log back in.

[root@host2 ~]# source /etc/profile.d/java11.sh

To confirm the changes, run the following commands.

[root@host2 ~]# echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk-11.0.8.10-0.el8_2.x86_64

[root@host2 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el8_2.x86_64/bin:/usr/lib/jvm/java-11-openjdk-11.0.8.10-0.el8_2.x86_64/bin:/bin

If after installing both versions of Java by some chance show the following variables:

[root@host2 ~]# echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el8_2.x86_64

[root@host2 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el8_2.x86_64/bin

and we wish to change the JAVA_HOME and PATH variables back to Java 11, run the following commands.

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.8.10-0.el8_2.x86_64
export PATH=$PATH:$JRE_HOME/bin

We can also view the following folder location to see the full view of all the Java installations.

[root@host2 ~]# ll /usr/lib/jvm/
total 8
lrwxrwxrwx 1 root root 26 Aug 21 17:23 java -> /etc/alternatives/java_sdk
lrwxrwxrwx 1 root root 32 Aug 21 16:06 java-1.8.0 -> /etc/alternatives/java_sdk_1.8.0
lrwxrwxrwx 1 root root 40 Aug 21 16:06 java-1.8.0-openjdk -> /etc/alternatives/java_sdk_1.8.0_openjdk
drwxr-xr-x 7 root root 4096 Aug 21 16:06 java-1.8.0-openjdk-1.8.0.262.b10-0.el8_2.x86_64
lrwxrwxrwx 1 root root 29 Aug 21 15:49 java-11 -> /etc/alternatives/java_sdk_11
lrwxrwxrwx 1 root root 37 Aug 21 15:49 java-11-openjdk -> /etc/alternatives/java_sdk_11_openjdk
drwxr-xr-x 7 root root 4096 Aug 21 15:49 java-11-openjdk-11.0.8.10-0.el8_2.x86_64
lrwxrwxrwx 1 root root 34 Aug 21 16:06 java-openjdk -> /etc/alternatives/java_sdk_openjdk
lrwxrwxrwx 1 root root 21 Aug 21 18:04 jre -> /etc/alternatives/jre
lrwxrwxrwx 1 root root 27 Aug 21 16:06 jre-1.8.0 -> /etc/alternatives/jre_1.8.0
lrwxrwxrwx 1 root root 35 Aug 21 16:06 jre-1.8.0-openjdk -> /etc/alternatives/jre_1.8.0_openjdk
lrwxrwxrwx 1 root root 51 Jul 16 11:10 jre-1.8.0-openjdk-1.8.0.262.b10-0.el8_2.x86_64 -> java-1.8.0-openjdk-1.8.0.262.b10-0.el8_2.x86_64/jre
lrwxrwxrwx 1 root root 24 Aug 21 15:49 jre-11 -> /etc/alternatives/jre_11
lrwxrwxrwx 1 root root 32 Aug 21 15:49 jre-11-openjdk -> /etc/alternatives/jre_11_openjdk
lrwxrwxrwx 1 root root 40 Jul 16 11:06 jre-11-openjdk-11.0.8.10-0.el8_2.x86_64 -> java-11-openjdk-11.0.8.10-0.el8_2.x86_64
lrwxrwxrwx 1 root root 29 Aug 21 16:06 jre-openjdk -> /etc/alternatives/jre_openjdk
[root@host2 ~]# 

Change Java Versions

If we have several versions of Java installed, we can select an alternative if need be. To change versions, run the following command. 

[root@host2 ~]# alternatives --config java

There are 2 programs which provide 'java'.

  Selection Command
-----------------------------------------------
 + 1 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.8.10-0.el8_2.x86_64/bin/java)
* 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el8_2.x86_64/jre/bin/java)

Enter to keep the current selection[+], or type selection number: 1
[root@host2 ~]#   

In this case, we selected number 1, to keep the java-11-openjdk.x86_64 version. 

Conclusion

We pride ourselves on being The Most Helpful Humans In Hosting™!

Our talented Support Teams are full of experienced Linux technicians and System administrators who have years of experience in web hosting technologies, especially those discussed in this article. We are always available to assist with any issues related to this article, 24 hours a day, 7 days a week 365 days a year.

If you are a Fully Managed VPS server, Cloud Dedicated, VMWare Private Cloud, Private Parent server or a Dedicated server owner and you are uncomfortable with performing any of the steps outlined, we can be reached via phone @800.580.4985, a chat or support ticket to assisting you with this process.

How to Install and Configure Gradle

Reading Time: 3 minutes

What is Gradle?

Gradle is a high-performance open-source build automation tool that makes it possible to build just about any type of software. It is highly configurable and extensible via a well-developed plugin ecosystem. Because build automation is an integral part of the consistent delivery of software projects, Gradle integrates seamlessly with multiple IDE’s, including Android Studio. This tutorial covers the manual installation of Gradle on Linux, MacOS, and Windows.

Continue reading “How to Install and Configure Gradle”

How to Install Jitsi Meet on Ubuntu 18

Reading Time: 9 minutes

What is Jitsi?

Jitsi is a set of open-source projects that allow you to create a secure video conferencing system for your team. It has features such as superior sound quality, excellent encryption and privacy, multi-platform and much more. The Jitsi client can work both in the application and in the web browser. You can broadcast your desktop as well as individual windows, and invite users using URL-link. We will be installing Jitsi on Ubuntu 18.04 server. We will install additional components such as Java’s OpenJdk, Nginx to correctly install, configure and use it. Let’s talk a bit about the components.

Continue reading “How to Install Jitsi Meet on Ubuntu 18”

How to Install Wildfly on CentOS 8

Reading Time: 4 minutes

What is Wildfly?

WildFly is a Java runtime application server and software management platform implemented in Java. It is primarily used to provision Java applications and services on a Java-based platform. It is currently developed by Red Hat as open-source software (apart from the community forums) and was better-known as JBoss AS previously. While the WildFly software remains open-source, paid support can be purchased from RedHat if needed. RedHat continues to implement a separate version of this software under the JBoss EAP name.

Continue reading “How to Install Wildfly on CentOS 8”

How to Install Java on Ubuntu, Windows, and MacOS

Reading Time: 6 minutes

What is Java?

Java is considered one of the most popular programming languages. Java is a typed object-oriented programming language developed by Sun Microsystems (and subsequently acquired by Oracle). Development is mainly performed by a community organized through the Java Community Process. The language and the main technologies that implements it are distributed under the GPL but the trademark rights are owned by Oracle Corporation. Code written in Java (using the JVM – Java Virtual Machine) is transformed into bytecode and due to this, programs can run on any system where the JVM is installed. Therefore, Java is often called a cross-platform language. Most often, Java is used to develop backend programs and android applications.

Continue reading “How to Install Java on Ubuntu, Windows, and MacOS”

How To Install WildFly On CentOS 7

Reading Time: 5 minutes

Introduction

In this tutorial, our objective is to install WildFly on an unmanaged CentOS 7 server. WildFly is a managed application runtime server and Java software platform used to provision Java applications and services. It is an open-source software which is consistently being improved by its user community. While the WildFly software remains open-source, if paid support is needed, it is provided by Red Hat who currently develops the software (apart from the community forums). Some may be more familiar with WildFly’s previous name, which was JBoss AS. RedHat continues to develop its version of this software under the JBoss EAP name.

Continue reading “How To Install WildFly On CentOS 7”

How to Install Tomcat 9 on CentOS 8

Reading Time: 8 minutes

What is Tomcat?

In this article, we will be demonstrating how to install Apache Tomcat on CentOS 8. Before we begin, let’s define exactly what Apache Tomcat is. Apache defines Tomcat as: “An open-source, servlet container, JavaServer Pages, Java Expression Language, and WebSocket technology that also acts as a web server. It affords a “pure Java” based HTTP server environment in which Java can be executed.” Tomcat works with the Java programming language and is associated with web applications written in Java.

Continue reading “How to Install Tomcat 9 on CentOS 8”