Java生態系統一直以來是建立在一個高質量的免費(零成本)JDK之上的,它可以從甲骨文(Oracle)和以前的Sun獲得。 今天的情況和以前一樣。
Java現在每六個月發布一次版本,這個版本是指提供帶有安全補丁和重要bug修復的更新版本。到目前為止,包括Java 8在內,已經提供了多年的免費支持,當使用Java 9以及遭遇六個月的發布周期時,這種免費的支持現在被控制得更嚴格了。
事實上,從Java 11開始,甲骨文將不會為Java提供免費的長期支持(Lts)。
下面是各個JAVA版本發布日期和免費結束日期。
[ code]版本 發布日期 甲骨文免費支持結束Java 8 2014年3月 2019年1月(商業用途)Java 9 2017年9月 2018年3月Java 10 2018年3月 2018年9月Java 11 2018年9月 2019年3月(可能延長)Java 12 2019年3月 2019年9月[/code]
理由很簡單,甲骨文希望將精力集中在推動Java向前發展上,其成本是由客戶直接支付的長期支持費用(而不是免費贈送),要做到這一點,他們需要開發人員不斷升級他們的Java版本,每六個月移動一次版本(並在兩者之間獲取補丁版本)。
當然,對於大多數開發者來說,這種快速升級是不可行的,但是Java現在已經被開源為OpenJDK,這意味着Oracle的免費結束支持日期並不是令人擔心的日期。
OpenJDK
需要注意的一點是,世界上大多數jdk構建版本都是基於開放源代碼的OpenJDK項目,Oracle JDK只是基於OpenJDK代碼庫的許多構建版本之一,雖然以前Oracle在JDK中有額外的額外功能,但是Java 11已經不再是這種情況了。
許多其他供應商也提供基於OpenJDK代碼的構建版本,這些版本可能具有額外的品牌和/或額外的非核心功能, 這些供應商中的大多數還會對OpenJDK項目做出貢獻,包括安全補丁。
關鍵是,你使用的JDK應該是主動做出的選擇,還是被動地接受 ?你能多快得到安全補丁?會支持多久?是否需要向供應商施加合同壓力以幫助解決任何問題?
獲得JDK的方法主要有兩種, 第一種是操作系統中的更新機制(例如*nix), 第二種方法是訪問URL並下載二進制文件。
為了進一步研究這一點,讓我們分別看一下Java 8和Java 11。
停留在Java 8上
如果您想在2019年1月之后繼續使用Java 8,下面是我所看到的選擇:
1)不關心安全。
這是完全有可能永遠停留在最后的免費發行版, 當黑客摧毀你的公司 不要抱怨 。
2)依賴操作系統更新。
在*nix平台上,您很可能通過操作系統獲得JDK,JDK的更新是通過操作系統供應商交付的。 這是RedHat參與的關鍵-他們承諾 在RedHatEnterpriseLinux中Java 8更新直到2023年6月-但是他們也有一個“上游優先”策略,這意味着他們更願意將補丁推回“上游”OpenJDK項目。 您是否獲得到JDK的安全修補程序將取決於您的操作系統供應商,以及是否需要為這些更新支付費用。
3)支付服務費。
一些公司通過收費提供對Java的持續支持,可以訪問安全補丁流並使用某些保證更新發布版本(而不是志願者主導的方法)。 如果您有現金,那么支付Java可能是公平和合理的?
4)在商業環境下使用非商業架構。
甲骨文提供構建Java 8的非商業用途,直到2019年12月,所以你可以一直使用到那個日期為止,之后你想讓甲骨文的軟件授權團隊追着你嗎?
5)自己構建OpenJDK。
安全修補程序流通過跟蹤GPL許可下的公共Mercurial存儲庫的提交,完全有可能自己構建OpenJDK。 對於大多數公司來說, 這可能是一個非常現實的選擇。
6)使用AdoptOpenJDK的構建。
社區團隊AdoptOpenJDK在過去的幾年里,他們一直在忙着創建一個構建版本和測試平台。 因此,他們現在能夠獲取安全補丁的流*並將它們轉換成發布版本,就像你從商業產品中獲得的一樣。 他們還在運行Java TCK(測試兼容性工具包),以允許這些構建被完全認證為Java SE。 他們的計划是在Java 8構建之前生產Java 8版本,直到2022年9月在Java 17發布一年后結束,這是一個社區構建農場項目, 但對於大多數不想付費使用Java 8的用戶來說,這可能是最好的選擇。
請注意,Azul還提供免費的OpenJDK版本構建zulu.org.
*最后兩個選項假設,一旦Oracle停止,一個小組實際上會向前邁進,接管“JDK 8 Updates”OpenJDK項目, 確切的項目細節尚未確定時,IBM聲明表明了對該方法的真正支持如下:
認識到發布周期的變化對Java開發人員的影響,IBM將與OpenJDK社區的其他成員合作,繼續更新OpenJDK Java 8流,並使用安全補丁和關鍵的bug修復。我們打算在4年內保持當前LTS版本的安全性和高質量。這個時間尺度縮小了LTS版本之間的差距,為遷移提供了一年的時間。IBM還與許多合作伙伴和Java領導者一起投資於一個開放的構建和測試項目(AdoptOpenJDK.net),以便在OpenJDK和Eclipse OpenJ 9的常用平台上提供社區二進制文件。這些社區二進制文件經過TCK(Java SE規范)的遵從性測試,可供開發人員在生產中下載和使用。
考慮到他們2023年6月的支持日期和“上游第一”政策,也很難看到紅帽沒有對這一努力做出貢獻。
停留在Java 9或Java 10上?
還是不要吧
沒有人會為Java 9或Java 10提供構建或支持,無論如何,我認為沒有理由不升級到Java 11。
停留在Java 11上?
這是一個美好的新世界,並不是百分之百清楚事情會發生的樣子。
首先,尚不清楚是否會有免費下載的Oracle JDK。
但在現實中,甲骨文JDK是否免費下載並不重要。 這是因為在Java 11中,開發人員可以將Oracle JDK和OpenJDK視為等價的, 認為OpenJDK構建版本是次要的還是次要的不再是合適或正確的。 事實上,現在最重要的構建版本是OpenJDK。
更確切地說,在發布日期之前,Java 11開發人員應該考慮使用jdk.java.net若要獲得二進制下載,請不要在Oracle.com.
那么,Oracle將為Java 11提供安全補丁多長時間?
同樣,這方面的答案並非百分之百清楚。
總結
所有的部分都已經就緒,Java 11可以作為一個長期的支持版本來維護,但是,與Java 6、7和8不同的是,甲骨文將不會領導長期的支持工作。 很有可能紅帽將接管這項任務-他們公開表示願意。
在Java 11生命的頭6個月,甲骨文將提供gpl許可的免費零成本下載jdk.java.net有安全補丁。
為了在頭六個月后獲得GPL許可的免費零成本更新版本,您可能需要從不同的URL和不同的構建團隊獲得它們。AdoptOpenJDK構建場是尋找那些建築的地方,但是zulu.org是另一種可能性。
寫在最后:歡迎留言討論加關注,持續更新!!!