從明年1月開始,Oracle要對(duì)JDK8就要收費(fèi)了,怎么辦?
JDK8從2019年1月開始就要收費(fèi)了,怎么辦呢?
其實(shí)這個(gè)問題本身就是有問題的,因?yàn)槭召M(fèi)的并不是JDK8 , 而是JDK8后續(xù)的update (更新) 。
什么是update? 如果你下載過JDK, 就會(huì)看到那些8u191, 8u192這樣的東西,191,192就是update 的編號(hào)。
這些update中通常會(huì)包含對(duì)JDK bug的fix ,或者一些功能的改變,增強(qiáng), 拿update 172為例:
1. 這個(gè)update 修改了下面兩個(gè)方法的文檔,讓文檔描述和方法的實(shí)現(xiàn)一致:
java.awt.Toolkit.getImage(URL u)
java.awt.Toolkit.createimage(URL u)
2. 增加了在Windows8 及以上版中,對(duì)Swing/AWT 文本組件自動(dòng)顯示觸摸鍵盤的功能
3. 36個(gè)Bug Fix
假設(shè)JDK 8u192是2018年的***一個(gè)update , 你下載并且安裝了,那可以繼續(xù)免費(fèi)使用下去,沒有任何問題。
但是從2019年1月開始,如果你還想獲取JDK的update , 對(duì)不起,你需要付費(fèi)訂閱。
這個(gè)訂閱服務(wù)的價(jià)格是這樣的:
對(duì)于PC, 每用戶每月是2.5美元,對(duì)于服務(wù)器/云部署,每個(gè)processor 每月是25美元, 當(dāng)然,數(shù)量多的話可以打折。
Oracle 為什么要這么干呢?
我推測(cè)有兩個(gè)原因, ***個(gè)原因可以理解: Oracle JDK8 2014年3月發(fā)布, 到2019年1月正式進(jìn)入“End of Public Updates”, 這個(gè)版本Oracle支持了將近5年時(shí)間,一個(gè)版本的軟件不可能***期地支持下去,那樣維護(hù)成本太高。
第二個(gè)原因可能是沒有多少人購(gòu)買它的Java SE Advanced, Java SE Advanced Desktop 或者Java SE Suite, 這三個(gè)家伙是什么東西? 我們稍后解釋。
你也許注意到了, 我剛才再說JDK的時(shí)候,特別加上了Oracle 這個(gè)詞,這是因?yàn)镴ava虛擬機(jī)的規(guī)范是開放的,任何人都可以去實(shí)現(xiàn)。
老劉在2017年編程提高群***季中,不就和大家一起實(shí)現(xiàn)了一個(gè)極為簡(jiǎn)單的版本嗎? 當(dāng)然那不能稱為JVM ,只實(shí)現(xiàn)了對(duì)Class文件的解析,和一個(gè)能實(shí)現(xiàn)順序,分支,循環(huán),多態(tài)的簡(jiǎn)單執(zhí)行引擎。
其實(shí)現(xiàn)在的JDK提供者非常多,不像微軟的.NET,獨(dú)此一家,別無(wú)分號(hào)。
Open JDK
這個(gè)不多說,免費(fèi)的開源實(shí)現(xiàn),以GPL License發(fā)布,很多Linux發(fā)行版中都會(huì)包含這個(gè)Open JDK 。
參與開發(fā)的大佬們有Oracle, RedHat (已被IBM收購(gòu)), Azul System, IBM , Apple , SAP。
Oracle JDK
就是我們常說的Java JDK , 也是最常用的一個(gè),是Oracle公司(收購(gòu)了開發(fā)Java的Sun公司)對(duì)Java SE的實(shí)現(xiàn)。
如果更詳細(xì)分的話,可以分為Oracle JDK和 Oracle JRE。
比如你想玩Minecraft 這樣需要Java的游戲, 那只需要從java.com下載一個(gè)JRE就夠了。
如果你想基于Java做開發(fā),那就需要從Oracle Technology Network(OTN)網(wǎng)站上下載JDK了。
其他公司提供的JDK
有實(shí)力的大公司,都有可能開發(fā)自己的JDK , 比如IBM ,肯定要為自家的操作系統(tǒng)AIX,還有z/OS開發(fā)SDK。
我在IBM工作的時(shí)候,根本就沒有用過Oracle JDK,公司也不讓用啊。
HP,SAP也有自己的JDK , 可以為自己的硬件和軟件做定制。
Oracle Java SE Advanced, Java SE Advanced Desktop, Java SE Suite
這名字老長(zhǎng)了,也有點(diǎn)費(fèi)解,簡(jiǎn)單來(lái)說,這是個(gè)收費(fèi)的服務(wù), 是Oracle 為企業(yè)級(jí)用戶提供的高級(jí)工具和功能,可以監(jiān)控、部署、管理企業(yè)級(jí)的Java程序,與此同時(shí),你還可以下載那些老版本的JDK及其update。
換句話說,如果你購(gòu)買了這個(gè)服務(wù),自然就不用擔(dān)心什么JDK update 收費(fèi)的問題。
但是問題在于,到底有多少公司再使用這個(gè)服務(wù)? 如果你的公司在使用,歡迎告知。
所以我猜測(cè)Oracle耍了一點(diǎn)小手段, 以后不要這個(gè)收費(fèi)的服務(wù)了,把這些高級(jí)的功能加上JDK update 打包,統(tǒng)一成一個(gè)新的服務(wù),就是之前說的訂閱服務(wù)。
總結(jié)一下
如果你的公司已經(jīng)買了這個(gè)Java SE Advanced (或者 Advanced Desktop), Java SE Suite的License, 什么都不用擔(dān)心,你很安全。
如果你的公司正在使用Oracle JDK 8 并且還想在2019年1月之后獲得那些更新和支持,你需要購(gòu)買Orace 的訂閱服務(wù)。
如果你的公司一直在在升級(jí)你的Oracle JDK ,比如說已經(jīng)升級(jí)到JDK9了,你什么服務(wù)都不用購(gòu)買, 因?yàn)槟莻€(gè)訂閱服務(wù)主要解決的是老版本的Update 的問題。
或者可以選擇一個(gè)沒有public update的Oracle JDK , 這也很常見,很多JDK已經(jīng)非常穩(wěn)定了, 比如Oracle JDK 7 發(fā)布日期是2011年7月, “End of Public Updates” 是2015年4月, 我估計(jì)現(xiàn)在還有不少公司還在使用JDK7這個(gè)已經(jīng)沒有public update的版本吧!
如果真的出現(xiàn)了巨大的安全漏洞,你又沒法升級(jí)JDK ,那只好去購(gòu)買訂閱服務(wù)去Fix了。
當(dāng)然,你的公司也可以選擇純開源OpenJDK。
注意,我這里說的都是公司,都是商業(yè)用途,如果只是個(gè)人學(xué)習(xí)Java的話,沒什么影響!
后記: 這篇文章是我從網(wǎng)絡(luò)上查閱資料,綜合分析后寫的,如果有不正確的地方,歡迎批評(píng)指正。