With the recent release of Red Hat Enterprise Linux 8.2, we also added the first Red Hat build of OpenJDK Universal Base Images. These General Availability (GA) images for OpenJDK 8 and OpenJDK 11 set a new baseline for anyone who wants to develop Java applications that run inside containers in a secure, stable, and tested manner.
In this article, we introduce the new OpenJDK Universal Base Images and explain their benefits for Java developers. Before we do that, let's quickly review what we know about UBIs in general.
About Universal Base Images
OCI-compliant container base operating system images with complementary runtime languages and packages that are freely redistributable. Like previous base images, they are built from portions of Red Hat Enterprise Linux (RHEL). UBI images can be obtained from the Red Hat container catalog and be built and deployed anywhere.
In other words, UBIs help application developers reach the secure, stable, and portable world of containers. These images are accessible using well-known tools like Podman/Buildah and Docker. Red Hat Universal Base Images also allow users to build and distribute their own applications on top of enterprise-quality bits that are supportable on Red Hat OpenShift and Red Hat Enterprise Linux.
The Red Hat build of OpenJDK
The Red Hat build of OpenJDK is based on the upstream OpenJDK 8u and OpenJDK 11u community-led projects. Red Hat provides significant contributors to both projects and adds additional future features into Red Hat builds.
This version includes:
- The Shenandoah ultra-low pause time garbage collector.
- Several installation options, including RPM, MSI installers, and also a ZIP version.
- Java Web Start support (Windows only; for Linux, please use the Red Hat Enterprise Linux RPMs).
The Red Hat build of OpenJDK is updated at least once per quarter for security and other bug-fix enhancements. Red Hat offers support and maintenance over stated periods for the major versions of OpenJDK. In this case, we offer long-term supported (LTS) versions until June 2026 and October 2024 for versions 8 and 11, respectively. (See also: OpenJDK Life Cycle and Support Policy.)
For more information, check out the new images in the Red Hat Ecosystem Catalog:
Get started with the OpenJDK UBI images
The OpenJDK UBI images have default startup scripts that automatically detect application JARs and launch Java. The script's behavior can be customized using environment variables. Take a look at
/help.md within the container to find out more.
Meanwhile, here is a brief example of a Dockerfile that adds an application called
testubi.jar to the OpenJDK 11 UBI8 Image:
FROM registry.access.redhat.com/ubi8/openjdk-11 COPY target/testubi.jar /deployments/testubi.jar
Extending the Universal Base Image EULA
When we introduced Universal Base Images in May 2019, we included an end-user license agreement (EULA) that gave Red Hat partners the ability to freely use and redistribute a substantial number of RHEL packages that can be deployed on both Red Hat and non-Red Hat platforms. Under this agreement, developers could build safe, secure, and portable container-based software and deploy it anywhere. The feedback has been overwhelmingly positive, and we thank you for it! We also learned that you needed more, so we're expanding the package set for customers.
Application developers in the Red Hat Partner Connect program can now build container apps from the full set of Red Hat Enterprise Linux (RHEL) user-space packages (non-kernel) and redistribute them through the container registry of their choice. This extension nearly triples the number of packages available compared to UBI-only.
If you are looking to develop Java applications in a container—and you also want to be able to trust the underlying base in terms of security, reliability, and stability—then the OpenJDK UBI8 images could be the solution that you are seeking. We hope you will try the new OpenJDK Universal Base Images for building containerized Java applications in a hybrid cloud.
In the coming weeks, we will continue this update with a more detailed introduction to working with the OpenJDK UBIs, including more examples of how to handle OpenJDK UBI8 container images. Stay tuned!