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