前言

本教程将向您展示如何在 RHEL 7 和 6,同样适用于基于 RHEL 的 CentOS 以及其他发行版。Java 是一种非常流行的软件平台,在 Web 应用领域有着非常不错的使用率和优势。

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

  1. OpenJDK
  2. Oracle Java

介绍

名称

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 叫,比如说 Java 8、Java 9 和最新出的 Java 10。同时也会对应硕士 1.8 1.9 这样的叫法。

变体

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

安装

OpenJDK

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

搜索 OpenJDK

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

RHEL/CentOS 上搜索 OpenJDK :

yum search java | grep openjdk
java-1.6.0-openjdk.x86_64
java-1.7.0-openjdk-headless.x86_64
java-1.8.0-openjdk-headless.x86_64

Fedora 上搜索 OpenJDK :

dnf search java | grep openjdk
java-1.6.0-openjdk.x86_64
java-1.7.0-openjdk-headless.x86_64
java-1.8.0-openjdk-headless.x86_64

安装 OpenJDK

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

安装 OpenJDK 6:

yum install java-1.6.0-openjdk-headless java-1.6.0-openjdk java-1.6.0-openjdk-devel

安装 OpenJDK 7:

yum install java-1.7.0-openjdk-headless java-1.7.0-openjdk java-1.7.0-openjdk-devel

安装 OpenJDK 8:

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

OpenJDK 也有提供 9、10 版本,但是发行版没有提供,可以到 OpenJDK 官网下载安装:

  1. http://jdk.java.net/10/
  2. http://jdk.java.net/9/

Oracle Java

我们将使用该 wget 命令下载 Oracle Java 软件包,以上面 OpenJDK 在 RHEL 软件源中没有提供的 9 和 10 版本为例吧。

安装 Oracle Java JRE

为了安装 Oracle Java JRE,我们需要到 Oracle Java 9 JRE 的下载页面,接受许可协议,并复制相应Linux .rpm软件包的下载链接,用复制的下载。

在 RHEL/CentOS 上安装 OpenJDK 和 Oracle JDK-米饭粑

Oracle Java 9 JRE 下载页面: http://www.oracle.com/technetwork/java/javase/downloads/jre9-downloads-3848532.html Oracle Java 10 JRE 下载页面: http://www.oracle.com/technetwork/java/javase/downloads/jre10-downloads-4417026.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" "http://download.oracle.com/otn-pub/java/jdk/10+46/76eac37278c24557a3c4199677f19b62/jre-10_linux-x64_bin.rpm"

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

yum install jre-10_linux-x64_bin.rpm

安装 Oracle Java JDK

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

Oracle Java 9 JDK 下载页面: http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html Oracle Java 10 JDK 下载页面: http://www.oracle.com/technetwork/java/javase/downloads/jdk10-downloads-4416644.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" "http://download.oracle.com/otn-pub/java/jdk/10+46/76eac37278c24557a3c4199677f19b62/jdk-10_linux-x64_bin.rpm"

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

yum install jdk-10_linux-x64_bin.rpm

设置

查看版本

安装成了如何检验呢?

java -version

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

[root@iZuf6acogi1y8zqlews9mmZ ~]# java -version
java version "10" 2018-03-20
Java(TM) SE Runtime Environment 18.3 (build 10+46)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10+46, mixed mode)

多版本选择

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

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

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

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre/bin/java)
*+ 2           /usr/java/jre-10/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"