在 RHEL8/CentOS8 上安装 OpenJDK/Oracle JDK 1.8、11
本文最后更新于 1758 天前,其中的信息可能已经有所发展或是发生改变。

前言

本教程将向您展示如何在 RHEL 8、CentOS8、OracleLinux 上安装 Java,适用于其他基于 RHEL 的发行版。Java 是一种非常流行的软件平台,在 Web 应用领域有着非常不错的使用率和优势。

教程将涵盖以下Java版本的安装:

  1. OpenJDK
  2. Oracle Java

RHEL、CentOS、OracleLinux 6 和 7的 安装教程请看:《在 RHEL/CentOS 6 7 上安装 OpenJDK 和 Oracle JDK》

介绍

名称

Java 其实是一个很尴尬的一个词了,比如说一个软件说我需要安装 Java 1.7 的环境,结果你好不容易从国内搜索引擎中搜索 Java 绕开了一堆下载站找到 Oracle 的 Java 官方后,结果又有什么 JAVA SE、EE、ME、JDK、JRE 啥的。然后找到了 JDK 又发现是 7 8 9 命名的,那么 1.7 是什么鬼?

JRE: Java Runtime Environment
JDK: Java Development Kit

JRE 是 Java 运行时环境,包含了 Java 虚拟机,Java 基础类库。是使用 Java 语言编写的程序运行所需要的软件环境,是提供给想运行 Java 程序的用户使用的。

JDK 是 java 开发工具包,是程序员使用java语言编写j Java 程序所需的开发工具包,是提供给程序员使用的。JDK 包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具:Jconsole,Jvisualvm 等工具软件,还包含了 Java 程序编写所需的文档和 Demo 例子程序。

而 Java 又有三种平台,标准版(SE),企业版(EE)和微型版(ME)。当然了 JavaEE 现在已经被 Eclipse 基金会接管改名 Jakarta EE 了。

这三个平台的主要区别就在于基础类库的不同,也正是因为这些基础库的不同,导致他们的针对性不同。

Jakarta EE 是其中类库最多的,针对服务器、Web应用等大型程序。
Java SE 包含最普遍的类库,针对的是普通 Java 程序。
Java ME 进行了进一步缩减,减少了整个环境的占用空间,针对性能不高的嵌入式环境。

一般来说在云服务器中要运行 Java 环境我们 安装 JDK 即可。

版本

早期 Java SE 还叫 JDK 的时代以 1.X 命名,从 1.0 到 1.4 版本。5.0 开始主版本号开始了一次跃升,但是大家依旧吧习惯 1.5 一直到 1.8 都有 Java 8 和 Java 1.8 混着叫的习惯,到了 Java 9 开始变不再 1.X 了。

截至发文 Java 的长期支持版是 8 和 11,11版本的免费长期支持需要使用 OpenJDK。

变体

Java还有两种不同的实现:OpenJDK 和 Oracle Java。这两种实现都基于相同的代码,但 OpenJDK 完全是开源的,而 Oracle Java包含一些专有代码。大多数 Java 应用程序都可以在两者之间正常工作,具体以软件的运行环境说明为准。

安装

OpenJDK

尽管目前 OpenJDK 已经推出到了 10 系列,但是主流的发行版可能还没有支持,很多发行版可能才只是刚刚支持到 9。

搜索 OpenJDK

我们可以用不同发行版的包管理工具来搜索一下发行版支持的 OpenJDK 版本:

搜索 OpenJDK :

yum search java | grep openjdk
java-11-openjdk.x86_64 : OpenJDK Runtime Environment 11
java-11-openjdk.x86_64 : OpenJDK Runtime Environment 11
java-11-openjdk-src.x86_64 : OpenJDK Source Bundle 11
java-11-openjdk-demo.x86_64 : OpenJDK Demos 11
java-11-openjdk-devel.x86_64 : OpenJDK Development Environment 11
java-11-openjdk-jmods.x86_64 : JMods for OpenJDK 11
java-11-openjdk-devel.x86_64 : OpenJDK Development Environment 11
java-11-openjdk-javadoc.x86_64 : OpenJDK 11 API documentation
java-11-openjdk-headless.x86_64 : OpenJDK Headless Runtime Environment 11
java-11-openjdk-headless.x86_64 : OpenJDK Headless Runtime Environment 11
java-11-openjdk-javadoc-zip.x86_64 : OpenJDK 11 API documentation compressed in
java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment 8
java-1.8.0-openjdk-src.x86_64 : OpenJDK Source Bundle 8
java-1.8.0-openjdk-demo.x86_64 : OpenJDK Demos 8
java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment 8
java-1.8.0-openjdk-javadoc.noarch : OpenJDK 8 API documentation
java-1.8.0-openjdk-headless.x86_64 : OpenJDK Headless Runtime Environment 8
java-1.8.0-openjdk-javadoc-zip.noarch : OpenJDK 8 API documentation compressed
java-1.8.0-openjdk-accessibility.x86_64 : OpenJDK 8 accessibility connector

安装 OpenJDK

知道我们的发行版的软件源中支持的发行版版本后,我们选择一个版本进行安装。

安装 OpenJDK 8:

yum install java-1.8.0-openjdk-headless java-1.8.0-openjdk java-1.8.0-openjdk-devel

安装 OpenJDK 11:

yum install java-11-openjdk-headless java-11-openjdk java-11-openjdk-devel

Oracle Java

Oracle Java 仅提供初始几个版本的免费支持,后续的维护支持需要续费,因此 JDK 11 开始如果没有太多的企业特性,推荐使用OpenJDK。

我们将使用 wget 命令下载 Oracle Java 软件包

安装 Oracle Java JDK

需要到 Oracle Java JDK 的下载页面,接受许可协议,并复制相 应Linux .rpm 软件包的下载链接,用复制的下载。

Oracle Java 11 JDK 下载页面: https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html
Oracle Java 12 JDK 下载页面: https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html

然后下载:

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://下载地址"

例如:

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "https://download.oracle.com/otn/java/jdk/11.0.3+12/37f5e150db5247ab9333b11c1dddcd30/jdk-11.0.3_linux-x64_bin.rpm"

进行安装,注意最后的文件名:

rpm -ivh jdk-11.0.3_linux-x64_bin.rpm

设置

查看版本

安装成了如何检验呢?

java -version

输入上述命令就会反馈结果了:

[root@mf8.biz ~]# java -version
openjdk version "11.0.2" 2019-01-15 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.2+7-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+7-LTS, mixed mode, sharing)

多版本选择

如果我们安装了多个 JAVA,例如 OpenJDK 也有,Oracle JDK 也有,那么咋办呢?

通过 alternatives 命令,可以用来选择默认的Java命令。

[root@iZuf6acogi1y8zqlews9mmZ ~]# 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.2.7-2.el8.x86_64/bin/java)
*+ 2           /usr/java/jdk-12.0.1/bin/java
   3           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-1.el8_0.x86_64/jre/bin/java)

Enter to keep the current selection[+], or type selection number: 

带星号的就是选中的默认版本,输入数字可以调整不同的版本。

使用环境变量

许多Java应用程序使用 JAVA_HOMEJRE_HOME 环境变量来确定 Java 要使用哪个可执行文件。

例如,如果安装了 Java /usr/java/jdk1.8.0_161/jre/bin(即可 Java 执行文件位于/usr/java/jdk1.8.0_161/jre/bin/java),则可以将JAVA_HOME环境变量设置为 bash shell 或脚本,如下所示:

export JAVA_HOME=/usr/java/jdk1.8.0_161/jre

如果想要以 JAVA_HOME 认为系统中的每个用户设置,请将上一行添加到 /etc/environment 文件中。将其附加到文件的简单方法是运行此命令:

sh -c "echo export JAVA_HOME=/usr/java/jdk1.8.0_161/jre >> /etc/environment"

检验

一、 写个 Hello World

$ cat > HelloWorld.java <<HELLO
public class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello World!");
  }
}
HELLO

二、跑一下即可

[root@www.mf8.biz ~]# java HelloWorld.java
Hello World!

三、多版本可以通过上面 多版本选择 进行设置,也可以直接指定 java 的二进制文件。

[root@www.mf8.biz ~]# /usr/lib/jvm/java-11-openjdk/bin/java HelloWorld.java
Hello World!
上一篇
下一篇