Yet Another Hype - Why Harmony matters?

我们已经可以免费使用Sun JDK, IBM JDK, BEA JRockit;我们只要愿意对着SCSL点个头,就可以看到Sun JDK的源码;我们甚至可以看到每天Mustang的进度,对它指手画脚,如果运气好,还可以让自己的修改被接受到正式版本里面去, 为什么我们需要Harmony?

不仅仅如此,即使是一个自由信仰者,我们还有API覆盖率99%的GNU Classpath,加上一个很不错的虚拟机Kaffe, 还有实验室里出来的先进玩意儿Jikes, 为什么我们还需要Harmony?

不仅仅如此,就算不用Java, 我们还有很多选择,C#, Ruby, Python, PHP, ..., 为什么我们还需要一个Harmony?

Why Harmony matters? 希望下面这些不成熟的想法可以帮助回答以上这些问题。

恩,一切的前提是,Java does matter, 尽管受到C#和各种动态语言的挑战,但是相信数以百万计的Java程序员和成功的把JRE安装到数以亿计的设备上的厂商们都不愿意看到Java sunset。然而,过了10岁生日的Java确实略显疲态,Sun牢牢把持着的JCP一度对推动Java发展起到了巨大的作用,但是到了今天,已近很难说JCP的正反两方面哪个作用谁更大了。我们能看到的是,在EE领域,大厂商们力推的EJB1.x, 2.x几乎被公认带来的问题比解决的多,而来自开源社区的Spring/Hibernate已经登堂入室成为主流;JSP/JSTL从来没有成气候,JSF也还前途未卜,来自开源社区的先是Struts后是Webwork还有为数众多的开源框架红红火火。Java SE和Java语言本身,从前是C#学习Java,现在是Java倒过来向C#学习,而且从log4j到java.util.logging, 从Xdoclet到annotation, 从mixin到generics,从Rhino到Java动态语言支持,从AspectJ到...(instrumentation?),一次又一次,是JCP在拖着Java前进的后腿。

除了Java语言本身,Java的license也够让人郁闷的,基于Java的开源/自由软件如恒河杀数,Linux发行版居然不能redistribute JRE...FreeBSD直到最近才成功解决许可证问题发布了该平台的JDK/JRE...而GNU自己的努力GNU Classpath, 又因为许可证问题至今未能运行TCK认证,也就不能让被承认是兼容的JSE类库实现从而进入企业市场。

几年以来,从社区到Java阵营的大小公司,呼吁Sun开源Java(其实是呼吁放松对Java的控制权)的声音越来越强烈,然而Sun一直以保持兼容性,避免fork的名义拒绝,但是事实是,Sun的做法激发了Harmony的出现,也就是说,Sun的政策将促成事实上的fork。

Harmony的提案是社区的自发力量促成的,充分说明了对它的需求是无法回避的,毕竟谁愿意去重新发明了一个还过得去的(而且是巨大的)轮子呢? Harmony被ASF接受仅仅一年多一点,就接受了三个JVM的捐献,还促使SableVM重新license为Apache许可证并且密切合作,JSE 5类库的API覆盖率已经超过79%,这一切足以让人侧目。不仅仅如此,Intel和IBM都组建了全职软件开发团队参与(区区在下也有幸忝居IBM中国开发中心Harmony开发团队之中),此外Harmony还得到了社区,大学,个人的广泛支持。Harmony是冲着TCK去的(它正在努力争取TCK的许可证), 而且有充分的理由相信Harmony最终将会通过TCK,这一天的到来只是时间问题(当然,我的意思是在可以接受的时间内),因为Harmony背后有真实存在的需求,也就因此有了强大的推动力,社区需求和商业利益结合在一起的巨大力量这些年来已经多次被证实。而且Harmony的Apache许可证是一个对于商业公司和社区都很友好的license。让我们幻想那么一天,Harmony通过TCK之后,RedHat,BEA, IBM都在说,我们无所不能的应用服务器当然可以和Java SE的Reference Implementation(Sun JDK)良好合作,但是和更快更强大更稳定的Harmony一起将工作的更好;而Intel在说,我们新的符合摩尔定律的CPU(尽管可能性不大了)可以完美的支持Java应用, 尤其是可以更完美的支持在Harmony上运行的Java应用;Nokia在说,购买我们的手持设备,您可以加2美元加装OEM的Sun JRE以运行丰富多彩的Java程序,但是也可以不花一分钱使用甚至更出色的更小更快(因为是定制过的)的HarmonyRE...到了那一天,事实上的fork就出现了,Sun的保持兼容,避免fork的借口,将显得非常苍白。

于是Sun终于宣布要开源Java了! 在Harmony宣布得到AWT/SWING/Java2D类库的捐献从而将API覆盖率提高了50多个百分点的几乎同时,它宣布开源Java的问题"is not whether, but how",之后短短一个多月进入了前赴后继的hype工作,这一切将会发生"in months",旋又澄清说是"double digits months",旋又说是"pretty quickly",how about compatibility and fork issue then? well, Sun现在认为Java拥有比其他大多数开源软件都要好的兼容性测试,而且数量巨大的Java应用将形成合力推动Java实现的兼容,所以这虽然是个重要的问题,但是是可控的...

Sun还说,GPL "very much on the desk"。但是为什么我要质疑Sun考虑GPL的动机?因为屁股决定脑袋:). 屁股决定脑袋的意思是说,我主观的认为Harmony的快速发展是促使Sun最终决心开源Java的原因之一。屁股决定脑袋的另一层意思是说,我因此觉得Sun并不想真的放弃Java的控制权,如果Sun要求所有的参与者与它共享copyright,我不会感到奇怪;如果它开始不停的在新的Java发行版加入新功能,我不会觉得奇怪;如果它把TCK和认证流程搞的越来越严格和细致,我也不会觉得奇怪,毕竟这都是不错的事情,毕竟所有的用户都希望有自己的Java程序在任何平台任何JVM上都表现出一样的行为,我甚至怀疑Sun已经开始这么做了。而且如果Sun把Java以GPL开放出来,我更不会奇怪,因为GPL是最有可能让手持设备和嵌入式平台厂商犹豫的license,那么就可能不会有很多的GPL嵌入式JVM出现在市场上,那么很有可能手持设备厂商就还是要找个什么人来拿到JRE的license。但愿我是小人之心了...

相比于把希望寄托在Sun身上,我更愿意看到Harmony真的bring harmony to Java,Harmony does matter, Harmony已经可以良好运行Eclipse和JEdit, 基本上可以运行Tomcat, Geronimo还在努力中,Harmony还有20%多的API要完成,虚拟机和类库的集成还在进行中,更加重要也很可能更艰难的是,Harmony需要让更多用户认可,需要一个比现在的开发社区广泛的多的用户社区(当然也要一个比现在更广泛的开发社区)。Harmony将会是属于社区的,一个对任何人都法律上友好的,高度模块化从而高度可定制和可移植的,兼容的Java SE实现,而要到这一天,还有许多路要走。

你可能感兴趣的:(java,jdk,IBM,企业应用,sun)