下月起Oracle要对JDK8收费了,怎么办?
姓名:王梓霖 学号:16020199033
转载自https://www.ithome.com/0/402/532.htm,有删节。
【嵌牛导读】:从明年1月开始,Oracle要对JDK8就要收费
【嵌牛鼻子】:JDK8 java oracle
【嵌牛提问】: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的话,没什么影响!