AdoptOpenJDK 和 Red Hat OpenJDK for Windows 之间的技术差异

2022-09-02 20:32:19

Red hat 提供的 Red Hat OpenJDK 8 for Windows 仅供开发使用(需要注册)。AdoptOpenJDK为Windows提供OpenJDK 8 builds(AdoptOpenJDK 8 Windows),没有任何限制。

当使用相同的版本/更新(例如8u181)时,两个软件包之间是否存在任何技术差异?对于“技术差异”,我的意思是缺少类/函数,不同的默认JVM设置等。


答案 1

Red Hat 提供 OpenJDK 8 Windows 二进制文件,其许可证与 AdoptOpenJDK 和任何其他开源 OpenJDK 8 构建版本完全相同 - 根据 GNU GPL v. 2,具有类路径例外。有关“开发用途”的所有限制仅与可从红帽购买的订阅(支持)有关。

Red Hat OpenJDK 8 for Windows和其他提到的版本之间的技术差异非常小,因为所有这些版本都通过了TCK。一般来说,Red Hat 构建版本在行为上尽可能接近 RHEL 和 CentOS 中包含的 OpenJDK 8 软件包。

差异:

  1. RH OpenJDK 8 构建是从 RHEL/CentOS 上使用的 OpenJDK RPM 包的源代码完成的。这些源通常非常接近上游源,但包含一些更改(请参阅下面的几点),并且可能提前包括一些错误修复(RPM补丁)。RHEL/CentOS 的更改可以在 CentOS RPM 的公开存储库中进行跟踪

  2. RH OpenJDK 8 包括 Shenandoah 垃圾收集器

  3. RH OpenJDK 8 使用来自 RHEL/CentOS 的依赖项库(zlib、giflib、libjpeg-turbo、libpng、nss不再使用 nss))而不是这些库的(部分)源,这些库包含在上游 jdk 源代码的树中

  4. RH OpenJDK 8 中的椭圆加密实现仅包括 3 条最常用的椭圆曲线 - NIST P-256、NIST P-384 和 NIST P-521。

  5. RH OpenJDK 8 使用来自 RHEL/CentOS 的根 CA 证书集

  6. RH OpenJDK 8 可能使用稍新的时区数据 - 它取自 RHEL/CentOS

  7. RH OpenJDK 8 包括所有 Java 源代码,在 src.zip 文件(即 IDE 用来允许浏览 jdk 代码),在上游构建中,这些源代码的很大一部分不包括在内。

  8. RH OpenJDK 8 不包括演示和示例

  9. RH OpenJDK 8 包括一组字体文件

  10. RH OpenJDK 8 中的所有本机二进制文件都由 RH 证书签名

  11. RH OpenJDK 8 安装程序包括一个 JavaFX 实现

  12. RH OpenJDK 8 安装程序包括一个 WebStart 实现

资料来源:我在RH从事OpenJDK Windows构建的工作。


答案 2

我发现AdoptOpenJDK的主要区别在于,您可以从2种不同的VM实现中进行选择,要么是我发现的HotSpot具有与Oracle实现类似的慢速性能,要么是基于以前的IBM SDK 8的Eclipse Open J9 jvm实现,现在是开源的。为了确认我有一个Eclipse Maven项目,它在Oracle的JVM实现中编译缓慢。

  1. AdoptOpenJDK Eclipse Open J9 - 1 分钟
  2. IBM SDK 8(商业许可证)- 1 分钟
  3. 采用 OpenJDK OpenJDK8 with HotSpot - 7 分钟
  4. Oracle Java HotSpot(TM) (build 1.8.0_181-b13) - 11 分钟

因此,我认为开源Oracle的JVM比Oracle的商业JVM提供了更好的结果,但是开源IBM的JDK与Open J9要好得多,编译时间的性能提高了1个数量级(对于我的项目)。


推荐