back to all blogsSee all blog posts

Support for Java 21 in Open Liberty

image of author
Laura Cowen on Oct 17, 2023
Post available in languages: 日本語 ,

Java 21 is finally here! Java 21 is the first long-term support (LTS) release since Java 17 was released two years ago. It offers some new functionality and changes that you’ll want to check out for yourself. In particular, there’s the introduction of virtual threads.

In this release of Open Liberty, we also have an update to the featureUtility command; the command now verifies feature authenticity by default when you install a new feature into Liberty. Also introduced in this release is the ability to include all files in a specified directory in your server configuration.

In Open Liberty

View the list of fixed bugs in

Develop and run your apps using

If you’re using Maven, include the following in your pom.xml file:


Or for Gradle, include the following in your build.gradle file:

buildscript {
    repositories {
    dependencies {
        classpath ''
apply plugin: 'liberty'

Or if you’re using container images:


Or take a look at our Downloads page.

If you’re using IntelliJ IDEA, Visual Studio Code, or Eclipse IDE, try our open source Liberty developer tools for efficient development, testing, debugging, and application management, all within your IDE.

Ask a question on Stack Overflow

Support for Java 21

Try out the new changes in Java 21 now and test your applications, microservices, and runtime environments.

To run Open Liberty with Java 21:

  1. Download and install Open Liberty, or later.

  2. Download the latest release of Java 21 from

  3. Edit your Open Liberty runtime server.env file to point JAVA_HOME to your Java 21 installation.

  4. Start testing!

Here are some highlights of the changes between Java 18 and Java 21:

But perhaps the most anticipated one of all is the introduction of virtual threads in Java 21:

Virtual threads were designed to provide higher throughput for running tasks that spend most of their time blocked, like waiting for I/O operations. Will the impact of virtual threads live up to the anticipation? Find out for yourself by trying them out in your applications that run on the best Java runtime, Open Liberty!

For more information on Java 21, see:

featureUtility now verifies feature signatures by default

The featureUtility command now verifies feature signatures before installing the feature into the Liberty runtime. It identifies whether the feature originated from the Liberty development team or is a third-party user feature.

Previously, the featureUtility tool only verified checksums. While checksums are essential for integrity (showing that the file has not been tampered with), verifying checksums did not ensure the authenticity of downloaded files.

We’ve now implemented an additional step in the process of verifying feature signatures to check both the authenticity and integrity of features that are downloaded from the Maven Central repository.

When running the featureUtility command:

  • The default behavior is now --verify=enforce, meaning that it verifies all specified Liberty features.

  • To keep the old behavior instead, you can skip the verification process by using the --verify=skip parameter.

  • Alternatively, you can set the verification option through environment variables or a file.

For more information, see:

Include all files in a specified directory in your server configuration

Check out the blog post’s Include all files in a specified directory in your server configuration section.

Get Open Liberty now