Java 7,一個技術標準的商業咒語
原創【51CTO觀察】我們一直在關注Java 7,對于Java這樣占據軟件開發領域半壁江山的技術平臺,沒人會忽略它的新版本。但對于一門技術,特別是IT技術,使用者和擁有者卻有截然不同的理解。開發者的期望往往是更高效、更方便,更貼合當前應用場景的進化需求,也就是提高軟件開發者的生產力。而對于持有技術標準的廠商而言,Java要比其自身技術的結構、語法和特性要復雜得多,是商業利益和競爭的砝碼。一再延期的Java 7就是這樣一個被施了商業咒語的技術標準。
在進一步說明之前,我們必須明確Java標準的兩個重要組成部分——JCP和JSR。JCP(Java Community Process)是一個類似ISO標準委員會的組織,Java的一切標準化工作由JCP負責。JSR(Java Specification Requests)是Java請求規范,每一個JSR規范都包括一些Java技術細則、參考實現(RI)和一個兼容性測試工具(TCK)組成。Java標準的每一項新的功能組成由JSR來封裝后遞交JCP審核。
如果某個社區或廠商希望Java增加一項功能,那就需要向JCP提交JSR并等待JCP的執行委員會投票通過并建立這個Java規范。51CTO之前所報道的《Java 7已經完成的七大新功能預覽》中所提到的新功能都是通過JSR提交并得到JCP同意之后才實現的。
對于Java的發展而言,JCP的權利極大,它可以決定一項Java規范是否會出現在下一個版本的Java標準中,也可以決定下一個標準對怎樣的應用開發更有利。這其中的關鍵就是,JCP被誰所控制。JCP由Sun一手創建的,用來發展和更新Java技術規范、參考實現(RI)、技術兼容包(TCK),Sun被Oracle收購后,JCP也由Oracle接手。
事實上,在Oracle收購Sun之前,眾多的Java開發者及已經開始紛紛逃離JCP而轉換到一些小型的論壇。大批逃離者稱,JCP已經失去了它的吸引力,它不再是被當成響應和解決Java開發者問題的社區,相反,JCP已經成為被一些大公司所利用JSP通過的橡皮圖章。這些大公司憑著自身的影響和力量來指定各種規范從而達到滿足自己的利益。整個JCP更像是一個商業擂臺,多位法師念出自己的咒語試圖在Java技術的發展中對自己有利。
這一切在Oracle接手Sun之后變得更糟。在Sun和Apache基金會之間,關于JDK規范應用范圍的紛爭由來已久。之前Sun考慮到Java ME在授權方面的收入,不愿意為Apache提供一個公平的競爭環境。目前大熱的Google Android系統之所以會選擇Dalvik虛擬機也是這個原因。類似的商業博弈和爭論在Oracle接手JCP后沒有改變,只是變得更為直接。
目前,Java 7的JSR的官方規范還從未被Sun或Oracle提交給JCP。Sun的工程師還沒有啟動OpenJDK JDK 7中的Java 7功能規劃。恰恰在這段時間,我們聽到各種技術項目的決策(不引入閉包,引入閉包,等等)。目前,大部分已有的功能還處于功能級別以下(under feature-level specs),所以,我們看到51CTO.com上周所報道的新聞《Java 7未按時發布 計劃再次延期》。
注:這里所提到的OpenJDK JDK 7是目前正在進行的Java 7規范項目,由Oracle/Sun推動。OpenJDK之前稱為Sun JDK,是由JCP定義的規范,是Java實現的官方參考。
在之前公開的日程表中,JDK 7功能完成版是在6月3日完成,最終的里程碑版本是在9月9日發布(正好趕在由Oracle舉辦的JavaOne大會之前)。如果我們相信這份安排,JDK 7將在今年年底的某一天完成。但這是JDK 7,對于Oracle這樣一家極其依賴企業級Java中間件的軟件廠商而言,在沒有穩妥的解決Java 7規范的問題前,我們很難看到它正式發布。
OpenJDK上關于JDK 7的發布安排
沒有標準的Java,沒有“write once,run anywhere”。在Java 7規范方面,Oracle不愿看到由其他JDK/JVM實現者提出的未定義功能;其他需要在Java平臺上收獲利益的廠商也無法忍受某一方對Java標準的獨裁。這一切紛爭或許會導致Java規范的第二次分裂危機。而一切喧鬧的背后是默默注視和等待的開發者。
這一切就像一個咒語,不斷影響Java技術以一種偏離正確坐標的方向前進。
【編輯推薦】