OracleJDK的下载安装与配置

1、JDK版本与商用协议

JDK 版本 BCL 协议(商用免费) OTN 协议(商用收费 NFTC 协议(商用免费)
1.1
1.2
1.3
1.4
5
6
7
8 8u202 及之前的版本 8u211 及之后的版本
9
10
11
12
13
14
15
16
17
18
19
20
21
22

如上表所示,OracleJDK 主要有三种许可协议:

  • BCL 协议:Oracle Binary Code License Agreement
  • OTN 协议:Oracle Technology Network License Agreement
  • NFTC 协议:Oracle No-Fee Terms and Conditions License

其中,OTN 协议是商用收费的,因此下载使用时,需注意版本协议。

提示:OracleJDK 是 OpenJDK 比较知名权威的发行版,但因其收费模式比较复杂多变,所以越来越多的公司开始采用 OpenJDK 的其他发行版。目前,Java 知名社区 Spring 官方推荐的 OpenJDK 发行版为 Liberica JDK

2、下载JDK

如上图所示,进入 Oracle 官网 JDK 的下载地址:https://www.oracle.com/java/technologies/downloads/archive/

如上图所示,本文以目前还比较流行的 JDK 8 为例,分别下载 64 位(Linux 和 Windows)操作系统的 JDK 安装包。

注意:本文下载的 JDK 8 版本是 8u202 ,属于 BCL(Oracle Binary Code License Agreement)协议,可以免费商用,也是 OracleJDK 8 最后一个可以免费商用的版本。

3、安装与配置

3.1、Windows

3.1.1、启动安装包

如上图所示,双击启动 JDK 安装包。

3.1.2、允许安装包更改设备

3.1.3、开始安装向导

3.1.4、设置JDK安装路径

如上图所示,本文使用默认的安装路径。

3.1.5、等待JDK安装进度

3.1.6、同意许可条款

3.1.7、设置JRE安装路径

如上图所示,本文使用默认的安装路径。

3.1.8、等待JRE安装进度

3.1.9、完成安装

3.1.10、查看安装版本及路径

java -version
where java

3.1.11、配置环境变量

如上图所示,诸如 Tomcat 等软件一般会通过 JAVA_HOME 或 JRE_HOME 环境变量来访问使用 JDK 。

Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program

因此在安装完 JDK 后,还需要配置环境变量。

如上图所示,通过“设置”->“关于”->“高级系统设置”->“环境变量”,打开环境变量的编辑面板。

如上图所示,新建一个系统变量,变量名为 JAVA_HOME ,变量值为 JDK 的安装路径。

如上图所示,编辑“Path”系统变量,新建一个条目,引入刚创建的“JAVA_HOME”系统变量的“bin”目录。

%JAVA_HOME%\bin

如上图所示,处理会影响“%JAVA_HOME%\bin”生效的条目。

在安装 JDK 时,会自动将 java.exe、javaw.exe、javaws.exe 三个可执行文件复制到 C:\Program Files (x86)\Common Files\Oracle\Java\javapath 目录,并自动将该目录路径新增到 Path 系统变量的第一个条目。

这也是在 JDK 安装完成后,还没有配置环境变量,就能成功执行“java -version”的原因。

如果我们只安装使用一个版本的 JDK ,这个环境变量条目一般是不会导致什么问题的。

但实际上,我们可能会安装使用多个版本的 JDK ;这时 C:\Program Files (x86)\Common Files\Oracle\Java\javapath 目录存放的是最后安装的 JDK 版本的文件。

由于这个环境变量条目,在“%JAVA_HOME%\bin”环境变量条目的前面;所以即使将“JAVA_HOME”的系统变量值切换到了其他 JDK 版本的安装路径,在执行“java”相关命令时,也还是会使用到最后安装的 JDK 版本的 java.exe 程序,而不是“%JAVA_HOME%\bin”所指向的 java.exe 程序。

因此,在手动配置环境变量时,最好还是处理掉这个条目;可以直接删除,也可以像本文这样在前面添加“bak”让其失效。

如上图所示,JAVA_HOME 系统变量已配置成功,java 命令也是用“%JAVA_HOME%\bin”所指向的 java.exe 程序。

where java
echo %JAVA_HOME%

3.2、Linux

3.2.1、解压JDK安装包

tar -zxvf jdk安装包名称

3.2.2、创建java目录并移动

如上图所示,在 /usr/local/ 目录下,创建一个 java 目录;并将解压 JDK 安装包后得到的 JDK 目录,移动到新创建的 /usr/local/java 目录中。

mkdir /usr/local/java
mv 解压后的jdk目录 /usr/local/java/

提示: 在 Linux 操作系统中,自定义安装的第三方软件,一般安装在 /usr/local/ 目录下。

3.2.3、设置环境变量

如上图所示,在 /etc/profile.d/ 目录下,新建一个 java.sh 文件来设置 Java 的环境变量。

vi /etc/profile.d/java.sh

提示:有不少教程是通过直接使用 /etc/profile 文件来设置 Java 环境变量的,实际上 /etc/profile 文件会自动加载 /etc/profile.d/*.sh 文件中的设置(用户需要具有 /etc/profile.d/*.sh 文件的 r 权限)。

因此,基于模块化的原则,在 /etc/profile.d/ 目录下新建一个 .sh 扩展名文件来设置 Java 环境变量的做法会更加合适。

如上图所示,在 /etc/profile.d/java.sh 文件中设置 JAVA_HOME、JRE_HOME 和 PATH 三个变量;并使用 export 命令将这三个自定义变量转换成环境变量。

# set java environment

JAVA_HOME=/usr/local/java/解压后的jdk目录
JRE_HOME=$JAVA_HOME/jre
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

export JAVA_HOME JRE_HOME PATH

提示:不少教程还会设置 CLASSPATH 变量,实际上在 JDK 1.5 之后的版本就不再需要设置 CLASSPATH 变量。
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

3.2.4、使环境变量设置立即生效

如上图所示,使用 source 命令加载 /etc/profile 环境配置文件,让(Java)环境变量设置立即生效。

source /etc/profile

提示:只有在用户输入账号密码登录进入 Linux 系统时,才会为该用户自动加载 /etc/profile 环境配置文件。如果不想退出重新登录,可以使用 source 命令手动加载让其立即生效。

3.2.5、查看安装版本及路径

java -version
which java

本文参考

【1】【大文Code笔记】【JDK17收费?一文带你搞清楚JDK各个版本收费情况】【知乎】【2023-12-19】

【2】【闷瓜蛋子】【Oracle如何对JDK收费】【知乎】【2019-06-18】

【3】【bruce】【JDK 发行版本选择(Open JDK VS Oracle JDK VS 其他发行版本)】【知乎】【2023-07-11】

【4】【旋转的木驴儿】【OpenJDK 和 OracleJDK 哪个jdk更好更稳定,正式项目用哪个呢?】【知乎】【2024-07-01】

【5】【Glavo】【OpenJDK 和 OracleJDK 哪个jdk更好更稳定,正式项目用哪个呢?】【知乎】【2020-06-19】

【6】【nostmabole】【OPEN JDK常用发行版和下载方式】【知乎】【2024-05-24】

【7】【51CTO技术栈】【Java 许可再变更!Oracle将于今年9月“调整”Oracle JDK 17,用户:不如迁移到替代方案】【微信公众号】【2024-07-31】

【8】【极客星云】【开源Open JDK哪家强?Oracle JDK替代解决方案盘点】【CSDN】【2023-11-06 】

【9】【icqcqi】【已解决:Java环境变量配置后不生效】【CSDN】【2022-11-07】

【10】【酸奶加绿茶】【Linux下JDK到底应该安装在哪儿?】【博客园】【2017-06-04】

【11】【佚名】【【干货】linux 安装jdk,【收藏】linux 安装jdk】【知乎】【2021-12-27】

【12】【二境志】【Java开发环境不再需要配置classpath】【知乎】【2019-05-23】