Java 新版本不是 JDK 1.9
JDK增強提案(JEP)223是一種新的JDK版本命名規(guī)則,旨在使主要版本、小版本及安全版本的辨認更簡單。它更簡單、更直觀、易于解析,并且與當前的行業(yè)做法一致,尤其是“語義版本命名(Semantic Versioning)”規(guī)則。例如,如果使用新的版本命名規(guī)則,版本字符串JDK 1.7.0_65-b20(7u65)將變成JDK 7.6.15+20(7.6.15)。
在現(xiàn)有的JDK版本命名規(guī)則中,“JDK 7 Update 65”、“JDK 1.7.0_65”和“JDK 7u65”是同一版本的不同名稱。要識別和比較這些版本,簡單地對解析出的標記逐點比較是不夠的,這需要一個相當復(fù)雜的算法。另外,小寫字母“u”既不是 行業(yè)標準,也不是語言無關(guān)的。在現(xiàn)有的JDK數(shù)字命名規(guī)則中,小版本是20的倍數(shù),它包含除安全修復(fù)之外的更新。安全版本是奇數(shù),在之前小版本的基礎(chǔ)上加 5或6得出。那些不熟悉這種數(shù)字命名規(guī)則的用戶可能會認為“JDK 7 Update 60”是“JDK 7 Update 55”之后的第五個版本,并且錯誤地認為前者有更多安全方面的修復(fù)。小版本和安全版本的這種用一個數(shù)值編碼的方法不容易辨認,而且也會跳過許多版本。
JEP 223的目標:版本應(yīng)該易于理解和解析,應(yīng)該與當前的語義版本命名這一行業(yè)做法一致,而且它應(yīng)該可供現(xiàn)有的打包和部署系統(tǒng)使用。該提案還將提供一個API,用于版本字符串解析、驗證和比較。改變先前JDK版本的版本字符串格式并不是該項提案的目標。
版本號是一個由非負整數(shù)組成的非空序列,由句點分隔。它不包含前導(dǎo)零,并且匹配正則表達式[1-9][0-9]*(\.(0|[1-9] [0-9]*))*。前三個基本部分是$MAJOR.$MINOR.$SECURITY。主要版本包含了新Java SE平臺規(guī)范所指定的重要新特性,其發(fā)布時$MAJOR會增加。小的更新版本可能包含兼容的Bug修復(fù)、修改了標準API以及實現(xiàn)了像新的垃圾收集器或支 持新硬件架構(gòu)這樣的新特性,其發(fā)布時$MINOR會增加。安全更新版本包含了重要的補丁,其發(fā)布時$SECURITY會增加。當$MAJOR增加 時,$MINOR和$SECURITY會重置為0。在$MAJOR值一定的情況下,不管$MINOR值是多少,$SECURITY值越大就表明它是一個更 安全的版本。
版本字符串由版本號、可選的預(yù)發(fā)布及構(gòu)建信息組成。預(yù)發(fā)布標識ea表示早期試用版本,正處于活躍開發(fā)狀態(tài)。每完成一次構(gòu)建,內(nèi)部版本號都會 增加,當版本號的任何部分增加時,內(nèi)部版本號都會重置為1。去掉尾隨零的版本字符串稱為短版本字符串。下表比較了JDK 9的兩種可能的版本字符串,包括現(xiàn)有格式和提案格式。請注意,現(xiàn)有的假定JDK版本號永遠以1開頭的代碼將無法正常工作。
Existing Proposed Release Type long short long short ------------ -------------------- -------------------- Early Access 1.9.0-ea-b19 9-ea 9.0.0-ea+19 9-ea Major 1.9.0-b100 9 9.0.0+100 9 Security #1 1.9.0_5-b20 9u5 9.0.1+20 9.0.1 Security #2 1.9.0_11-b12 9u11 9.0.2+12 9.0.2 Minor #1 1.9.0_20-b62 9u20 9.1.2+62 9.1.2 Security #3 1.9.0_25-b15 9u25 9.1.3+15 9.1.3 Security #4 1.9.0_31-b08 9u31 9.1.4+8 9.1.4 Minor #2 1.9.0_40-b45 9u40 9.2.4+45 9.2.4
該提案于2014年10月20日創(chuàng)建,現(xiàn)在處于候選狀態(tài),將隨JDK 9一起發(fā)布。要了解更多信息,包括一個JDK Java API示例,請閱讀JEP 223以及JBS(JDK Bug System)8061493。
查看英文原文:New Java Version - it's not JDK 1.9
原文鏈接:http://www.infoq.com/cn/news/2014/12/new-java-version-its-not-jdk19