Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Oracle JDK和OpenJDK之间的差异_Java_Difference - Fatal编程技术网

Java Oracle JDK和OpenJDK之间的差异

Java Oracle JDK和OpenJDK之间的差异,java,difference,Java,Difference,注:此问题来自2014年。从Java11OpenJDK和Oracle开始 JDK正在融合 Oracle和OpenJDK之间有什么重要区别吗 例如,垃圾收集和其他JVM参数是否相同 GC在两者之间的工作方式是否有所不同?对于Java7,没有什么至关重要的。OpenJDK项目主要基于Sun捐赠的源代码 此外,OpenJDK被选为最新版本,并由Oracle工程师维护 2012年以后有一个更详细的答案,链接到: Q:在OpenJDK中找到的源代码之间有什么区别 存储库,以及用于构建Oracle JDK的

注:此问题来自2014年。从Java11OpenJDK和Oracle开始 JDK正在融合

Oracle和OpenJDK之间有什么重要区别吗

例如,垃圾收集和其他JVM参数是否相同


GC在两者之间的工作方式是否有所不同?

对于Java7,没有什么至关重要的。OpenJDK项目主要基于Sun捐赠的源代码

此外,OpenJDK被选为最新版本,并由Oracle工程师维护

2012年以后有一个更详细的答案,链接到:

Q:在OpenJDK中找到的源代码之间有什么区别 存储库,以及用于构建Oracle JDK的代码

A:非常接近-我们针对Oracle JDK发布的构建过程 在OpenJDK 7上,只添加了几部分,比如部署代码, 其中包括Oracle实现的Java插件和Java WebStart,以及一些封闭源代码的第三方组件,如 图形光栅化器,一些开源的第三方组件,如 犀牛,还有一些零碎的东西,比如 文档或第三方字体。向前看,我们的目的是 开源Oracle JDK的所有片断,除了我们考虑的那些 商业功能,如JRockit任务控制(尚未提供 在Oracle JDK中),并用 开源替代方案,以实现代码之间更紧密的对等 基地


OpenJDK和Oracle JDK目前仅由Oracle创建和维护

OpenJDK和Oracle JDK是通过TCK(Java技术认证工具包)的同一Java规范的实现

JDK的大多数供应商都是在OpenJDK的基础上编写的,他们在不破坏TCK兼容性的情况下,对组件进行了一些调整[主要是替换许可的专有部件/替换为只在特定操作系统上工作的更高性能项目]

许多供应商实现了Java规范并通过了TCK。例如,IBM J9、Azul Zulu、Azul Zing和Oracle JDK

几乎所有现有的JDK都是从OpenJDK派生的

正如许多人所建议的,许可是JDK之间的一种变化

从JDK 11开始,访问Oracle JDK/Java SE的长期支持现在需要商业许可证。现在,您应该注意您正在安装的作为Oracle JDK的JDK,如果没有订阅,可能会停止工作


参考:

对于Java 8,Oracle JDK与OpenJDK的主要区别:

  • OpenJDK是Java标准版平台的开源实现,Oracle和开放Java社区对此做出了贡献

  • OpenJDK是根据许可证GPL v2发布的,其中Oracle JDK是根据Oracle二进制代码许可协议获得许可的

  • 实际上,Oracle JDK的构建过程是从OpenJDK源代码构建的。因此,Oracle JDK和OpenJDK之间没有重大的技术区别。 除了基本代码外,Oracle JDK还包括Oracle的Java插件实现和Java WebStart。它还分别包括第三方闭源代码和开源组件,如图形光栅化器和。 OpenJDK字体渲染器和Oracle JDK Flight Recorder是Oracle JDK和OpenJDK之间明显的主要区别

  • Rockit是Oracle的JVM,从JavaSE7开始,HotSpot和JRockit合并为一个JVM。所以现在我们只有合并的热点JVM可用
  • 有些情况下,人们声称他们在运行OpenJDK时遇到了问题,并且在切换到Oracle JDK时得到了解决
  • Twitter有自己的JDK
  • 像Minecraft这样的软件希望使用Oracle JDK。事实上,他警告说

有关差异的完整列表,请参阅源文章:

未来的一个关键差异是发布时间表和支持策略

OpenJDK OpenJDK将每6个月发布一次功能,该功能仅在下一个功能发布之前受支持。它本质上是针对开发人员的连续发布流

甲骨文JDK Oracle JDK更面向重视稳定性的企业用户。它基于一个OpenJDK版本,但是 然后给予长期支持(LTS)。Oracle JDK计划每3年发布一次


来源:

Oracle和OpenJDK JVM是相同的,并且具有相同的GC功能(从最新版本10+开始)。在Oracle管理OpenJDK JVM之前,存在一些具体的差异,使得旧的OpenJDK JVM在许多环境中几乎不可用。JVM现在是一样的

JDK包括JVM作为工具包的一部分,其许可、发布和维护时间表以及JDK中包含的软件库各不相同。对我来说,关键性的差异还意味着,如果代码不存在,就会导致代码无法运行。不仅是许可证

diff --brief -r openjdk oraclejdk
关键的是,除了linux JDK上的其他一些文件外,还缺少以下文件(因此,如果您在使用javafx时“声称”代码在OpenJDK和OracleJDK上不起作用,那么您是正确的):


Oracle JDK 11和OpenJDK 11之间剩下的一些外观和包装上的差异可以在这篇博文中找到:

简言之:

  • Oracle JDK 11在使用-XX:+UnlockCommercialFeatures选项时发出警告
  • 它可以配置为向“高级管理控制台”工具提供使用日志数据
  • 它始终要求第三方加密提供程序由已知证书签名
  • 它将继续包括安装程序、品牌和JRE包装
  • 而javac--release命令对于Java9和Java10目标的行为略有不同,并且
  • java--version和java-fullv的输出
    Only in jdk-10.0.1/bin: javapackager
    Only in jdk-10.0.1/bin: javaws
    Only in jdk-10.0.1/bin: jcontrol
    Only in jdk-10.0.1/bin: jmc
    Only in jdk-10.0.1/bin: jweblauncher
    Only in jdk-10.0.1/lib: ant-javafx.jar
    Only in jdk-10.0.1/lib: deploy
    Only in jdk-10.0.1/lib: deploy.jar
    Only in jdk-10.0.1/lib: desktop
    Only in jdk-10.0.1/lib: fontconfig.bfc
    Only in jdk-10.0.1/lib: fontconfig.properties.src
    Only in jdk-10.0.1/lib: fontconfig.RedHat.6.bfc
    Only in jdk-10.0.1/lib: fontconfig.RedHat.6.properties.src
    Only in jdk-10.0.1/lib: fontconfig.SuSE.11.bfc
    Only in jdk-10.0.1/lib: fontconfig.SuSE.11.properties.src
    Only in jdk-10.0.1/lib: fonts
    Only in jdk-10.0.1/lib: javafx.properties
    Only in jdk-10.0.1/lib: javafx-swt.jar
    Only in jdk-10.0.1/lib: java.jnlp.jar
    Only in jdk-10.0.1/lib: javaws.jar
    Only in jdk-10.0.1/lib: jdk.deploy.jar
    Only in jdk-10.0.1/lib: jdk.javaws.jar
    Only in jdk-10.0.1/lib: jdk.plugin.jar
    Only in jdk-10.0.1/lib: jfr
    Only in jdk-10.0.1/lib: libavplugin-53.so
    Only in jdk-10.0.1/lib: libavplugin-54.so
    Only in jdk-10.0.1/lib: libavplugin-55.so
    Only in jdk-10.0.1/lib: libavplugin-56.so
    Only in jdk-10.0.1/lib: libavplugin-57.so
    Only in jdk-10.0.1/lib: libavplugin-ffmpeg-56.so
    Only in jdk-10.0.1/lib: libavplugin-ffmpeg-57.so
    Only in jdk-10.0.1/lib: libbci.so
    Only in jdk-10.0.1/lib: libcmm.so
    Only in jdk-10.0.1/lib: libdecora_sse.so
    Only in jdk-10.0.1/lib: libdeploy.so
    Only in jdk-10.0.1/lib: libfxplugins.so
    Only in jdk-10.0.1/lib: libglassgtk2.so
    Only in jdk-10.0.1/lib: libglassgtk3.so
    Only in jdk-10.0.1/lib: libglass.so
    Only in jdk-10.0.1/lib: libgstreamer-lite.so
    Only in jdk-10.0.1/lib: libjavafx_font_freetype.so
    Only in jdk-10.0.1/lib: libjavafx_font_pango.so
    Only in jdk-10.0.1/lib: libjavafx_font.so
    Only in jdk-10.0.1/lib: libjavafx_iio.so
    Only in jdk-10.0.1/lib: libjfxmedia.so
    Only in jdk-10.0.1/lib: libjfxwebkit.so
    Only in jdk-10.0.1/lib: libnpjp2.so
    Only in jdk-10.0.1/lib: libprism_common.so
    Only in jdk-10.0.1/lib: libprism_es2.so
    Only in jdk-10.0.1/lib: libprism_sw.so
    Only in jdk-10.0.1/lib: librm.so
    Only in jdk-10.0.1/lib: libt2k.so
    Only in jdk-10.0.1/lib: locale
    Only in jdk-10.0.1/lib: missioncontrol
    Only in jdk-10.0.1/lib: oblique-fonts
    Only in jdk-10.0.1/lib: plugin.jar
    Only in jdk-10.0.1/lib: plugin-legacy.jar
    Only in jdk-10.0.1/lib/security: blacklist
    Only in jdk-10.0.1/lib/security: public_suffix_list.dat
    Only in jdk-10.0.1/lib/security: trusted.libraries
    Only in openjdk-10.0.1: man`