20

Red hat provides the Red Hat OpenJDK 8 for Windows for development use only (registration required). AdoptOpenJDK provides OpenJDK 8 builds for Windows (AdoptOpenJDK 8 Windows) without any restrictions.

Is there any technical difference between the two packages when using the same version/update(e.g. 8u181)? With "technical difference" I mean missing classes/functions, different default JVM settings, etc.

derkoe
  • 5,649
  • 2
  • 23
  • 31
  • You will need to contact RedHat for an answer - but most probably both are compiled from the same sources, just like http://www.azulsystems.com/products/zulu –  Sep 06 '18 at 11:24
  • 2
    I know but Red Hat help forum for developers is Stackoverflow :) https://developers.redhat.com/help/ – derkoe Sep 06 '18 at 11:31
  • https://meta.stackoverflow.com/questions/255745/why-were-not-customer-support-for-your-favorite-company –  Sep 06 '18 at 11:35
  • 1
    @a_horse_with_no_name tell this Red Hat – derkoe Sep 06 '18 at 11:48
  • Anyway - it would be interesting to know the technical differences between all the OpenJDK builds Azul vs. Red Hat vs. Adopt vs. Oracle – derkoe Sep 06 '18 at 11:50

3 Answers3

34

Red Hat provides OpenJDK 8 Windows binaries under exactly the same license as AdoptOpenJDK and any other open-source OpenJDK 8 build - under the GNU GPL v. 2 with classpath exception. All the restrictions about the "development use" are related only to the subscription (support) that can be purchased from Red Hat.

Technical differences between Red Hat OpenJDK 8 for Windows and other mentioned builds are pretty minor, as all these builds pass TCK. Generally Red Hat builds are trying to stay as close as possible in behaviour to OpenJDK 8 package that is included in RHEL and CentOS.

Differences:

  1. RH OpenJDK 8 build is done from the sources of OpenJDK RPM package that is used on RHEL/CentOS. These sources are generally very close to upstream sources, but contain some changes (see points below) and may include some bugfixes (RPM patches) ahead of time. RHEL/CentOS changes can be tracked in a publicly-available repo for CentOS RPM

  2. RH OpenJDK 8 includes Shenandoah garbage collector

  3. RH OpenJDK 8 uses sources from RHEL/CentOS for dependency libraries (zlib, giflib, libjpeg-turbo, libpng, nss (nss is not used anymore)) instead of the (partial) sources of these libraries that are included in-tree in upstream jdk sources

  4. Elliptic Crypto implementation in RH OpenJDK 8 includes only 3 most popular elliptic curves - NIST P-256, NIST P-384 and NIST P-521.

  5. RH OpenJDK 8 uses the set of root CA certificates from RHEL/CentOS

  6. RH OpenJDK 8 may use slightly newer timezone data - it is taken from RHEL/CentOS

  7. RH OpenJDK 8 includes all Java sources code inside the src.zip file (that is used by IDEs to allow browsing jdk code), in upstream build substantial part of these sources is not included

  8. RH OpenJDK 8 does not include demos and samples

  9. RH OpenJDK 8 includes a set of font files

  10. all native binaries in RH OpenJDK 8 are signed by RH certificate

  11. RH OpenJDK 8 installer includes a JavaFX implementation

  12. RH OpenJDK 8 installer includes a WebStart implementation

Source: I work on OpenJDK Windows builds at RH.

alexkasko
  • 4,855
  • 1
  • 26
  • 31
  • 1
    Checked some differences myself and found out that rt.jar from Red Hat includes debug information (LocalVariableTable, LocalVariableTypeTable). Oracle and AdoptOpenJDK are compiled without debug information. – derkoe Sep 07 '18 at 16:57
  • Indeed, this was also taken from RHEL/CentOS - [link](https://git.centos.org/blob/rpms!java-1.8.0-openjdk.git/95d8095737ad044d3508c26a50214ca0661eb599/SPECS!java-1.8.0-openjdk.spec#L1503) – alexkasko Sep 07 '18 at 17:47
  • @alexkasko Do you know if there is any documentation regarding the elliptic curves in RH OpenJDK somewhere? We just got bit by that, but didn't seem to find any which are supported or not. – Patrick Jan 11 '19 at 07:14
  • 1
    @Patrick: secp256r1, secp384r1 and secp521r1 are supported, see also this [maillist thread](https://groups.google.com/d/msg/ojdkbuild/yptKbWPFBA4/U4ZeoZHbAgAJ) – alexkasko Jan 12 '19 at 09:58
  • Thanks for the update, alexkasko! I guess this is related to the supported curves in the NSS library? I've researched it for an hour and still find no valid documentation for any other reason (or why it would only be these curves...). – Patrick Jan 22 '19 at 21:57
  • @alexkasko, So I am confused by: 1) Here it states that RH OpenJDK will NOT include a JavaFX (neither JavaFX or OpenJFX) implementation: https://access.redhat.com/articles/1299013?extIdCarryOver=true&sc_cid=701f2000001OH6kAAG, 2) The download page explicitly says the download is for development use only (https://developers.redhat.com/products/openjdk/download). I think you should be careful misstating the policies, especially since we all are here because of getting burned by Oracle's aggressive licensing changes. – jeremyh Nov 05 '19 at 16:19
  • 1
    @jeremyh, 1) the article you linked is about OpenJDK downloads (non-public) on access.redhat.com, this answer is about downloads on developers.redhat.com. 2) I was the one who added the "development only" message to the header on that page, the sole intention of this message was to provide there the "Customer Portal" link to access.redhat.com downloads (they should be used by customers who want to request support from RH); IANAL, all OSS OpenJDK builds can only be distributed under GPLv2+CE – alexkasko Nov 06 '19 at 12:32
  • It is a bit difficult to find openjdk Java 8 with JavaFX. I have some old college projects that used it so every few years I end up trying to track down a jdk that has it. I also found https://bell-sw.com/pages/downloads/ Thank you for this post @alexkasko not sure . . . Is there is an article on redhat that reflects what you have here? I am sure I will need it again in a few years lol – Greg Jun 04 '22 at 06:36
1

The main difference in AdoptOpenJDK I found is that you can choose from 2 different VM implementations, either the HotSpot which I found has similar slow performance than Oracle's implementation or the much more efficient Eclipse Open J9 jvm implementation which is based on former IBM SDK 8 which is now open sourced. To confirm I have an Eclipse Maven project which compiles slow in Oracle's JVM implementation.

  1. AdoptOpenJDK Eclipse Open J9 - 1 minute
  2. IBM SDK 8 (commercial license) - 1 minute
  3. AdoptOpenJDK OpenJDK8 with HotSpot - 7 minutes
  4. Oracle Java HotSpot(TM) (build 1.8.0_181-b13) - 11 minutes

So I think open sourcing Oracle's JVM gave some better results than Oracle's commercial JVM, however open sourcing IBM's JDK with Open J9 is much better and performance is 1 order of magnitude faster in compilation time (for my project).

  • Thanks for pointing that out but I wanted to know the difference between the HotSpot versions. – derkoe Sep 21 '18 at 17:54
  • 1
    Tried this on our Maven Build of a large app - compile target shows no difference between HotSpot and J9 – derkoe Sep 25 '18 at 09:39
  • Yes, I also had good performance issue on Oracle's JVM when using Java 7, but after migrating to Java 8 is when I started encountering very large memory requirements and 100% CPU utilization issues with my project. So there should be a bug in HotSpot which Open J9 and IBM SDK have solved. Alghough I don't know what the root cause is. – Gabriel Hernandez Sep 25 '18 at 16:50
0

This does not look true that redhat provided openjdk distribution can be used in production without subscription.

https://developers.redhat.com/products/openjdk/download/ So this page says correctly its only for development use only. Source: https://access.redhat.com/solutions/3116731

tarunk
  • 549
  • 2
  • 7
  • 17
  • This answer is misleading. As stated in the accepted answer, "All the restrictions about the "development use" are related only to the subscription (support) that can be purchased from Red Hat." – Peaeater May 17 '19 at 15:56