來自:碼農翻身(ID:coderising)

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

再過幾天,Oracle要對JDK8就要收費了,怎麼辦?

再過幾天,Oracle要對JDK8就要收費了,怎麼辦?

假設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 打包,統一成一個新的服務,就是之前說的訂閱服務。

再過幾天,Oracle要對JDK8就要收費了,怎麼辦?

總結一下

如果你的公司已經買了這個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的話,沒什麼影響!

後記: 這篇文章是我從網絡上查閱資料,綜合分析後寫的,如果有不正確的地方,歡迎批評指正。

參考資料:
https://www.oracle.com/technetwork/java/javase/terms/products/index.html
https://www.oracle.com/technetwork/cn/java/javase/overview/index.html
https://blogs.oracle.com/java-platform-group/java-se-offerings
https://www.aspera.com/en/blog/oracle-java-se-8-licensing-updates/
https://blogs.oracle.com/java-platform-group/end-of-public-updates-is-a-process%2c-not-an-event
相关文章