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