Oracle近日宣布,他們將Java的發(fā)布頻率改為每六個月一次。
JCP執(zhí)行委員會在八月份的會議上提到了這一說法,隨后,Oracle發(fā)言人Donald Smith在他的博客中確認(rèn)了這一消息。該決定將在Java 9正式發(fā)布之后開始實行,也就是說,Java的下一個發(fā)布日期是2018年初。
除了發(fā)布周期,Oracle還宣布了在Java的構(gòu)建和發(fā)布方式方面所發(fā)生的主要變化。Oracle將把OpenJDK的二進(jìn)制包作為面向開發(fā)者的主要版本,取代之前的Oracle JDK。
OpenJDK將采用GPLv2許可(包括“類路徑例外”)免費發(fā)行,移除了之前在Oracle JDK上存在的一些限制。Oracle JDK仍然會繼續(xù)存在,但需要與Oracle簽訂協(xié)議才能獲得Oracle提供的長期支持。
Java首席架構(gòu)師Mark Reinhold說,為了避免出現(xiàn)像Java 8和Java 9那樣的延期情況,所有決定實行新的發(fā)布周期。
Java當(dāng)前的發(fā)布周期為兩年一次,Java 9因為模塊化系統(tǒng)(Jigsaw)問題一再延期,已經(jīng)比預(yù)期晚了18個月。之前,Java 8也因為安全問題延期了8個月左右。Java 9的GA版本將在9月21號發(fā)布。
新的發(fā)布周期嚴(yán)格遵循時間點,將在每年的3月份和9月份發(fā)布,相應(yīng)的版本號為18.3、18.9、19.3等。與現(xiàn)在的發(fā)布周期不同,新的發(fā)布計劃不會為了等待某個主要特性完成而延期。如果一個特性還沒有完成,它就不會被合并到發(fā)布用的代碼倉庫里。如果錯過了一個版本,就要等待下一次發(fā)布。
新的發(fā)布周期旨在避免未完成的里程碑特性(比如Java 8的Lambda或Java 9的模塊化系統(tǒng))造成發(fā)布延期,讓其他一些有用的特性也無法與開發(fā)者見面。
除了新的發(fā)布周期,Oracle將會繼續(xù)每個季度發(fā)布更新版本,時間分別為1月份、4月份、7月份和10月份。也就是說,在下一個大版本發(fā)布之前,當(dāng)前版本都會有兩個更新版本。更新版本只包含安全問題修復(fù)或回歸錯誤的修復(fù)。
Reinhold說:
開發(fā)者希望加快速度,這樣他們就能夠盡快地在生產(chǎn)環(huán)境中使用新的特性。
對于沒有必要快速升級Java版本的企業(yè)和組織來說,Oracle建議他們簽訂每三年一次的長期支持(Long Term Support,LTS)協(xié)議。他們因此可以獲得由Oracle提供的至少三年的支持,還有可能更長時間,這要取決于市場的反應(yīng)。
Oracle建議第一個LTS版本為“18.9”,不過這需要與其他的OpenJDK貢獻(xiàn)者討論過后才能最終確定。Java 8被作為一個特別的LTS版本,支持日期截止到2025年。
Smith說:
OpenJDK是開發(fā)者了解和使用Java SE平臺最主要的渠道,而Oracle JDK繼續(xù)作為Oracle收費用戶的LTS版本。
倫敦Java社區(qū)的負(fù)責(zé)人Martijn Verburg也發(fā)表了他對新發(fā)布周期的看法:
新的Java發(fā)布周期對于Java生態(tài)系統(tǒng)來說是一件好事情。Java 9的Jigsaw和孵化模塊問題促成了這一局面的發(fā)生。
Oracle確實面臨著發(fā)布方面的巨大挑戰(zhàn),不過OpenJDK社區(qū)擁有足夠的知識來幫助一起解決挑戰(zhàn)。
我希望看到中間會有所突破,不過對常規(guī)的發(fā)布周期仍然很期待。其他實現(xiàn)者可以更早地訪問到規(guī)范的草案,這樣他們就可以更早、更經(jīng)常地發(fā)布版本。
Oracle的Java發(fā)布速度經(jīng)常受到詬病,Java被廣大的企業(yè)組織所采用,并已成為大量開源平臺和語言的基礎(chǔ),而這樣的發(fā)布速度讓Java處于很尷尬的境地。新的Java發(fā)布周期恰好滿足了廣大用戶的期望,不過這仍然需要等待Java開發(fā)者和Oracle用戶的反饋。
查看英文原文:Java to Move to 6-Monthly Release Cadence