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/
接下来,为了让 java
和 javac
命令可用,我们使用 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 update
和apt 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
环境变量。