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%in
如上图所示,处理会影响“%JAVA_HOME%in”生效的条目。
在安装 JDK 时,会自动将 java.exe、javaw.exe、javaws.exe 三个可执行文件复制到 C:Program Files (x86)Common FilesOracleJavajavapath 目录,并自动将该目录路径新增到 Path 系统变量的第一个条目。
这也是在 JDK 安装完成后,还没有配置环境变量,就能成功执行“java -version”的原因。
如果我们只安装使用一个版本的 JDK ,这个环境变量条目一般是不会导致什么问题的。
但实际上,我们可能会安装使用多个版本的 JDK ;这时 C:Program Files (x86)Common FilesOracleJavajavapath 目录存放的是最后安装的 JDK 版本的文件。
由于这个环境变量条目,在“%JAVA_HOME%in”环境变量条目的前面;所以即使将“JAVA_HOME”的系统变量值切换到了其他 JDK 版本的安装路径,在执行“java”相关命令时,也还是会使用到最后安装的 JDK 版本的 java.exe 程序,而不是“%JAVA_HOME%in”所指向的 java.exe 程序。
因此,在手动配置环境变量时,最好还是处理掉这个条目;可以直接删除,也可以像本文这样在前面添加“bak”让其失效。
如上图所示,JAVA_HOME 系统变量已配置成功,java 命令也是用“%JAVA_HOME%in”所指向的 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】