上述内容主要讲述了Open JDK和Oracle JDK的相关内容,接下来主要介绍Open JDK和Oracle JDK的关系,主要包括两者之间的联系和区别。
Open JDK 7与Oracle JDK 7在程序上是十分相似的。在OSCON 2011大会上,Oracle公司的项目开发总监Joe Darcy就二者的合作关系也进行了相关的阐述,并证实它们曾共用过大量相同的代码。基本上可认为我们所编译的Open JDK,在性能、功能及运行逻辑上均与官方的Oracle JDK是相同的。
从虚拟机角度而言,Oracle JDK与Open JDK里的JVM都是HotSpot VM。从源码层面说,两者基本上是同一个东西。HotSpot VM只有非常少量的功能没有在Open JDK里,而那部分在Oracle内部的代码库里。这些私有部分都不涉及JVM的核心功能。所以说,Oracle/Sun JDK与Open JDK其实使用的是同一个代码库。
总体而言,Open JDK是开源的,而Oracle JDK是官方商业化的。除此之外Open JDK和Oracle JDK主要有以下几点区别。
授权协议方式不同。Open JDK通过GPL或V2协议推出,而Oracle JDK则通过JRL推出。它们尽管都是公开源代码的,不过在实际应用上最大的差别就是GPL V2可以在商业上应用,而JRL只可以用于个人研究。
Open JDK中并不包括它的Deployment(部署)控制功能。根据需要部署的功能可以分为Browser Plugin、Java Web Start及Java控制面板,这些控制功能在Open JDK中几乎是根本查不到的。
Open JDK源代码并不完整:对使用GPL协议的Open JDK而言,Oracle JDK中的大部分源代码都由于知识产权的问题而不能公开给予Open JDK使用,当中最为主要的部分便是JMX中的可选元件SNMP部分的代码等。
Open JDK只包括最精简的JDK。Open JDK同时也包括了其他的套装软体,例如Rhino Java DB JAXP等。另外可以分离的套装软体也均是尽可能分离,不过这大部分均为自由软件,读者也可自行下载或加入。
字体源码不同。Open JDK的大部分字体源代码都可以使用开放字体源代码进行替换,因为知识产权的保护问题,一些与产权不同的Oracle字体源代码被替换成了许多字体功能相似的中文开放字体源代码,比如,中文字体设计栅格化替换引擎等,用于对freetype进行替换。