Oracle已經(jīng)宣布了Java 9的時(shí)間表,其目標(biāo)是在2016年9年正式發(fā)布該版本。該時(shí)間表遵循Oracle每?jī)赡臧l(fā)布一個(gè)新的主版本的計(jì)劃,雖然與先前的版本相比,目前提出的最后期限可能存在一定的延期風(fēng)險(xiǎn)。
截至目前,所有必要的JSR都還沒(méi)有提交;相比之下,與定義Java 8內(nèi)容的“總括JSR(Umbrella JSR)”相關(guān)的工作在2010年底就已經(jīng)開(kāi)始,距離最初計(jì)劃的正式發(fā)布時(shí)間大約有三年。Java 9中一些最有代表性的項(xiàng)目也是如此:Kulla項(xiàng)目(創(chuàng)建Java REPL)、Valhalla項(xiàng)目(改進(jìn)Java類型)和Jigswa項(xiàng)目(增加模塊化功能);同樣,相比之下,Java 8中一些最有代表性的項(xiàng)目(Lambdas及新的Data/Time API)也是在距離計(jì)劃日期還有幾年時(shí)就提交了。
以前,在面對(duì)此類情況時(shí),為了嚴(yán)格按照計(jì)劃進(jìn)行,Oracle會(huì)縮小范圍。Mark Reinhold是Oracle Java平臺(tái)組的首席架構(gòu)師,他先前曾說(shuō):
最好是將Java開(kāi)發(fā)過(guò)程構(gòu)造成一個(gè)持續(xù)創(chuàng)新的管道。該管道與定期的、有節(jié)奏的發(fā)布過(guò)程只是松耦合的關(guān)系。如果一個(gè)主要特性錯(cuò)過(guò)了預(yù)期的“發(fā)布列車(release train)”,那雖然遺憾,但卻也并不是世界末日:它將搭上下一趟列車,這一趟也會(huì)在一個(gè)可預(yù)見(jiàn)的時(shí)間發(fā)出。
對(duì)于長(zhǎng)期使用Java的開(kāi)發(fā)者而言,這樣兩年一個(gè)周期并不令人意外。如表1所示,Java的早期版本也是按這種節(jié)奏發(fā)布的。時(shí)間表管理的主要不同在于不同Java版本的發(fā)布間隔縮短:Oracle的目標(biāo)是每個(gè)Java版本有三年的公共使用壽命,這大約只有Java早期版本的一半。這項(xiàng)計(jì)劃意味著,用戶只有一年的時(shí)間從一個(gè)主要版本遷移到下一個(gè)版本,除非他購(gòu)買了商業(yè)支持。
版本 | 正式發(fā)布日期 | 停用日期 | 使用壽命 | 距離上個(gè)版本 | 與上個(gè)版本共存 |
3(1.3) | 2000.5 | 2006 | 6 | 2 | -- |
4(1.4) | 2002.2 | 2008.10 | 6 | 2 | 4 |
5 | 2004.5 | 2009.12 | 5 | 2 | 4 |
6 | 2006.12 | 2013.2 | 6 | 2 | 3 |
7 | 2011.7 | 2015.4 | 4 | 5 | 1.5 |
8 | 2014.3 | 2017.5* | 3 | 3 | 1 |
9 | 2016.9* | 待定 | 待定 | 2 | 1 |
表1.不同Java版本的正式發(fā)布及停用日期,“*”表示計(jì)劃日期。(數(shù)據(jù)來(lái)源)
由于只有一年的時(shí)間從一個(gè)Java版本升級(jí)到下一個(gè)版本,所以建議Java社區(qū)中的開(kāi)發(fā)者盡早使用新版本測(cè)試他們的工具和庫(kù)。Mani Sarkar是Adopt OpenJDK項(xiàng)目的負(fù)責(zé)人,他說(shuō):
為了將測(cè)試流程帶給社區(qū),實(shí)現(xiàn)早測(cè)試早反饋,由@LJCJug和OpenJDK(也就是Oracle)支持的“Java測(cè)試”項(xiàng)目已經(jīng)啟動(dòng)。借助該項(xiàng)目,開(kāi)發(fā)者可以修復(fù)任何問(wèn)題,或者改變他們的工具在Java 9上的工作方式,或者相反,找出并修復(fù)JDK本身的問(wèn)題。