Android,Harmony 及 Java 的未来

14年前

如果你看过之前的文章,应该对 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 带来商业利益,而且可能造成平台分裂。