前期准备

Oracle官方下载:https://www.oracle.com/cn/java/technologies/oracle-java-archive-downloads.html

JDK华为镜像站(支持主流版本):https://repo.huaweicloud.com/java/jdk/

在官网下载可能要登陆Oracle账户,建议使用镜像站

目前主流使用JDK8,使用本次使用jdk8来做演示。具体版本:jdk-8u202-windows-x64

还有一种openjdk,个人建议还是安装完整的JDK。

关于JDK收费问题

(引用https://juejin.im/post/5ccce2006fb9a032143770e4)

2019年4月16日,Oracle发布了新的JDK 8的更新,版本号为8u211和8u212。与以往不同的是,新版本的许可协议从BCL换成了OTN,这就意味着,你不能在生产环境使用这个版本了。如果你想继续使用8u211/8u212,或者之后发布的新版本,就需要给Oracle交钱了。

当然,并不是你用了新版本的JDK就要交钱,这个时候要区分私用和商用:

私用,是我总结的一个词,它包括”Personal Use”和”Development Use”,前者表示一些个人用途,比方说在自己的电脑上写一些小工具,做一些数据分析等等;后者表示开发用途,比如日常开发、做测试、做演示等等。商用不太好界定。我的理解就是拿来赚钱就是商用,比方说把网站部署到生产环境,在公司内部系统使用等。

我用的JDK使用什么协议?

BCL**协议,即Oracle Binary Code License Agreement,协议规定你可以使用JDK,但是不能进行修改。私用和商用都可以,但是JDK中的某些商业特性,是需要付费才可以使用的。OTN**协议,即Oracle Technology Network License Agreement,目前新发布的JDK用的都是这个协议,可以私用,商用需要付费。从下图可以看出各个版本对应的协议:

我不想掏钱怎么办?

商用的话使用上面BCL协议的版本,私用怎么着都行。很多时候,开发者会对什么版本用了什么协议比较迷惑,懒得搞清楚,那么可以直接使用OpenJDK

OpenJDK是一个基于GPLv2+CE协议的开源JDK实现,他由OpenJDK社区来运作,作为OpenJDK社区的主导者,Oracle也在尽量减少OpenJDK和Oracle JDK的差别(source),将一些商业特性移植到了OpenJDK上,比如Java Flight Recorder,Java Mission Control和ZGC等等。对于普通开发者,两者差异可忽略不计。OpenJDK同样会每6个月发布一个新版本,不过每次新的版本发布后,旧的就不维护了,比如OpenJDK 12发布之后,11版本便停止更新,停留在11.0.2版本,没有LTS一说了。

除了Oracle的OpenJDK,还有很多免费OpenJDK实现可以用,比如 ZuluAdoptOpenJDK,Amazon的Corretto和阿里巴巴的dragonwell等等。具体他们有什么区别,我们以后再说。

我们大厂愿意掏钱怎么办?

可以通过订阅Java SE Subscription来付费,桌面用途每人每月2.5刀,服务器用途每个处理器每月25刀,量多还有优惠。Oracle以前还提供Java SE Advanced, Java SE Advanced Desktop和 Java SE Suite等一次性授权,不过现在都建议新老付费用户换成订阅制了。

Oracle为什么这么做

当然是赚钱,OTN协议的Oracle JDK现在允许私用也只是想让开发者养成习惯,将来开发者搞公司项目的时候,非常有可能会习惯性去Oracle官网下载JDK,这样就导导致了商用项目未经许可违规使用。Oracle法务部的刀肯定老早就磨好了。

一、windows系统

(一)下载JDK

点击文件,即可下载

(二)安装JDK

建议在安装之前先新建好要安装的位置,这样以便于管理。

直接下一步

这里可以点更改来改变安装位置,其他不用动

稍微等待一下

直接点确定

如果在定制安装时没有禁止安装jre,就会在这里安装。建议修改安装路径。

建议在JDK的同级目录新建文件夹jre1.8.0_202,并将jre安装到此位置

然后点下一步

稍等片刻

安装完成后点关闭

至此,JDK安装完毕

(三)配置JDK

(1)依次进行以下操作,右键此电脑——>属性——>高级系统设置——>高级——>环境变量

(2)在系统变量新建系统变量

注意点:

1
2
3
JAVA_HOME

D:\JAVA\jdk1.8.0_202

JAVA_HOME一定要大写

D:\JAVA\jdk1.8.0_202是安装JDK的根路径

(3)新建CLASSPATH

注意点:

1
2
3
CLASSPATH

.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

CLASSPATH一定要大写

下面的变量值的前面有一个英文的点不要丢

(4)双击系统path,进入编辑环境变量

新建这两个环境变量

1
2
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin

如果你再双击系统path时,出现以行形式编辑,则在变量值末尾添加如下值

1
;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

配置完成后,依次确定

如果在cmd窗口输入java或java -version 显示内容,这安装成功。

(四)总结

1
2
3
4
5
6
7
8
9
10
11
JAVA_HOME
D:\JAVA\jdk1.8.0_202

CLASSPATH
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

Path变量
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin

;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

二、centos7系统

(一)下载JDK

点击文件,即可下载

(二)检查系统中是否存在JDK

1
2
3
4
5
6
7
8
9
10
rpm -qa | grep java
rpm -e --nodeps 要卸载的包 (包通过上面的指令可以获取到)]
如:
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.222.b03-1.el7.x86_64
rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.221-2.6.18.1.el7.x86_64
rpm:用于管理套件
-e:表示删除指定的套件
-q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户。
-a:查询所有套件。
|:把前一个命令原本要输出到屏幕的数据当作是后一个命令的标准输入

如果有,建议卸载,可能需要root账户

包含noarch的文件不必删除,如下:

1
2
3
python-javapackages-3.4.1-11.el7.noarch
tzdata-java-2016g-2.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch

(三)上传JDK包

上传JDK包到/usr/local/software目录下面(/usr/local/software指的是你想要安装JDK的位置)

执行解压JDK安装文件

1
tar -zxvf jdk-8u202-linux-x64.tar.gz

(四)配置环境变量

1
vim /etc/profile

在文件最末尾加上下面几句话,如下图所示

1
2
3
export JAVA_HOME=/usr/local/software/jdk1.8.0_202
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin

保存退出

让配置生效:

1
source /etc/profile

检查环境:

运行java –version能看到版本信息,就安装成功了,如下图所示: