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.

Docker For Beginners

Reading Time: 16 minutes

What is Docker?

31920.docker

Docker is a containerization software that is used for automating the deployment and management of applications within an isolated environment. This software allows us to “pack” and ship an application, along with all of its needed files, libraries, and dependencies, into a “docker container“. That container can then be easily ported to any Linux system that contain cgroups support within the kernel, and provides a container management environment. Docker is one of several containerization implementations (not to be confused with virtualization) based on this cgroups mechanisms built into the Linux kernel.

Continue reading “Docker For Beginners”

How to Install PHP Extensions on CentOS 8

Reading Time: 3 minutes

This tutorial covers the installation of the PHP extension phpredis via the default CentOS 8 package manager DNF. It will also cover the installation of both PHP 7.4 and Redis on CentOS 8.

PECL, the PHP Extension Community Library, is a repository of C extensions that are loaded directly into PHP. PHP Extensions expand the functionality of PHP. PECL extensions can be installed via the use of the pecl command. There are also PHP extensions provided by package repositories. The decision of which to utilize typically depends on how PHP was installed.

Continue reading “How to Install PHP Extensions on CentOS 8”

How to Install NVM for Node.js on CentOS 8

Reading Time: 3 minutes

Node Version Manager, also known as NVM is used to control and manage multiple active versions of Node.js in one system. It is a command line utility and a bash script that allows programmers to shift between different versions of Node.js. They will be able to install any version using a single command and setting defaults using the command line utility.

Continue reading “How to Install NVM for Node.js on CentOS 8”

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 Grafana on CentOS 8

Reading Time: 5 minutes

What is Grafana?

This article is a step-by-step guide on how to install Grafana software on CentOS 8 server. Grafana is a popular open-source visualization and analytics monitoring software. It renders graphs, charts, and alerts when connected to supported data sources. It is commonly used with time series databases like Prometheus, SQL databases like MySQL logging, and document databases like Loki, etc. You can additionally install hundreds of plugins and dashboards from the official library. 

More

How To Install PyCharm on CentOS 7 and 8

Reading Time: 3 minutes

What is PyCharm?

PyCharm is an IDE (or Integrated Development Environment) for the Python programming language. It is a cross-platform development environment that is compatible with Windows, macOS, and Linux. It provides a tool that integrates code analysis, graphical debugging, unit testing, and also contains an integrated terminal that supports development on remote hosts and virtual machines.

Continue reading “How To Install PyCharm on CentOS 7 and 8”

How to Install Docker on CentOS 8

Reading Time: 6 minutes

What is Docker?

Before we begin, let’s describe what Docker is. Docker is a set of virtualization tools that allows us to create, test, and deploy containerized applications quickly and easily on a dedicated server. It has become very popular and used almost everywhere in our daily lives. Thanks to containerization, we can quickly launch applications on different private cloud host platforms utilizing small bundles which contain all the needed packages, libraries and configuration file to run an application. These docker packages communicate via established network channels.

Docker Silhouette
Docker Silhouette
Continue reading “How to Install Docker on CentOS 8”

How to Install Python on CentOS 8

Reading Time: 3 minutes
python logo

In this tutorial, we will consider how to enable both Python 2 and Python 3 for use on CentOS 8. In earlier distributions of CentOS, an unversioned Python command was available by default. 

When the CentOS installation was complete, it was possible to drop into a Python shell by simply running the “python” command in a terminal.

Paradoxically, CentOS 8 does not have an unversioned Python command by default.  This begs the question, why? RedHat states that this choice is by design “to avoid locking users into a specific version of Python.” Currently, RedHat 8 utilizes Python 3.6 implicitly by default, although Python 2.7 is additionally provided to maintain existing software.

Continue reading “How to Install Python on CentOS 8”

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”