Sun的JDK7、OpenJDK及IcedTea释疑

前几个小时,一位 google 发言人称:“作为一个开源平台,安卓是基于开源社区的合作”,“针对下一个安卓版本,我们将以Open JDK为基础,为开发人员创建一个共有的代码库,方便他们开发各类app和服务。Google跟OpenJDK社区的合作已经有很长时间,我们期待将来能为OpenJDK项目作出更多贡献。”

这就意味着:计划将于明年年底上线的Android N系统将不再依赖目前所使用的Java APIs,转而替代使用OpenJDK,这是来自甲骨文(Oracle)的开源Java开发套件。


于是在网上查找了一些介绍 OpenJDK 相关的资料,其中的两篇文章足够简单的了解

1. 其中一篇文章介绍了 Sun的JDK7、OpenJDK及IcedTea,该文章是2009年的,有助于了解其发展,其链接如下:http://android.tgbus.com/java/tutorial/200901/175837.shtml   内容:

由于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了),而且也耗费了大量的工作。 换句话说,生产JDK7的时间被用来做JDK6u10和JavaFX了。 
        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月之后的会议备忘录并获得宪章方面的现状报告吗?


2. 另一篇博客也有介绍:http://blog.csdn.net/kiyoki/article/details/8777744  其内容如下:

使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的openjdk,那么到底什么是openjdk,它与sun jdk有什么关系和区别呢?

历史上的原因是,openjdk是jdk的开放原始码版本,以GPL协议的形式放出。在JDK7的时候,openjdk已经成为jdk7的主干开 发,sun jdk7是在openjdk7的基础上发布的,其大部分原始码都相同,只有少部分原始码被替换掉。使用JRL(JavaResearch License,Java研究授权协议)发布。

至于openjdk6则更是有其复杂的一面,首先是openjdk6是jdk7的一个分支,并且尽量去除Java SE7的新特性,使其尽量的符合Java6的标准。

关于JDK和OpenJDK的区别,可以归纳为以下几点:

授权协议的不同:
openjdk采用GPL V2协议放出,而JDK则采用JRL放出。两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。
OpenJDK不包含Deployment(部署)功能:
部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,这些功能在Openjdk中是找不到的。
OpenJDK源代码不完整:
这个很容易想到,在采用GPL协议的Openjdk中,sun jdk的一部分源代码因为产权的问题无法开放openjdk使用,其中最主要的部份就是JMX中的可选元件SNMP部份的代码。因此这些不能开放的源代码 将它作成plug,以供OpenJDK编译时使用,你也可以选择不要使用plug。而Icedtea则为这些不完整的部分开发了相同功能的源代码 (OpenJDK6),促使OpenJDK更加完整。
部分源代码用开源代码替换:
由于产权的问题,很多产权不是SUN的源代码被替换成一些功能相同的开源代码,比如说字体栅格化引擎,使用Free Type代替。
openjdk只包含最精简的JDK:
OpenJDK不包含其他的软件包,比如Rhino Java DB JAXP……,并且可以分离的软件包也都是尽量的分离,但是这大多数都是自由软件,你可以自己下载加入。
不能使用Java商标:
这个很容易理解,在安装openjdk的机器上,输入“java -version”显示的是openjdk,但是如果是使用Icedtea补丁的openjdk,显示的是java。(未验证)
总之,在Java体系中,还是有很多不自由的成分,源代码的开发不够彻底,希望Oracle能够让JCP更自由开放一些,这也是所有Java社区所希望的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值