【IT168 评论】近来,围绕着Java的战争似乎从来就没有停止过。先是甲骨文与谷歌反目,后是JCP 重要成员 Apache 基金会宣布,如果 Oracle 不给 Harmony 提供兼容性测试,将退出 JCP,并号召其它成员抵制 Java 7。这样一来,问题的矛头直指Java 7。
而就在近日,甲骨文宣布,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 带来商业利益,而且可能造成平台分裂。