近来,围绕着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 带来商业利益,而且可能造成平台分裂。 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的到来而丢掉。也许,在以前的多少年内,这还只是一种推测,而在接下来的时间内,这可能将成为现实了。 |