1. 概述

在本文中,我们将介绍 在 Ubuntu 系统上安装 JDK 的多种方式,并对这些方式进行简要对比。最后,我们会展示如何在 Ubuntu 系统中管理多个 Java 版本。

✅ 安装前提

  • 一台运行 Ubuntu 的系统
  • 使用具有 sudo 权限的非 root 用户登录

本文中的所有命令和步骤均已在 Ubuntu 18.10、18.04 LTS、16.04 LTS 和 14.04 LTS 上测试通过。对于 Ubuntu 14.04 LTS,文中会特别指出一些差异。

⚠️ 需要注意的是,无论是从 OpenJDK 还是 Oracle 下载的 JDK 包,或者通过仓库安装的包,都会定期更新。包名可能在几个月后发生变化,但安装方式的核心逻辑保持一致。


2. 安装 JDK 11

如果你希望使用最新的 JDK 版本,通常推荐手动安装。这意味着你需要从 OpenJDK 或 Oracle 官网下载安装包,并手动配置,使其符合 apt 包管理器的规范。

2.1. 手动安装 OpenJDK 11

首先,下载 OpenJDK 11 的 tar.gz 包:

$ wget https://download.java.net/java/ga/jdk11/openjdk-11_linux-x64_bin.tar.gz

接着,校验下载包的 sha256 值,与 OpenJDK 官网提供的值 对比:

$ sha256sum openjdk-11_linux-x64_bin.tar.gz

解压安装包:

$ tar xzvf openjdk-11_linux-x64_bin.tar.gz

将解压后的 jdk-11 目录移动到 /usr/lib/jvm 下(这是 apt 安装 JDK 时的默认路径):

$ sudo mkdir /usr/lib/jvm
$ sudo mv jdk-11 /usr/lib/jvm/openjdk-11-manual-installation/

接下来,为了让 javajavac 命令可用,我们使用 update-alternatives 注册它们:

$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/openjdk-11-manual-installation/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/openjdk-11-manual-installation/bin/javac 1

验证安装:

$ java -version

输出如下:

openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)

再检查一下编译器版本:

$ javac -version

输出:

javac 11

2.2. 手动安装 Oracle JDK 11

如果你希望使用 Oracle JDK 的最新版本,也可以采用类似 OpenJDK 的手动安装流程。不过,从 Oracle 下载 JDK 时,需要先接受许可协议,因此使用 wget 下载会稍微复杂一些:

$ wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" \
http://download.oracle.com/otn-pub/java/jdk/11.0.1+13/90cf5d8f270a4347a95050320eef3fb7/jdk-11.0.1_linux-x64_bin.tar.gz

⚠️ 上述命令中的链接是针对 11.0.1 版本的,不同小版本链接会变化。

后续步骤与 OpenJDK 一致:

$ sha256sum jdk-11.0.1_linux-x64_bin.tar.gz
$ tar xzvf jdk-11.0.1_linux-x64_bin.tar.gz
$ sudo mkdir /usr/lib/jvm
$ sudo mv jdk-11.0.1 /usr/lib/jvm/oracle-jdk-11-manual-installation/
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/oracle-jdk-11-manual-installation/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/oracle-jdk-11-manual-installation/bin/javac 1

验证安装:

$ java -version

输出如下:

java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

编译器验证:

$ javac -version

输出:

javac 11.0.1

2.3. 通过 PPA 安装 Oracle JDK 11

目前 Oracle JDK 11 也可以通过 PPA 安装,步骤如下:

$ sudo add-apt-repository ppa:linuxuprising/java
$ sudo apt update
$ sudo apt install oracle-java11-installer

验证安装结果与手动安装一致:

$ java -version

输出:

java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

编译器验证:

$ javac -version

输出:

javac 11.0.1

⚠️ Ubuntu 14.04 LTS 默认不支持 add-apt-repository 命令,需先安装 software-properties-common 包:

$ sudo apt update
$ sudo apt install software-properties-common

之后再执行上述命令即可。


3. 安装 JDK 8

3.1. Ubuntu 16.04 LTS 及以上版本安装 OpenJDK 8

JDK 8 是一个长期支持版本,因此在 Ubuntu 的“Main”仓库中通常可以找到最新的 OpenJDK 8 包。

$ sudo apt update
$ sudo apt install openjdk-8-jdk

验证安装:

$ java -version

输出:

openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.18.04.1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

编译器验证:

$ javac -version

输出:

javac 1.8.0_181

3.2. Ubuntu 14.04 LTS 安装 OpenJDK 8

Ubuntu 14.04 LTS 的“Main”仓库中没有 OpenJDK 8,因此需要从 PPA 安装:

$ sudo apt update
$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:openjdk-r/ppa
$ sudo apt update
$ sudo apt install openjdk-8-jdk

3.3. 通过 PPA 安装 Oracle JDK 8

“Main”仓库不包含专有软件,如需安装 Oracle JDK,需使用 PPA。推荐使用 webupd8team 提供的 PPA:

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt update
$ sudo apt install oracle-java8-installer

安装过程中需接受 Oracle 的许可协议。

验证安装:

$ java -version

输出:

java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

编译器验证:

$ javac -version

输出:

javac 1.8.0_181

4. 安装 JDK 10

Java 10 和 Java 9 已停止支持,但仍可手动安装。

4.1. 手动安装 OpenJDK 10

$ wget https://download.java.net/java/GA/jdk10/10.0.1/fb4372174a714e6b8c52526dc134031e/10/openjdk-10.0.1_linux-x64_bin.tar.gz
$ sha256sum openjdk-10.0.1_linux-x64_bin.tar.gz
$ tar xzvf openjdk-10.0.1_linux-x64_bin.tar.gz
$ sudo mkdir /usr/lib/jvm
$ sudo mv jdk-10.0.1 /usr/lib/jvm/openjdk-10-manual-installation/
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/openjdk-10-manual-installation/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/openjdk-10-manual-installation/bin/javac 1
$ java -version
$ javac -version

4.2. 手动安装 Oracle JDK 10

访问 Oracle JDK Archive 下载 tar.gz 包,然后执行:

$ sha256sum jdk-10.0.2_linux-x64_bin.tar.gz
$ tar xzvf jdk-10.0.2_linux-x64_bin.tar.gz
$ sudo mkdir /usr/lib/jvm
$ sudo mv jdk-10.0.2 /usr/lib/jvm/oracle-jdk-10-manual-installation/
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/oracle-jdk-10-manual-installation/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/oracle-jdk-10-manual-installation/bin/javac 1
$ java -version
$ javac -version

5. 安装 JDK 9

5.1. 手动安装 OpenJDK 9

$ wget https://download.java.net/java/GA/jdk9/9.0.4/binaries/openjdk-9.0.4_linux-x64_bin.tar.gz
$ sha256sum openjdk-9.0.4_linux-x64_bin.tar.gz
$ tar xzvf openjdk-9.0.4_linux-x64_bin.tar.gz
$ sudo mkdir /usr/lib/jvm
$ sudo mv jdk-9.0.4 /usr/lib/jvm/openjdk-9-manual-installation/
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/openjdk-9-manual-installation/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/openjdk-9-manual-installation/bin/javac 1
$ java -version
$ javac -version

5.2. 手动安装 Oracle JDK 9

访问 Oracle JDK Archive 下载安装包,然后执行:

$ sha256sum jdk-9.0.4_linux-x64_bin.tar.gz
$ tar xzvf jdk-9.0.4_linux-x64_bin.tar.gz
$ sudo mkdir /usr/lib/jvm
$ sudo mv jdk-9.0.4 /usr/lib/jvm/oracle-jdk-9-manual-installation/
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/oracle-jdk-9-manual-installation/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/oracle-jdk-9-manual-installation/bin/javac 1
$ java -version
$ javac -version

6. 安装方式对比

6.1. “Main” 仓库

✅ 优势:

  • Ubuntu 官方支持
  • 通过 apt updateapt upgrade 即可更新
  • 由 Canonical 维护,更新及时

6.2. PPA

⚠️ 优势:

  • 提供更多版本选择
  • 更新频率取决于维护者

❌ 风险:

  • 第三方维护,安全性较低
  • 需手动添加仓库

6.3. 手动安装

✅ 优势:

  • 灵活性高
  • 可安装最新版本

❌ 缺点:

  • 更新需手动处理
  • 不支持 apt 自动更新

7. 查找可用 JDK 包

你可以使用以下命令查看当前系统中可用的 OpenJDK 包:

$ apt list openjdk*jdk

示例输出:

openjdk-11-jdk/bionic-updates,bionic-security 10.0.2+13-1ubuntu0.18.04.2 amd64
openjdk-8-jdk/bionic-updates,bionic-security 8u181-b13-0ubuntu0.18.04.1 amd64

查看包详情:

$ apt show openjdk-11-jdk

8. Java 版本与安装方式一览

Java 版本 OpenJDK 安装方式 Oracle JDK 安装方式
11 手动安装 手动安装 / PPA 安装
10 手动安装(已不支持) 手动安装(已不支持)
9 手动安装(已不支持) 手动安装(已不支持)
8 apt 安装 PPA 安装

9. 管理多个 Java 版本

Ubuntu 使用 update-alternatives 管理多个版本的 Java。

查看当前可用版本:

$ update-alternatives --display java

切换版本:

$ sudo update-alternatives --config java

输出示例:

Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 manual mode
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode

10. 总结

本文介绍了三种在 Ubuntu 上安装 JDK 的方式:使用“Main”仓库、PPA 和手动安装,并对它们进行了对比。最后展示了如何通过 update-alternatives 管理多个 Java 版本。

下一步建议:设置 JAVA_HOME 环境变量


原始标题:Installing Java on Ubuntu