This document describes the Shibboleth project's policy with regard to the many different available distributions of the Java Development Kit used to develop and deploy the project's Java products.

The audience for this document is the project itself; its purpose is to specify the level of testing given to each distribution during the development and release of new versions of the products, and to indicate the level of support provided to deployers relying on each distribution.

Deployers will find that the Requirements section of the documentation for each product will be more suitable to their needs than this document, which inlcudes many technical details relevant only to developers.

Each version of the Java SE Development Kit (JDK) required to build or run Java software from the Shibboleth Project is available from several distribution sources. Different distributions of the same JDK may be licensed under different terms, may be built from different source trees, or may incorporate patches specific to that distribution. This document serves to collate information about different JDK distributions, and to indicate how each is treated by the Shibboleth Project.

For a given Product Platform, one distribution is designated as the primary distribution and is used by the Shibboleth Project as its reference:

Specific distributions are fully supported for use with the software. This means:

Additional distributions may be partially supported for use with the software. This means:

Further distributions will be tested at the project's discretion as part of the Jenkins -multi  jobs. The purpose of this testing is to make the project aware of potential incompatibilities in advance of any requirement to address them.

The following specific distributions, and any others not covered above, are neither tested nor supported:

When not specified:

Java Distributions for the Java 11 Platform

The Java 11 Platform is used by:

The primary distribution for this platform is Amazon Corretto 11 for Linux.

The following distributions are fully supported:

The following distributions are partially supported:

We will also test the following, although they are not supported:

Java Distributions for the Java 7 Platform

The Java 7 Platform is used by:

The primary distribution for this platform is Oracle Java 7 for Linux (from Java SE 7 Archive Downloads).

The following distributions are fully supported:

The following distributions are partially supported:

We will also test the following, although they are not supported:

We no longer test against recent non-LTS versions of Java, as they are incompatible with the version of Spring Framework used.

Rationale by Distribution

This section discusses each distribution so as to give a brief rationale for its level of support.

Oracle JDK

We have historically recommended the use of Oracle's "standard" JDK on all platforms. Prior to Java 8, one reason for this was that some deployers have had problems with the OpenJDK implementations shipped by various vendors, including memory leaks.

Since that time, however, two important changes mean that we no longer take this position:

As a result, we no longer anticipate that the majority of our deployers will go to production using Oracle's product, and it therefore makes less sense for us to regard it as the "canonical" version of Java in production. At least for our customers, that is now more likely to be some flavour of OpenJDK.

Oracle’s support roadmap can be found at https://www.oracle.com/java/technologies/java-se-support-roadmap.html.

Oracle OpenJDK

Oracle produces OpenJDK builds through the early development phases of each new version of Java. As these provide the best available indication of the contents of the new version, we test these builds as part of our long term support of the evolution of Java, but we do not support these builds for production use.

Note that Oracle OpenJDK builds only exist during the early access stage of a new release to around six months after general availability. After this time, Oracle ceases OpenJDK builds and the previous ones are no longer available.

Amazon Corretto

Amazon Corretto provides builds of both OpenJDK 8 and OpenJDK 11 for our two most important deployment platforms (Linux and Windows) in both "real installer" and "tarball" packages. This makes it a good distribution for us to recommend to our deployers. In addition, they provide similar builds for macOS, which is important to several of us as developers.

The Corretto documentation provides information about the specific patches applied by Amazon to the upstream generic OpenJDK release, which provides a reassuring level of transparency.

There is no cost to use Amazon Corretto in production. It is used internally by Amazon for its own services.

We have selected Corretto as the current best all-round Java distribution for our own use, and for our deployers.

Amazon’s support lifecycle for Corretto can be found at Amazon Corretto FAQs:

Red Hat OpenJDK

Red Hat have a critical role in the JDK updates projects for both Java 8 and Java 11. They provide only two OpenJDK builds themselves, however: for Red Hat Enterprise Linux, and for Windows.

We anticipate that Red Hat's "vendor" OpenJDK (both OpenJDK 8 and OpenJDK 11) for their own Red Hat Enterprise Linux will be used by many of our deployers simply because of the convenience factor. We therefore support the use of Red Hat's OpenJDK release in this context.

We do not support Red Hat's OpenJDK releases for Windows at this time, and we do not test against them.

Red Hat’s policies around OpenJDK support are described at https://access.redhat.com/articles/1299013:

Debian OpenJDK

Debian 9, also known as "stretch", the “oldoldstable” release at 2021-08-23, ships a vendor-supplied OpenJDK 8 only. This is partially supported for the Java 7 platform and IdP v3, but is obviously ineligible for any support for the Java 11 platform and IdP v4.

Note, however, that Amazon Corretto 11 is fully supported under Linux generically and is available in .deb  packaging. It may therefore be suitable for deployers using Debian 9 but we do not test this specific combination.

Debian 9’s long-term support ends on 2022-06-30, see https://wiki.debian.org/LTS.

Debian 10, also known as "buster", the “oldstable” release at 2021-08-23, ships a vendor-supplied OpenJDK 11 only. This is partially supported for both the Java 11 platform and IdP v4, and for the Java 7 platform and IdP v3.

Debian 10’s long-term support ends on 2024-06-30, see https://wiki.debian.org/LTS.

Debian 11, also known as “bullseye”, the “stable” release at 2021-08-23, ships a vendor-supplied OpenJDK 11 and a pre-release OpenJDK 17.

Adoptium (formerly AdoptOpenJDK)

Adoptium provides automated OpenJDK builds for a wide variety of target architectures and operating systems, and with a choice of JVMs (HotSpot or OpenJ9).

We think Adoptium is a good (and sometimes the only) source of OpenJDK for niche environments, but we do not currently support or test Adoptium builds.

GraalVM

GraalVM is an emerging alternative Java VM which shows promise particularly for mixed-language environments. It is available in editions based either on Java 8 or on Java 11.

Note that GraalVM includes a different JavaScript engine than was shipped with Java 8 or Java 11.

We do not test against GraalVM, and we do not support it for production use.