Apache退出JCP 對Java和Android影響深遠
51CTO之前的報道《Oracle和JCP成員之間的Java戰爭一觸即發》的預言已經應驗。而在Android中起著重要作用的Java語言和Apache的Harmony項目正在為這場戰爭推波助瀾。近日,JCP 重要成員 Apache 基金會宣布,如果 Oracle 不給 Harmony 提供兼容性測試,將退出 JCP,并號召其它成員抵制Java 7 。所有這些事件不僅是對 Google 的威脅和打擊,而且直接關系到 Android 與 Java 語言的前途。
自由的語言,不自由的平臺
Java 號稱是跨平臺的語言,簡單的說,它是在不同平臺之間搭建一個相同的軟件運行環境。或說是 Java 虛擬機。虛擬機起到一個承上啟下的作用,開發者不用考慮平臺,只要保證自己的程序能夠在虛擬機上運行,而實際的硬件操作由虛擬機聯系操作系統完成。
Java 原本屬于 Sun 公司。Sun 一直是一個在商業和開源之間走著平衡的公司。雖然,Sun 開發了大部分的 Java 平臺代碼,但任何公司的平臺,如果想要運行 Java 程序,仍就必須購買 Java 虛擬機的使用權,這涉及到安全和技術支持問題。從手機平臺來說,諾基亞、RIM 等公司的手機平臺都支持 Java 程序,就是因為它購買了 Java 虛擬機的使用權。
Apache基金會的Harmony
Apache 基金會的 Harmony 計劃是試圖提供一個 Java 的開源實現,就是說試圖使 Java 平臺脫離 Sun 的控制,獲得充分的自由。這就是Harmony 計劃產生的原因,對此 Sun 自然不會很高興,一是商業原因,二是可能產生的平臺分裂。因此,Sun 雖然沒有起訴 Apache 基金會,卻一直沒有給 Harmony 提供兼容測試,同時 Sun 在 Java 平臺的使用上有限制,因此 Harmony 的代碼是不能使用到手機上的,當然 Apache 也沒有這個計劃,所以事情就擱置了下來,直到 Android 的出現。
Android之道
Android 的 Dalvik 虛擬機運行的不是 Java 程序,可以說 Dalvik 完全可以運行其它語言開發的程序,但是 Google 為了吸引 Java 程序員,允許 程序員使用 Android 的SDK 將 Java 代碼轉換成 Dalvik 可以運行的代碼。它是如何實現的呢?Google 在開發 Android 的時候,雇傭了 Sun 的一些程序員,利用 Harmony 中的開源 Java 庫來實現 Java 程序的轉換,避開了授權費用。這意味著開發者可以使用 Java 語言為非 Java 平臺開發程序,Android 的火爆發展不能給 Sun 帶來商業利益,而且可能造成平臺分裂。
Java 7的到來和Apache 的反抗
自從 Oracle 掌權 Java 之后,JCP 便逐漸為 Oracle 所拋棄,這意味著 Oracle 要獨自控制 Java 平臺。做為 JCP 一員的 Apache 基金會已經無法影響 Java 的方向,它的 Java 開源實現 Harmony 也被 Oracle 拒之門外,因此,Apache 基金會的存在只是一個形式而已。
Oracle 拒絕給 Harmony 提供兼容測試,這意味著 Harmony 與 Java 平臺的徹底分裂,隨著 Java 7 的到來,這個問題將更加嚴重。這是否意味著 Java 語言升級之后,Google 不得不重新編寫底層代碼已適應新的 Java 語言,但是 Google 這將是一項耗時費力的艱苦工作,而自己編寫的實現也許會再次遭到 Oracle 的起訴,因為 Oracle 已經推出自己的開發環境 OpenJDK,獲得了 IBM 和蘋果的支持。
Apache 基金會目前已經正式聲明,號召其他成員抵制 Java7,如果 Oracle 不提供 Harmony的兼容性測試,將退出 JCP,這意味著 JCP 內一個***的開源勢力推出 Java,下一步便是徹底的決裂,這對 Google 會產生什么影響,仍無法預料。
法律和技術的雙重困境
Android 已經成為 Google 的收入生命線,Google 自然不會讓步,在最近的回擊中,Google 指出,即使存在侵權(或抄襲)的可能,也應該由第三方負責,因為 Google 使用的是第三方的開源實現。法律問題先放在一邊,從技術上來說,Google 也面臨著困境,因為 Android 的開發者使用的是 Java 語言,如果失去官方提供的支持,將是一個嚴重的問題。
Java陷阱
開源***Ricard Stallman 早就指出Java 是“帶著鐐銬的自由”(Free but shackled),警告開發者謹防 Java 陷阱。此后,Sun 開源了大部分的 Java 實現代碼,因此 Java 陷阱已經可以避免,但仍然要注意使用完全自由的平臺,因為并非所有的平臺都是自由的。
如果 Google 收購 Sun,將 Java 收歸己有,或者當初與 Sun 達成協議,也許今天情形會不同。或著當初開發 Android 的時候,Google 應該培育自己的 Go 語言,而不是急于利用現有的 Java 開發者隊伍。Java 關于開放的說法只是一個假象,而如今 Java 易手,一切都改變了。
很難想象 Google 會放棄 Android 系統,問題是如何發展它。Java 將逐步脫離開源社區,淪為 Oracle 的生財之道,這是一個利益當頭、注重企業而不考慮個人開發者的公司,與 Java 的糾纏不清只能帶來更多的麻煩。
Android其實是在幫助Java
現有的智能手機平臺中,Java 已經不是開發者的***,iOS,MeeGo 都有自己的開發環境,WebOS 不需要 Java 實現,而 RIM 也在逐漸拋棄 Java,轉向 Adobe AIR,這意味著 Java 在手機市場的空間在逐步縮小。諷刺的是,現在 Android 的飛速發展反而有利于 Java 語言在手持領域的地位。如果 Google 拋棄 Java,是否 Java 將只能在低端機之間茍延殘喘,逐漸消亡呢?相信隨著 Web 開發技術的進步,HTML/CSS/Javascript這樣的網絡開發環境將成為網絡應用的***,而底層應用開發將會是 C/C++的天下。
Oracle的作法也許只是加速 Java 在手機領域的滅亡而已,當然是在它收完***一筆保護費之后。
【編輯推薦】