Android,Harmony 及 Java 的未來
如果你看過之前的文章,應該對 Oracle 狀告 Google 侵犯專利有所了解。上次事件之后,Google 顯然沒有服軟,接著,Oracle 指出 Google 的 Android 平臺偷竊 Java 代碼,將事情推向了另一個高度。今日,JCP 重要成員 Apache 基金會宣布,如果 Oracle 不給 Harmony 提供兼容性測試,將退出 JCP,并號召其它成員抵制 Java7。所有這些事件不僅是對 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 帶來商業利益,而且可能造成平臺分裂。