JDK 7一再延期的背景披露以及OpenJDK的尷尬
本文來自InfoQ的宋瑋在2009年1月翻譯的一篇文章,原文地址在http://www.infoq.com/cn/news/2009/01/jdk-openjdk-icedtea。文章對于當時Sun的JDK 7、OpenJDK及IcedTea三個項目之間的關系與進展情況進行了一番介紹。
51CTO編輯推薦:Java 7特別專題
由于JDK 7、OpenJDK和IcedTea都是并行發展的,它們之間到底是什么關系很容易讓人迷惑。OpenJDK的質量主管David Herron,試圖澄清相關情況并解釋為什么JDK 7花費了這么長時間。
David先描述了OpenJDK 6和JDK 6之間的不同:
OpenJDK 6是OpenJDK 7的一個分支,為了通過JCK 6測試條件的檢驗,我們團隊從OpenJDK 7分支上剝離出了很多代碼,直到它符合Java 6規范為止。 關鍵是OpenJDK 6工作得非常好,好幾個Linux的發行版都使用它作為其JDK,它能夠通過JCK6測試套件的測試,這意味著OpenJDK 6可以被用來構建一個兼容的JDK,但是很不幸,我們所希望的這種進化軌跡相對來說是短期的。它服務于一個目的,即,擁有一個兼容Java6的完全開放的 OpenJDK。
接著,他談到了OpenJDK和IcedTea的關系:
看上去有些人非常喜歡用“./configure”而不是設置環境變量,并運行“make”。IcedTea項目最初是由于OpenJDK不完整(因產權 而造成的障礙)而創立的,社區需要一個完整的開源工具鏈及代碼庫。IcedTea長期以來一直是OpenJDK的一套補丁,正如剛才我所說到的,它有一個 基于“./configure”的不同的構建系統。 在OpenJDK中,我們已經替換了產權代碼(encumbered code),因此不再有障礙了。正因為我們的努力,IcedTea項目已經減少了使用補丁的數量。IcedTea中看上去不錯的一點是,它的 configure腳本使得在多種不同的模式下構建OpenJDK變得很容易,比如使用Zero Assembler Port在非x86/sparc芯片上來支持編譯等等。 IcedTea提供的一大塊內容是plugin/java-web-start基礎架構。我們還沒有把我們的plugin開源,并且對于6u10我們重寫 了該plugin。人們都希望把新plugin開源給OpenJDK項目,但是據我所知,這一決定還沒有提到議事日程。
David表示JDK 7和OpenJDK 7將擁有(幾乎)同一個代碼庫:
……計劃OpenJDK 7/JDK 7的起點代碼庫將幾乎一樣。維護分支顯然是昂貴的,如果JDK 7與OpenJDK 7差異太大,會導致兩個結果:a)非常 昂貴,b)破壞我們在開源生態系統上所做的努力。 但是“幾乎一樣”代表著還是有一些不同。 還記得因產權而造成的障礙嗎?其中有一些是截至2007年5月之前不能開源的代碼(現在已經可以開源了),而另一些則還未得到同意(比如SNMP),但是 有一些開源代碼可以替換我們仍在使用的老的還未開源的那一部分代碼。這些主要集中在字體及圖形光柵部分。這些老的未開源光柵代碼,盡管是有產權的且經過了 10余年的修正和精調(有較好的質量質量保證),但是對于產生JDK構建的開源替代品來說,它們與現存非開源代碼一樣快速、穩定且擁有非常好的質量。
按照David的說法,OpenJDK源碼發布、JavaFX以及整體資源不足是導致JDK 7花了這么長時間的原因:
要是我們按照正常模式走,JDK 7現在就應該已經出來了。即,Java 6是于2006年12月發布的,而我們的正常模式是兩個主版本之間間隔18-24個月,這意味著JDK 7應該在2-5個月之前就已經發布了。到底怎么回事呢?很明顯是幾個方面的資源短缺。 比如,2007年5月發布的近乎完整的OpenJDK源碼花費了大量人力物力。但是在2007年5月的JavaONE大會上又宣布了一個產品(一個叫做JavaFX的小家伙),它又變成了對Java的一個較大調整(正如一些人所說,它不是原來那個Java了),而且也耗費了大量的工作。 換句話說,生產JDK7的時間被用來做JDK6u10和JavaFX了。
#t#Joe Winchester最近在Java Developers Journal的一篇文章上表達了關于JavaFX減緩了平臺發展的類似主張,他將Java采用動態語言和類似JavaFX的技術,與90年代 Smalltalk團隊要把Java運行在其VM(叫做統一VM—— Universal VM)上所做的努力進行了對比。該作者指出,就像Smalltalk的情況一樣,***應該把精力集中在Java自身上,“而不是擴充JVM把它變成萬金油 ”。
還要注意的是OpenJDK理事會即將壽終就寢,像Neal Gafter這樣的人還關心著該組織新的組成形式:
OpenJDK理事會已經延期一年了,在4個月之內就要解散,有兩個非Sun的位置仍然空缺。2008年4月公布的最近一次會議備忘錄中,大家一致同意在2008年底之前起草出憲章草案。 理事會的七個成員都是誰?我們能夠看到4月之后的會議備忘錄并獲得憲章方面的現狀報告嗎?
你怎么看Sun的JDK以及開源Java的未來呢?