use*_*582 651 java difference
注意:此问题来自2014年.从Java 11开始,OpenJDK和Oracle JDK正在融合.
Oracle和OpenJDK之间是否存在重大差异?
例如,垃圾收集和其他JVM参数是否相同?
GC在两者之间的工作方式不同吗?
rad*_*dai 321
对于Java 7,没什么关键.OpenJDK项目主要基于Sun捐赠的HotSpot源代码.
此外,OpenJDK被选为Java 7的参考实现,由Oracle工程师维护.
关于JVM,JDK,JRE和OpenJDK之间的区别,2012年有一个更详细的答案,它链接到Oracle博客帖子:
问:OpenJDK存储库中的源代码与用于构建Oracle JDK的代码之间有什么区别?
答:非常接近 - 我们的Oracle JDK版本构建过程基于OpenJDK 7构建,只添加了几个部分,例如部署代码,其中包括Oracle的Java插件和Java WebStart的实现,以及一些封闭的源代码派对组件,如图形光栅化器,一些开源的第三方组件,如Rhino,以及一些零碎的东西,如附加文档或第三方字体.展望未来,我们的目的是开源Oracle JDK的所有部分,除了我们考虑商业功能的部分,例如JRockit Mission Control(Oracle JDK中尚未提供),并用开源替代品替换受阻的第三方组件以实现更接近的平价代码库之间.
Ven*_*Rao 304
OpenJDK和Oracle JDK目前仅由Oracle创建和维护.
OpenJDK和Oracle JDK是通过TCK(Java技术认证工具包)的相同Java规范的实现.
大多数JDK的厂商都做了一些调整,以[大多以取代许可的专用部件/更高性能的项目,只能在特定的操作系统工作更换]部件没有打破TCK兼容性写在OpenJDK的顶部.
许多供应商实现了Java规范并通过了TCK.例如,IBM J9,Azul Zulu,Azul Zing和Oracle JDK.
几乎每个现有的JDK都派生自OpenJDK.
正如许多人所建议的,许可是JDK之间的变化.
从JDK 11开始访问长时间支持Oracle JDK/Java SE现在需要商业许可证.您现在应该注意您正在安装的JDK,因为没有订阅的Oracle JDK可能会停止工作.资源
参考:Java虚拟机列表
The*_*ger 89
未来的一个关键差异是发布计划和支持政策.
OpenJDK将每6个月发布一次功能,只有在下一个功能发布时才会支持.它本质上是针对开发人员的连续发布流.
Oracle JDK的目标更多是针对重视稳定性的企业用户.它基于OpenJDK的一个版本,但随后给予长期支持(LTS).Oracle JDK每3年发布一次.
资料来源:https://www.oracle.com/java/java9-screencasts.html?bcid = 5582439790001&playerType = single -social&size = events
小智 35
对于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的实现.它还包括第三方封闭源代码和开源组件,如图形光栅化器和Rhino.OpenJDK Font Renderer和Oracle JDK Flight Recorder是Oracle JDK和OpenJDK之间显着的主要差异.
有关差异的完整列表,请参阅源文章:Oracle JDK与OpenJDK和Java JDK开发过程
小智 25
Oracle和OpenJDK JVM是相同的,具有相同的GC功能(从最新版本10+开始).在Oracle管理OpenJDK JVM之前,存在一些具体的差异,使得旧的Openjdk JVM在许多环境中几乎无法使用.JVM现在是一样的.
包含JVM作为Kit的一部分的JDK因许可,发布和维护计划以及JDK中包含的软件库而不同.对我来说至关重要的区别也意味着如果不存在代码就会使代码无法运行.不仅许可.
diff --brief -r openjdk oraclejdk
Run Code Online (Sandbox Code Playgroud)
至关重要的是除了Linux JDK上的其他一些文件之外还缺少以下文件(因此,如果你声称'代码在OpenJDK上不起作用,并且在使用javafx时在OracleJDK上这样做那么你是正确的):
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`
Run Code Online (Sandbox Code Playgroud)
Nar*_*shi 15
根据oracle博客,Oracle JDK Releases for Java 11及更高版本
从Java 11开始,Oracle将在开源GNU通用公共许可证v2下提供JDK版本,具有类路径异常(GPLv2 + CPE),并且在使用Oracle JDK作为Oracle产品或服务的一部分的商业许可下提供,或者谁不想使用开源软件.这种使用开源许可证和商业许可证的组合取代了历史上的" BCL "许可证,该许可证具有免费和付费商业条款的组合.
将为每个许可提供不同的构建,但是除了下面详细描述的一些化妆品和包装差异之外,这些构建在功能上是相同的.
从BCL到GPL
Oracle Java SE技术的二进制代码许可证("BCL")十多年来一直是Oracle Java SE技术的主要许可证.在某些条件下,BCL允许在没有许可费的情况下使用.为了简化未来的发展,Oracle开始使用与Linux平台相同的许可证模型,从Java 9 开始提供开源许可的OpenJDK构建.如果您习惯于免费获取Oracle Java SE二进制文件,则可以使用jdk.java.net上提供的Oracle OpenJDK版本继续执行此操作.如果您习惯将Oracle Java SE二进制文件作为Oracle的商业产品或服务的一部分,那么您可以继续通过My Oracle Support(MOS)和其他位置获取Oracle JDK版本.
功能相同且可互换......
Oracle的BCL许可JDK历史上包含OpenJDK版本中没有的"商业功能".然而,正如所承诺的那样,Oracle在过去一年中为OpenJDK社区贡献了这些功能,包括:
因此,从Java 11开始,Oracle JDK构建和OpenJDK构建将基本相同.
......但是有一些化妆品和包装的差异
确实存在少量差异,有些是有意的,有些是装饰性的,有些只是因为有更多时间与OpenJDK贡献者讨论是有道理的.
这种差异仍然存在,以便为特定种类的遗留用途提供一致的体验.这些模块现在作为OpenJFX的一部分单独提供,现在都在OpenJDK和Oracle JDK中,因为它们是Oracle为OpenJDK(例如,Flight Recorder)提供的商业功能,或者是从Oracle JDK 11中删除的(例如,JNLP) .
java 11 2018-09-25
Java(TM)SE运行时环境18.9(版本11 + 28)
Java HotSpot(TM)64位服务器VM 18.9(版本11 + 28,混合模式)
而对于OpenJDK 11版本:
openjdk版本"11"2018-09-25
OpenJDK运行时环境18.9(版本11 + 28)
OpenJDK 64位服务器VM 18.9(版本11 + 28,混合模式)
Ist*_*ain 12
从 Java 11 转向大变革
Oracle 将通过开源和商业许可的组合改变其历史上的“BCL”许可
更新 : 25-Aug-2019
有关更多详细信息oracle-vs-openjdk
Dal*_*pic 10
可以在此博客文章中找到Oracle JDK 11和OpenJDK 11之间剩余的少数化妆品和包装差异的列表:
https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later
简而言之:
此外,对于Java 8, AMIS 技术博客已于 2018 年 11 月发布了一个有趣的反应式(非阻塞)Spring Boot REST 应用程序性能基准测试,该应用程序托管在各种 JVM 上,其中显示了以下差异:
详细内容请参见来源文章。
当然YMMV,这只是基准之一。
除了明显的许可差异外,OpenJDK和OracleJDK 11之间的主要差异是稳定性和性能更新。
来源:https://www.youtube.com/watch?v = Adv9--6IcQI&t = 385
每六个月,这两个代码库将同步。但是在6个月的窗口中,OpenJDK将仅收到安全更新,而OracleJDK将收到其他稳定性和性能更新。
鉴于OpenJDK和OracleJDK的更新版本仅每3个月发布一次,这意味着您(最多)缺少3个月的修补程序,直到发布下一个主要版本并进行升级为止。但是,如果您选择坚持使用LTS版本,则商业许可开始变得更有意义。
OpenJDK
甲骨文JDK
来源:https://o7planning.org/12571/history-of-java-and-the-difference- Between-oracle-jdk-and-openjdk
| 归档时间: |
|
| 查看次数: |
493015 次 |
| 最近记录: |