OpenJDK做为GPL许可(GPL-licensed)的Java平台的实现,Sun正式发布它已经一年有余。从发布那一时刻起,Java社区的大众们就又开始努力学习,以适应这个新的开源代码基础(code-base)。
Red Hat的Andrew Haley和Thomas Fitzsimmons所写的一篇文章中谈到了OpenJDK最初的发布情况,以及随后产生的IcedTea项目:
当全部Java源代码——现在称为OpenJDK——在2007年5月9日发布时,它还面临一些问题。 最主要的问题是有些代码的“缺失”。多年来,Sun得到的Java类库来自于多种渠道,因此,这些类库对应的许可种类也不一样,其中有些代码不允许开源。 为了能够使用这些受限代码,Sun提供了一些“二进制插件”,这些二进制插件被拷到构建(build)后的结果中。 这种做法的问题正如Fedora规则所讲的“别使用那些不开源的东西”那样,因为我们很难对看不见的代码保持信心。
GNU Classpath团队和一些RedHat开发者一起创造了IcedTea 项目,目的就是要用开源实现去替换OpenJDK中那些非开源部分。对于OpenJDK中现存的那些非开源二进制插件,GNU Classpath都提供了GPL许可的替换部分,从而使OpenJDK的IcedTea版对于诸如Redhat Fedora Linux发行版本的平台来说,更容易使用。Fedora 9包含了功能完全的OpenJDK包,部分应归功于IcedTea项目作出的贡献。
之所以发起IcedTea项目,并不仅仅是因为上面提到的非开源、二进制插件的原因。另一个主要原因是发现当前的OpenJDK缺乏平台移植性:
Sun发布的OpenJDK只能运行在i386 和AMD-64机器上。Fedora可以运行在其他系统上,特别是那些基于PowerPC的机器上。 为了解决这个问题,我们发起了IcedTea项目来完成移植。该项目基于Sun的C++解释程序,为OpenJDK向PowerPC移植构造了一个单独的解释程序。后来成为Zero,它是一个真正可移植的“零汇编程序”的版本。 正如你想到的,一个纯的解释程序确实要慢于Java实现中常用到的高性能的JIT (Just In Time)编译器,但是我们正在努力提高其性能。