而就在近日,甲骨文宣布,Java 7將于2011年7月28日推出。甲骨文同時表示,公司已于昨天向Javap社區進程執行委員會提交了Java 7 和8的信息,并等待批準。Java平臺首席架構官馬克•萊因霍爾德在其博客中表示,兩周內將會得到結果。
幾方面的信息匯總在一起,就不禁讓人產生聯想:Java 7的到來會不會是Java走向分裂的開始?
禍起兼容
說起兼容性,還得從Java語言本身談起。Java語言從誕生之日起,就被下了一個定義:一次編寫,到處運行。事實上,此言非虛。
Java 號稱是跨平臺的語言,簡單的說,它是在不同平臺之間搭建一個相同的軟件運行環境。或說是 Java 虛擬機。虛擬機起到一個承上啟下的作用,開發者不用考慮平臺,只要保證自己的程序能夠在虛擬機上運行,而實際的硬件操作由虛擬機聯系操作系統完成。
Java 原本屬于 Sun 公司。Sun 一直是一個在商業和開源之間走著平衡的公司。雖然,Sun 開發了大部分的 Java 平臺代碼,但任何公司的平臺,如果想要運行 Java 程序,仍就必須購買 Java 虛擬機的使用權,這涉及到安全和技術支持問題。
但規律之外總有特殊,Apache 基金會的 Harmony 計劃就是這個規律之外的特殊,原因就在于Harmony 計劃的目的在于使得Java 平臺脫離 Sun 的控制,獲得充分的自由。對此 Sun 自然不會很高興,一是商業原因,二是可能產生的平臺分裂。因此,Sun 雖然沒有起訴 Apache 基金會,卻一直沒有給 Harmony 提供兼容測試,同時 Sun 在 Java 平臺的使用上有限制,因此 Harmony 的代碼是不能使用到手機上的,當然 Apache 也沒有這個計劃,所以事情就擱置了下來,直到 Android 的出現。
Android 的 Dalvik 虛擬機運行的不是 Java 程序,但谷歌為了吸引 Java 程序員,允許 程序員使用 Android 的SDK 將 Java 代碼轉換成 Dalvik 可以運行的代碼。谷歌之所以能夠達到目的,就是利用了Harmony中的開源 Java 庫來實現 Java 程序的轉換,避開了授權費用。這意味著開發者可以使用 Java 語言為非 Java 平臺開發程序,Android 的火爆發展不能給 Sun 帶來商業利益,而且可能造成平臺分裂。
Java 7會不會成為導火索
自從 Oracle 掌權 Java 之后,JCP 便逐漸為 Oracle 所拋棄,這意味著 Oracle 要獨自控制 Java 平臺。做為 JCP 一員的 Apache 基金會已經無法影響 Java 的方向,它的 Java 開源實現 Harmony 也被 Oracle 拒之門外,因此,Apache 基金會的存在只是一個形式而已。
因此,甲骨文與谷歌反目,直接沖擊的就是Apache 基金會。Oracle 拒絕給 Harmony 提供兼容測試,這意味著 Harmony 與 Java 平臺的徹底分裂,隨著 Java 7 的到來,這個問題將更加嚴重。這是否意味著 Java 語言升級之后,Google 不得不重新編寫底層代碼已適應新的 Java 語言,但是 Google 這將是一項耗時費力的艱苦工作,而自己編寫的實現也許會再次遭到 Oracle 的起訴,因為 Oracle 已經推出自己的開發環境 OpenJDK,獲得了 IBM 和蘋果的支持。
Apache 基金會目前已經正式聲明,號召其他成員抵制 Java7,如果 Oracle 不提供 Harmony的兼容性測試,將退出 JCP,這意味著 JCP 內一個最大的開源勢力推出 Java,下一步便是徹底的決裂。
需要注意的是,在Tiobe發布的最新一期的編程語言排行榜上,位列第一位的依然是Java語言。但眾所周知,開發領域正面臨一次革命性的遷移。原來的 應用更多地跑在PC機上,而未來各類應用將更多地跑在各類移動設備上。比起僅有10億臺PC規模的互聯網時代,擁有百億臺設備規模的移動互聯網時代,其發 展速度將快于桌面互聯網,其規模將大得超乎多數人的想象。
在這個背景之下看Java的發展,在這次遷移當中,Java本來就可能面對各類新興開發語言的沖擊。雖然蘋果支持Java7,但蘋果有自己的Objective-C,并且隨著iOS的火爆,Objective-C的地位可以說是在直線上升。
Adobe首席技術官凱文 林奇認為,Android系統的增長將會再次超過業界預期,在未來半年內,其將占據智能手機市場50%的份額。近管數字會有出入,但有一點是肯定的:Android系統一定會成為業界的主流操作系統。
這樣一來,在移動應用開發領域,Java就不得不面臨iOS與Android兩大主流系統的競爭。在桌面和服務器端,從Tiobe排行上來看,PHP等語言的上升勢頭也非常猛。
面對這種情況,也許我們已經可以大膽斷言:Java保持了多年的老大位子,會不會隨著Java 7的到來而丟掉。也許,在以前的多少年內,這還只是一種推測,而在接下來的時間內,這可能將成為現實了。
本文鏈接:http://tech.it168.com/a2010/1123/1129/000001129304_1.shtml