寻找免费JDK8
2019年4月16日,Oracle发布了新的JDK 8的更新,版本号为8u211/8u212。与以往不同的是,新版本的许可协议从BCL换成了OTN,这就意味着,你不能在生产环境使用这个版本了,个人用途还是可以的。如果你想继续使用新版本,就需要给Oracle交钱了,我选择了最后一个免费稳定版JDK 8u201,它是2019.1.15发布的。
https://www.oracle.com/technetwork/java/javase/8u201-relnotes-5209271.html
https://www.oracle.com/technetwork/java/javase/documentation/8u-relnotes-2225394.html
https://www.oracle.com/technetwork/java/javase/jdk8-naming-2157130.html
我用的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实现可以用,比如 Zulu,AdoptOpenJDK,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法务部的刀肯定老早就磨好了。
官网下载地址都是最新版本,我们要找到归档版本,免费注册账号即可下载,但速度很慢,建议通过国内途径下载,例如百度网盘。
Java SE 8 Archive Downloads (JDK 8u202 and earlier)
Go to the Oracle Java Archive
The JDK is a development environment for building applications using the Java programming language.
The JDK includes tools useful for developing and testing programs written in the Java programming language and running on the JavaTM platform.
WARNING: These older versions of the JRE and JDK are provided to help developers debug issues in older systems. They are not updated with the latest security patches and are not recommended for use in production.
These Java SE 8 update releases are provided under the Binary Code License (“BCL”).
Java SE 8u211 and later updates are available, under the Java SE OTN License.
For production use Oracle recommends downloading the latest JDK and JRE versions and allowing auto-update.
Only developers and Enterprise administrators should download these releases.
Downloading these releases requires an oracle.com account. If you don't have an oracle.com account you can use the links on the top of this page to learn more about it and register for one for free.
For current Java releases, please consult the Oracle Software Download page.
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html