2024年3月31日发(作者:)

浅析Sun的JDK7、OpenJDK及IcedTea关系与区别

由于JDK7、OpenJDK和IcedTea都是并行发展的,它们之间到底是什么关系很容易

让人迷惑。OpenJDK的质量主管David Herron,试图澄清相关情况并解释为什么JDK7

花费了这么长时间。

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表示JDK7和OpenJDK7将拥有(几乎)同一个代码库:

……计划OpenJDK7/JDK7的起点代码库将几乎一样。维护分支显然是昂贵的,如果

JDK7与OpenJDK7差异太大,会导致两个结果:a)非常 昂贵,b)破坏我们在开源生态系

统上所做的努力。 但是“几乎一样”代表着还是有一些不同。 还记得因产权而造成的障

碍吗?其中有一些是截至2007年5月之前不能开源的代码(现在已经可以开源了),而另

一些则还未得到同意(比如SNMP),但是 有一些开源代码可以替换我们仍在使用的老的

还未开源的那一部分代码。这些主要集中在字体及图形光栅部分。这些老的未开源光栅代

码,尽管是有产权的且经过了 10余年的修正和精调(有较好的质量质量保证),但是对于

产生JDK构建的开源替代品来说,它们与现存非开源代码一样快速、稳定且拥有非常好的

质量。

按照David的说法,OpenJDK源码发布、JavaFX以及整体资源不足是导致JDK7花

了这么长时间的原因:

要是我们按照正常模式走,JDK7现在就应该已经出来了。即,Java6是于2006年12

月发布的,而我们的正常模式是两个主版本之间间隔18-24个月,这意味着JDK7应该在

2-5个月之前就已经发布了。到底怎么回事呢?很明显是几个方面的资源短缺。 比如,2007

年5月发布的近乎完整的OpenJDK源码花费了大量人力物力。但是在2007年5月的

JavaONE大会上又宣布了一个产品(一个叫做JavaFX的小家伙),它又变成了对Java的

一个较大调整(正如一些人所说,它不是原来那个Java了),而且也耗费了大量的工作。 换