AdoptOpenJDK / TSC

The AdoptOpenJDK Technical Steering Committee - Also acts as the knowledge portal for the Adopt OpenJDK GitHub projects
70 stars 33 forks source link

How to choose between AdoptOpenJDK build and OpenJDK upstream build #222

Closed ddadon10 closed 3 years ago

ddadon10 commented 3 years ago

On the AdoptOpenJDK download page there is now a mention to download the OpenJDK upstream build by Red Hat[1]

I did some extensive research on the difference between those two builds but I am still confused on which one should I choose.

If I get it correctly:

1) The OpenJDK upstream build from RedHat is from the OpenJDK update project[2], and therefore passed the TCK, and are LTS until September 2025 by the OpenJDK Community but does not have commercial support available[3]

2) The AdoptOpenJDK build has the OpenJDK as upstream, works on macOS, and have OpenJ9 available, but have not passed the TCK but also have another test suite[4], is LTS until October 2024 and have commercial support available from IBM

For a JVM with Hotspot running on Linux, the OpenJDK upstream build seems better because it passed the TCK.

What does AdoptOpenJDK bring compared to the upstream build (outside of OpenJ9)?

I don't even understand why there are builds from two different vendors available on one vendor's website.

Thank you very much,

[1] https://adoptopenjdk.net/index.html [2] https://wiki.openjdk.java.net/display/JDKUpdates/JDK11u [3] https://docs.google.com/document/d/1nFGazvrCvHMZJgFstlbzoHjpAVwv5DEdnaBr_5pKuHo/edit#heading=h.t2ifuk717kax [4] https://github.com/AdoptOpenJDK/openjdk-tests

sxa commented 3 years ago

We use Mozilla's cacerts bundle (which can be more up-to-date), we run our full set of AQA tests before each release, and have more platforms available. We also produce rpm/deb/mac/windows installer images as well as publishing to dockerhub. With the exception of the cacerts I would expect ours and the upstream builds to be functionally identical. The TCK omission is purely because we are not currently legally allowed to run the TCK suite, so we cannot verify and report on whether it would pass, however it is built from the same codebase with our own build scripts. We have a very large userbase who have successfully taken our builds and used them in production even without TCK certification because they trust the extensive quality testing which we perform (many of the tests including stress tests were donated by IBM, and of course we run the standard OpenJDK tests provided with the source code). Once we complete the move to Eclipse under the Adoptium branding over the next few months, we will be running the TCK against our builds too.

The AdoptOpenJDK builds are the ones I'd suggest using. We host the upstream ones as a courtesy to Red Hat in case people want to take them instead. Once we move to Eclipse things will hopefully be a little clearer in terms of which are "our" builds and which come from third parties :-)

For reference (hopefyully not to add too much confusion!) we also partner with other VM providers including Alibaba and Huawei and build nightly builds of their versions - also based on HotSpot - on our CI system too, they just aren't currently exposed via the website as we haven't done formal releases from our bulids, although are accessible directly via our jenkins server).

Hope that helps :-)

jerboaa commented 3 years ago

On the AdoptOpenJDK download page there is now a mention to download the OpenJDK upstream build by Red Hat[1]

In a nutshell, the reason why OpenJDK Project Builds exist is to continue what Oracle does with their GPL builds at http://jdk.java.net/, but for OpenJDK 11 and 8. It's a service to the community and intends to be vendor neutral (no patching of the sources, use default config, etc.). Early access builds allow the community to test builds early, for example if they are waiting for a bug fix and want to test it's actually fixed via that means. It's also a best-effort approach, thus no MacOS X builds. There are no formal support guarantees associated with those builds (similar to http://jdk.java.net builds).

ddadon10 commented 3 years ago

Many thanks to both of you for this very clear explanation,

Happy to know that the move to Eclipse Foundation will allow the TCK to run again, I was sure it was a legal reason and not a technical one :)

Hopefully one day the TCK will be transferred from Oracle to the Eclipse Foundation :p

You are doing an awesome job to make the Java community more open, thanks a lot!

smlambert commented 3 years ago

A note for reference by others who may read this issue, on the difference between TCK and AQA, these suites serve different purposes and could be considered complementary.

Suites TCK AQA
Purpose Test for Conformance/Compliance to the Java specification Test for Quality (functional correctness, performance, scalability, security, robustness)
Availability closed under OCTLA (license agreement with Oracle) open-source / available to all

Conformance does not equal quality, from the TCK User guide: "Conformance testing differs from traditional product testing in a number of ways... Conformance testing is not primarily concerned with robustness, performance or ease of use."

Given that we are building and distributing without alteration the source code from the OpenJDK repository, we fully expect that once we again begin to run the TCK (under the OCTLA between Eclipse Foundation and Oracle) that we can claim conformance to the specification. As in, we believe what we build and distribute today will pass the TCK once we have access to that test material and begin running them (again...).


For a simplified/naive example of difference between tests for conformance and tests for quality, I use the waitstaff analogy. Imagine a restaurant has a dress code (specification) for its waitstaff. The code states that waiters must wear closed-toed shoes, black t-shirts, hairnets and 15 or more pieces of flair (minimum flair).

Tests for whether waitstaff conforms to this code are:

If waiters pass this set of tests, they are conformant to the spec.

Tests for quality of the waitstaff include but not limited to:

If waiters pass this set of tests, they are high enough quality to be released. This quality bar can be raised as the issues are addressed and subject under test is improved.

Screenshot 2023-12-07 at 10 02 53 AM
sxa commented 3 years ago

Hopefully one day the TCK will be transferred from Oracle to the Eclipse Foundation :p

Haha, that would be nice but I'm not sure I see that happening any time soon ;-)

You are doing an awesome job to make the Java community more open, thanks a lot!

Thanks - always nice to see messages like this!