JDK8从2019年1月开始就要收费了,怎么办呢?
其实这个问题本身就是有问题的,因为收费的并不是JDK8 , 而是JDK8后续的update (更新) 。
什么是update? 如果你下载过JDK, 就会看到那些8u191, 8u192这样的东西,191,192就是update 的编号。
这些update中通常会包含对JDK bug的fix ,或者一些功能的改变,增强, 拿update 172为例:
1. 这个update 修改了下面两个方法的文档,让文档描述和方法的实现一致:
java.awt.Toolkit.getImage(URL u)
java.awt.Toolkit.createimage(URL u)
2. 增加了在Windows8 及以上版中,对Swing/AWT 文本组件自动显示触摸键盘的功能
3. 36个Bug Fix
假设JDK 8u192是2018年的***一个update , 你下载并且安装了,那可以继续免费使用下去,没有任何问题。
但是从2019年1月开始,如果你还想获取JDK的update , 对不起,你需要付费订阅。
这个订阅服务的价格是这样的:
对于PC, 每用户每月是2.5美元,对于服务器/云部署,每个processor 每月是25美元, 当然,数量多的话可以打折。
Oracle 为什么要这么干呢?
我推测有两个原因, ***个原因可以理解: Oracle JDK8 2014年3月发布, 到2019年1月正式进入“End of Public Updates”, 这个版本Oracle支持了将近5年时间,一个版本的软件不可能***期地支持下去,那样维护成本太高。
第二个原因可能是没有多少人购买它的Java SE Advanced, Java SE Advanced Desktop 或者Java SE Suite, 这三个家伙是什么东西? 我们稍后解释。
你也许注意到了, 我刚才再说JDK的时候,特别加上了Oracle 这个词,这是因为Java虚拟机的规范是开放的,任何人都可以去实现。
老刘在2017年编程提高群***季中,不就和大家一起实现了一个极为简单的版本吗? 当然那不能称为JVM ,只实现了对Class文件的解析,和一个能实现顺序,分支,循环,多态的简单执行引擎。
其实现在的JDK提供者非常多,不像微软的.NET,独此一家,别无分号。
Open JDK
这个不多说,免费的开源实现,以GPL License发布,很多Linux发行版中都会包含这个Open JDK 。
参与开发的大佬们有Oracle, RedHat (已被IBM收购), Azul System, IBM , Apple , SAP。
Oracle JDK
就是我们常说的Java JDK , 也是最常用的一个,是Oracle公司(收购了开发Java的Sun公司)对Java SE的实现。
如果更详细分的话,可以分为Oracle JDK和 Oracle JRE。
比如你想玩Minecraft 这样需要Java的游戏, 那只需要从java.com下载一个JRE就够了。
如果你想基于Java做开发,那就需要从Oracle Technology Network(OTN)网站上下载JDK了。
其他公司提供的JDK
有实力的大公司,都有可能开发自己的JDK , 比如IBM ,肯定要为自家的操作系统AIX,还有z/OS开发SDK。
我在IBM工作的时候,根本就没有用过Oracle JDK,公司也不让用啊。
HP,SAP也有自己的JDK , 可以为自己的硬件和软件做定制。
Oracle Java SE Advanced, Java SE Advanced Desktop, Java SE Suite
这名字老长了,也有点费解,简单来说,这是个收费的服务, 是Oracle 为企业级用户提供的高级工具和功能,可以监控、部署、管理企业级的Java程序,与此同时,你还可以下载那些老版本的JDK及其update。
换句话说,如果你购买了这个服务,自然就不用担心什么JDK update 收费的问题。
但是问题在于,到底有多少公司再使用这个服务? 如果你的公司在使用,欢迎告知。
所以我猜测Oracle耍了一点小手段, 以后不要这个收费的服务了,把这些高级的功能加上JDK update 打包,统一成一个新的服务,就是之前说的订阅服务。
总结一下
如果你的公司已经买了这个Java SE Advanced (或者 Advanced Desktop), Java SE Suite的License, 什么都不用担心,你很安全。
如果你的公司正在使用Oracle JDK 8 并且还想在2019年1月之后获得那些更新和支持,你需要购买Orace 的订阅服务。
如果你的公司一直在在升级你的Oracle JDK ,比如说已经升级到JDK9了,你什么服务都不用购买, 因为那个订阅服务主要解决的是老版本的Update 的问题。
或者可以选择一个没有public update的Oracle JDK , 这也很常见,很多JDK已经非常稳定了, 比如Oracle JDK 7 发布日期是2011年7月, “End of Public Updates” 是2015年4月, 我估计现在还有不少公司还在使用JDK7这个已经没有public update的版本吧!
如果真的出现了巨大的安全漏洞,你又没法升级JDK ,那只好去购买订阅服务去Fix了。
当然,你的公司也可以选择纯开源OpenJDK。
注意,我这里说的都是公司,都是商业用途,如果只是个人学习Java的话,没什么影响!
后记: 这篇文章是我从网络上查阅资料,综合分析后写的,如果有不正确的地方,欢迎批评指正。