openjdk和jdk你推荐哪个?

任何使用过LINUX的人都应该知道,在大多数LINUX发行版中,如果JDK安装在软件源中或通过软件源安装,它就是一个已安装的openjdk。那么openjdk是什么,它和sun jdk有什么关系和区别呢?

历史原因是openjdk是jdk的开源版本,以GPL协议的形式发布。JDK7的时候,openjdk已经成为jdk7的骨干开发。sun jdk7是在openjdk7的基础上发布的,大部分源代码都是一样的,只有少部分被替换了。使用JRL(Java search许可证)发布。

至于openjdk6,就比较复杂了。首先,openjdk6是jdk7的一个分支,尽可能去掉了Java SE7的新特性,使其尽可能符合Java6的标准。

JDK和OpenJDK之间的差异可以总结如下:

不同的许可协议:

Openjdk是由GPL V2协议发布的,而jdk是由JRL发布的。虽然这两个协议都是开源的,但使用上的区别是GPL V2允许用于商业用途,而JRL只允许用于个人研究。

OpenJDK不包括部署功能:

部署的功能有:浏览器插件、Java Web Start、Java控制面板,这些都是Openjdk中没有的。

OpenJDK源代码不完整:

我们很容易想到,在采用GPL协议的Openjdk中,sun jdk的部分源代码因为产权问题不能被openjdk使用,而最重要的部分是JMX可选组件SNMP的代码。所以这些非开源代码让它plug for 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社区所希望的。