本文来自InfoQ的宋玮在2009年1月翻译的一篇文章,原文地址在http://www.infoq.com/cn/news/2009/01/jdk-openjdk-icedtea。文章对于当时Sun的JDK 7、OpenJDK及IcedTea三个项目之间的关系与进展情况进行了一番介绍。
51CTO编辑推荐:Java 7特别专题
由于JDK 7、OpenJDK和IcedTea都是并行发展的,它们之间到底是什么关系很容易让人迷惑。OpenJDK的质量主管David Herron,试图澄清相关情况并解释为什么JDK 7花费了这么长时间。
David先描述了OpenJDK 6和JDK 6之间的不同:
OpenJDK 6是OpenJDK 7的一个分支,为了通过JCK 6测试条件的检验,我们团队从OpenJDK 7分支上剥离出了很多代码,直到它符合Java 6规范为止。 关键是OpenJDK 6工作得非常好,好几个Linux的发行版都使用它作为其JDK,它能够通过JCK6测试套件的测试,这意味着OpenJDK 6可以被用来构建一个兼容的JDK,但是很不幸,我们所希望的这种进化轨迹相对来说是短期的。它服务于一个目的,即,拥有一个兼容Java6的完全开放的 OpenJDK。
接着,他谈到了OpenJDK和IcedTea的关系:
看上去有些人非常喜欢用“./configure”而不是设置环境变量,并运行“make”。IcedTea项目最初是由于OpenJDK不完整(因产权 而造成的障碍)而创立的,社区需要一个完整的开源工具链及代码库。IcedTea长期以来一直是OpenJDK的一套补丁,正如刚才我所说到的,它有一个 基于“./configure”的不同的构建系统。 在OpenJDK中,我们已经替换了产权代码(encumbered code),因此不再有障碍了。正因为我们的努力,IcedTea项目已经减少了使用补丁的数量。IcedTea中看上去不错的一点是,它的 configure脚本使得在多种不同的模式下构建OpenJDK变得很容易,比如使用Zero Assembler Port在非x86/sparc芯片上来支持编译等等。 IcedTea提供的一大块内容是plugin/java-web-start基础架构。我们还没有把我们的plugin开源,并且对于6u10我们重写 了该plugin。人们都希望把新plugin开源给OpenJDK项目,但是据我所知,这一决定还没有提到议事日程。
David表示JDK 7和OpenJDK 7将拥有(几乎)同一个代码库:
……计划OpenJDK 7/JDK 7的起点代码库将几乎一样。维护分支显然是昂贵的,如果JDK 7与OpenJDK 7差异太大,会导致两个结果:a)非常 昂贵,b)破坏我们在开源生态系统上所做的努力。 但是“几乎一样”代表着还是有一些不同。 还记得因产权而造成的障碍吗?其中有一些是截至2007年5月之前不能开源的代码(现在已经可以开源了),而另一些则还未得到同意(比如SNMP),但是 有一些开源代码可以替换我们仍在使用的老的还未开源的那一部分代码。这些主要集中在字体及图形光栅部分。这些老的未开源光栅代码,尽管是有产权的且经过了 10余年的修正和精调(有较好的质量质量保证),但是对于产生JDK构建的开源替代品来说,它们与现存非开源代码一样快速、稳定且拥有非常好的质量。
按照David的说法,OpenJDK源码发布、JavaFX以及整体资源不足是导致JDK 7花了这么长时间的原因:
要是我们按照正常模式走,JDK 7现在就应该已经出来了。即,Java 6是于2006年12月发布的,而我们的正常模式是两个主版本之间间隔18-24个月,这意味着JDK 7应该在2-5个月之前就已经发布了。到底怎么回事呢?很明显是几个方面的资源短缺。 比如,2007年5月发布的近乎完整的OpenJDK源码花费了大量人力物力。但是在2007年5月的JavaONE大会上又宣布了一个产品(一个叫做JavaFX的小家伙),它又变成了对Java的一个较大调整(正如一些人所说,它不是原来那个Java了),而且也耗费了大量的工作。 换句话说,生产JDK7的时间被用来做JDK6u10和JavaFX了。
#t#Joe Winchester最近在Java Developers Journal的一篇文章上表达了关于JavaFX减缓了平台发展的类似主张,他将Java采用动态语言和类似JavaFX的技术,与90年代 Smalltalk团队要把Java运行在其VM(叫做统一VM—— Universal VM)上所做的努力进行了对比。该作者指出,就像Smalltalk的情况一样,***应该把精力集中在Java自身上,“而不是扩充JVM把它变成万金油 ”。
还要注意的是OpenJDK理事会即将寿终就寝,像Neal Gafter这样的人还关心着该组织新的组成形式:
OpenJDK理事会已经延期一年了,在4个月之内就要解散,有两个非Sun的位置仍然空缺。2008年4月公布的最近一次会议备忘录中,大家一致同意在2008年底之前起草出宪章草案。 理事会的七个成员都是谁?我们能够看到4月之后的会议备忘录并获得宪章方面的现状报告吗?
你怎么看Sun的JDK以及开源Java的未来呢?