0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenJDK和Oracle JDK的一些区别

汽车玩家 来源:今日头条 作者:胖虎读书 2020-04-12 19:10 次阅读

OpenJDK是Sun在2006年末把Java开源而形成的项目,这里的“开源”是通常意义上的源码开放形式,即源码是可被复用的,例如IcedTea、UltraViolet都是从OpenJDK源码衍生出的发行版。

Oracle JDK采用了商业实现,而OpenJDK使用的是开源的FreeType。

当然,“相同”是建立在两者共有的组件基础上的,Oracle JDK中还会存在一些Open JDK没有的、商用闭源的功能。

例如从JRockit移植改造而来的Java Flight Recorder,预计以后JRockit的MissionControl移植到HotSpot之后,也会以Oracle JDK专有、闭源的形式提供。

Oracle的项目发布经理Joe Darcy在OSCON 2011上对两者关系的介绍也证实了OpenJDK 7和Oracle JDK 7在程序上是非常接近的,两者共用了大量相同的代码.。

如下图,注意图中提示了两者共同代码的占比要远高于图形上看到的比例,所以我们编译的OpenJDK,基本上可以认为性能、功能和执行逻辑上都和官方的Oracle JDK是一致的。

OpenJDK和Oracle JDK的一些区别

在大多数Linux发行版本里,内置或者通过软件源安装的JDK,都是安装的OpenJDK。

什么是OpenJDK?

历史上的原因是,OpenJDK是JDK的开放源码版本,以GPL协议的形式发布。

开源协议参考: 软件开发中的开源协议详解

在JDK7的时候,OpenJDK已经成为JDK7的主干开发版,SUN JDK7是在OpenJDK7的 基础上发布的,其大部分源码都相同,只有少部分源码被替换掉。 使用JRL(Java Research License,Java研究授权协议)发布。

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

JDK和OpenJDK的区别

1.授权协议的不同

OpenJDK采用GPL V2协议发布,而JDK则采用JRL协议发布。两个协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用, 而JRL只允许个人研究使用。

2.OpenJDK只包含最精简的JDK

OpenJDK不包含其他的软件包,比如Rhino Java DB JAXP……,并且可以分离的软件包也都是尽量的分离,但是这大多数都是自由软件,你可以自己下载加入。

3.OpenJDK源代码不完整

这个很容易想到,在采用GPL协议的OpenJDK中,SUN JDK的一部分源代码因为产权的问题无法开放OpenJDK使用,其中最主要的部分就是JMX中的可选元件SNMP部分的代码。

因此这些不能开放的源代码将它作成plug,以供OpenJDK编译时使用,你也可以选择不要使用plug。

而Icedtea则为这些不完整的部分开发了相同功能的源代码(OpenJDK6),促使OpenJDK更加完整。

4.OpenJDK和IcedTea的关系

IcedTea项目最初是由于OpenJDK不完整(因产权 而造成的障碍)而创立的,社区需要一个完整的开源工具链及代码库。

IcedTea长期以来一直是OpenJDK的一套补丁,正如刚才我所说到的,它有一个 基于“./configure”的不同的构建系统。

在OpenJDK中,我们已经替换了产权代码(encumbered code),因此不再有障碍了。 正因为我们的努力,IcedTea项目已经减少了使用补丁的数量。

IcedTea中看上去不错的一点是,它的 configure脚本使得在多种不同的模式下构建OpenJDK变得很容易,比如使用Zero Assembler Port在非x86/sparc芯片上来支持编译等等。

IcedTea提供的一大块内容是plugin/java-web-start基础架构。

5.部分源代码用开源代码替换

由于产权的问题,很多是SUN JDK的源代码被替换成一些功能相同的开源代码,比如说字体栅格化引擎,使用Free Type代替。

6.不能使用Java商标

这个很容易理解,在安装OpenJDK的机器上,输入“java -version”显示的是OpenJDK。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2954

    浏览量

    104511
  • JDK
    JDK
    +关注

    关注

    0

    文章

    81

    浏览量

    16571
收藏 人收藏

    评论

    相关推荐

    分享一些常见的电路

    理解模电和数电的电路原理对于初学者来说可能比较困难,但通过一些生动的教学方法和资源,可以有效地提高学习兴趣和理解能力。 下面整理了一些常见的电路,以动态图形的方式展示。 整流电路 单相桥式整流
    的头像 发表于 11-13 09:28 127次阅读
    分享<b class='flag-5'>一些</b>常见的电路

    JDK8升级JDK11最全实践干货来了

    1、前言 截至目前(2023年),Java8发布至今已有9年,2018年9月25日,Oracle发布了Java11,这是Java8之后的首个LTS版本。那么从JDK8到JDK11,到底带来了哪些特性
    的头像 发表于 06-25 14:51 398次阅读
    <b class='flag-5'>JDK</b>8升级<b class='flag-5'>JDK</b>11最全实践干货来了

    JDK11升级JDK17最全实践干货来了

    1、前言 如果你仍在使用JDK8,那你是否曾经遇到过OutOfMemoryError的问题?你是否曾经为JVM的调优问题感到困扰?本篇文章将为你介绍种能够提供百倍性能提升的垃圾回收器,也许能够
    的头像 发表于 06-25 14:50 660次阅读
    <b class='flag-5'>JDK</b>11升级<b class='flag-5'>JDK</b>17最全实践干货来了

    java环境搭建及配置教程

    Development Kit(JDKJDK是Java开发的核心组件,它包含了Java编译器、Java 虚拟机和一些Java工具。您可以在Oracle官方网站上下载最新版本的
    的头像 发表于 12-06 15:50 737次阅读

    如何配置jdk的环境变量

    配置JDK的环境变量是在操作系统中设置一些路径,以便能够在命令提示符或终端中全局运行Java开发工具。这样,您可以在任何位置运行Java程序。 以下是步的指南来配置
    的头像 发表于 12-06 15:07 785次阅读

    idea的jdk配置在哪

    。 第步:安装JDK 首先,我们需要在计算机上安装JDK。可以从Oracle官方网站下载JDK的安装包。在下载过程中,请注意选择与您的操作
    的头像 发表于 12-06 15:04 2469次阅读

    如何在eclipse配置jdk环境

    在Eclipse中配置JDK环境非常重要,它是开发Java程序的基础。本文将详细介绍如何在Eclipse中配置JDK环境。 下载和安装JDK 首先,在Oracle官网上下载适用于您的操
    的头像 发表于 12-06 11:49 1591次阅读

    eclipse配置servers识别不到jdk

    Eclipse是个广泛使用的集成开发环境(IDE),它可以帮助开发人员编写、调试和测试许多编程语言。在使用Eclipse时,可能会遇到配置servers时无法识别JDK的问题,这会导致项目无法正常
    的头像 发表于 12-06 11:41 811次阅读

    oracle和mysql语法区别大吗

    Oracle和MySQL是两种不同的关系型数据库管理系统(RDBMS)。虽然它们都是遵循SQL标准,但在语法和特性上仍存在一些区别。以下是对Oracle和MySQL语法
    的头像 发表于 12-06 10:26 1098次阅读

    oracle split函数用法举例

    Split函数是Oracle中用于将个字符串按照指定的分隔符进行拆分的函数。其语法为:SPLIT(字符串, 分隔符)。 下面我将详细介绍Split函数的用法,并提供一些示例,以帮助你更好地了解
    的头像 发表于 12-06 09:56 8118次阅读

    oracle系统权限和对象权限的区别

    权限和对象权限的区别Oracle系统权限 Oracle系统权限是授予用户对数据库系统级别操作的权限,用户可以使用这些权限来执行系列
    的头像 发表于 12-05 16:21 961次阅读

    weblogic修改jdk路径

    WebLogic是个流行的Java应用服务器,可以用于部署和管理企业级Java应用程序。在WebLogic的安装和配置过程中,我们可能会遇到需要修改JDK(Java Development Kit
    的头像 发表于 12-05 14:46 1234次阅读

    我们为什么需要了解一些先进封装?

    我们为什么需要了解一些先进封装?
    的头像 发表于 11-23 16:32 544次阅读
    我们为什么需要了解<b class='flag-5'>一些</b>先进封装?

    分享一些SystemVerilog的coding guideline

    本文分享一些SystemVerilog的coding guideline。
    的头像 发表于 11-22 09:17 673次阅读
    分享<b class='flag-5'>一些</b>SystemVerilog的coding  guideline

    oracle修改表字段长度语句

    Oracle 修改表字段长度可以通过使用 ALTER TABLE 语句来实现。在对表进行修改之前,我们需要先了解一些基本的概念。 表字段长度是指在数据库表中用来存储数据的列的最大容量。当我们需要存储
    的头像 发表于 11-21 11:34 1907次阅读