Java最近风波不断,Horowitz的博客《Java:不用就卸载吧!》劝诫用户***卸载Java来保证计算机的安全;接着,苹果在“Back to Mac”发布会上称可能放弃Java;Java之父Gosling昨天也在博客上对以上事件作出了自己的回应。
事实是,以上所提到的一切都围绕着Java的更新、知识产权和版本分支;这也是一直困扰Java社区的烦恼,无论是Sun时代还是Oracle时代。在这些纷乱的背后,另一个依托于巨人IBM 的做法值得玩味,以下是来自《中国计算机报》一篇报道。
Java前途未卜的状况似乎正在因IBM发布的一则消息发生改观。据国外媒体10月12日报道,IBM将把与Java开发有关的工作从Apache Harmony项目转向OpenJDK,详细请参考51CTO的报道《IBM加入OpenJDK 将联手Oracle发展Java技术》。按照IBM的官方说法,这一举措“消除了Java未来发展的一些不确定性”。然而,这样留有余地的说法依然不能让开发者完全消除疑虑。
要说清楚疑虑何在,不妨从一些分裂Java的江湖事件说起。开发人员常用的JDK(Java开发套件)是Java的核心所在,但并不意味着只有Sun(现并入Oracle)开发的JDK才是唯一的正宗,比如早期Oracle、IBM以及基于GNU开源的Kaffe、OpenJDK都获得了授权,因此它们也被称为JDK,在性能上还互补。
但还有一个名气很大的另类,那就是基于Apache协议的Harmony,它非但没有获得早期Sun的认可,还一度与Sun翻了脸。Apache 软件基金会执行官2007年在其官方网站上发表一封公开信,拒绝接受Sun提供的关于JCP的许可证条款。遗憾的是,直到被收购,Sun也没有做出官方回应,不知是它不屑于这样做,还是早已焦头烂额,暂且容忍了这个不服管理的“愣头小子”。有意思的是,这封信中提到,该项目最初是由IBM捐献出来的,显然,潜台词是“不要跟IBM过不去”。
在支持Java方面,IBM一直坚定地与Sun站在一起,并从中受益。而现在情况发生了微妙变化,Sun的东家换成了Oracle,这个试图全面掌控Java并让它孵出金蛋的东家充当起发难者的角色。
比较来看,Sun是硬件思维,开源Java是在开源Solaris之后做出的决策,其本意在于迅速扩大Java的应用领域,进而产生连带效应,因为深度优化的***匹配可吸引客户选择其SPARC服务器。从这个意义上讲,IBM是Sun的同盟军。而现在,Oracle是软件思维,它非常看重当年没有被Sun找到合理商业模式的Java。IBM此时是与Oracle全面竞争的对手,大量应用Java成了IBM的软肋,Oracle当然会费尽心思,利用保留下的Java控制权来遏制IBM的业务发展。
那Oracle又为何先从对付Google入手呢(Oracle在今年8月控告Google侵犯Java产权)?这其实是项庄舞剑,意在沛公。谷歌的Android系统使用的是Java语法+Java核心类库+Android类库+Android虚拟机,正是借助Harmony,Google才有可能那么快发布Android。只不过,Google打了擦边球,让Sun吃了哑巴亏。可这一Java阵营中最彻底的分裂举动是Java江湖走向多极化的先兆,如果放任不管,很难说苹果这样的厂商不会走上类似道路。Oracle可不容别人挑战自己的地位,并且捧着自己的饭碗赚钱。更重要的是,敲打Google连带着警告Harmony和背后的IBM,还免去了直接与IBM交手,这比撕破脸皮的代价小多了。
从IBM宣布的Java项目迁移的消息来看,Oracle的招数奏效了,IBM这次妥协了。然而,这种妥协没有办法换来***的和平, Java未来还将面临太多变数。
关于Apache Harmony
Apache Harmony在2005年5月提案并被Apache软件基金会(ASF)接受,并且按照ASF惯例成为一个孵化器(incubator)项目。
Harmony为自己定了两个目标,首先是开发出一个独立并且与现有JDK兼容的Java SE 5实现,并且以Apache软件许可证2.0版发行;其次是建立一个开放的模块化运行时架构,包括虚拟机和类库之间及其内部的模块化,并通过这个平台,允许社区在此基础上自由定制自己的Java实现,或者对某个模块单独进行创新。
Apache Harmony 项目的成立以及它的这两个目标具有很大的现实意义。首先,由于商业 JDK 的流行性,它们几乎成为事实上的标准,所以Harmony必须与它们保持高度的兼容,才能够使应用程序的迁移成本***,也就相对容易被用户所接受;其次,Harmony存在的重要意义之一就在于这是一个属于开源社区的 Java 平台,在这个平台上,社区可以自由的移植和创新,而一个开放的模块化的架构,将为移植和创新带来***的便利性;***,Apache软件许可证是一个对商业公司和开源社区都比较友好的开源许可证,因此Harmony可以给***范围的开发人员和用户带来便利。本文和本系列后续文章将详细介绍Harmony在兼容性和模块化方面的努力,以及这些目标带来的价值。
在技术方面,Apache Harmony非常注重模块化,与所有其他 Java SE 实现类似的是,Harmony从大体上可以分为三个层次,最下层是操作系统,中间是Java虚拟机,最上层是Java类库。
【编辑推荐】