Apache Harmony在努力创建J2SE 5规范的一个开源实现(基于Apache许可证)。目前项目可以同时在Windows和Linux平台上运行,95%的Java 5 API已经得到实现,且Tomcat和Eclipse等常用程序已经能在其上运行。
Harmony争论的焦点在于JCK许可证中的“使用领域”限制:“使用领域”限制是对用户如何使用某个软件的约束,可能间接也可能直接。举一个Sun/Apache论战的具体例子,如果Apache接受了Sun的条款,那么在一台标准的通用x86计算机(例如一台Dell台式机)上使用 Linux平台上标准且经过测试的Apache Harmony构建版的用户,可能将无法在如商场里的信息亭或机场的X光机这样的应用环境中免费使用这个软件和硬件。
InfoQ目前还无法取得JCK许可证,用以直接评论。但在对Magnusson的采访中,我们可以肯定“使用领域”限制是Harmony项目的唯一问题。为了阐明这些限制条款的基调,他写道: 我认为,如果你仔细阅读Sun的JDK许可证,你会发现他们在使用领域方面限制颇多:
http://java.sun.com/javase/6/jdk-6u1-license.txt
例如在第一段中:“程序”意指在可以在支持Java的通用台式电脑及服务器上的Java平台标准版(Java SE)之上运行的Java Applets和应用程序。
(请注意,从技术角度来说,你不能在笔记本电脑上运行Java SE。显而易见,这是一处纰漏。)
对于Harmony的言论,Sun显得非常诧异,并初步响应到:“Sun刚刚收到这封邮件,由于Sun先前已经认为这个问题属于机密问题,我们需要经过一段时间考虑才能给出更详细的答复。”
来自社区的反应褒贬不一,更多人倾向于站在Harmony一边。Sam Ruby对Harmony的立场表示支持,他写道:我由衷希望Jonathan尽快介入此事,因为只有他才能对贷帐栏中的短期利益和借帐栏中虚无缥缈的代价之间的权衡点做出决策。这里面的代价有(1)一股脑把Sun花时间经历辛苦经营起来的社区毁于一旦,(2)拿Java的未来做赌注,和(3)损害Sun自身在开放标准上的努力。这个请求/最后通牒看起来并不合理。是不是因为Apache Harmony马上就要完成,因此它已经准备好正式通过JCK了?项目网站上说,Java API的95%已经完成,但并不一定完全兼容。现在,这个Java平台完成了95%确实是一个重要的里程碑,Apache Harmony团队的开发人员应该因此受到大家的称颂,但在项目周期中这个节骨眼上,如果几千个JCK错误对于他们又多大用处呢?
我刚看了一下日历,发现从今天起算30天之后JavaOne正好开一半,恰好是Jonathan Schwartz主题演讲之后的两天。真相大白了!这和Apache Harmony团队能否有效工作无关——相反,这是Java工程师们不得不年复一年忍受的令人作呕的JavaOne市场策略。随着JavaOne日程日近,我觉得这个非难就不得不快点甩出。