WildFly 32 is released!

I’m pleased to announce that the new WildFly and WildFly Preview 32.0.0.Final releases are available for download at https://wildfly.org/downloads.

There’s a lot to talk about this time, so let’s get going!

New and Notable

WildFly Glow 1.0 Final

Ever since the introduction of Galleon several years back, a major WildFly focus has been tooling to improve our users' ability to easily provision an optimal WildFly installation, on-premise and particularly for the cloud. I’m very excited to announce Final availability of a major advance in this area — the set of provisioning tools we call WildFly Glow.

The WildFly Glow tools (a CLI application and a wildfly-maven-plugin integration) analyze your application artifact, determine what WildFly feature-packs and Galleon layers are needed to run your application, and make suggestions about other features (e.g. TLS support) that you may want to include in your optimized WildFly installation. You can take the information WildFly Glow provides and use it in your own provisioning configuration, or you can have WildFly Glow provision a server, bootable jar or Docker image for you. WildFlow Glow also provides a Maven plugin to help you automate provisioning when using Arquillian.

The WildFly Glow documentation gives you a good sense of what WildFly Glow is about. But to really help you understand WildFly Glow’s benefits, I encourage you to read or watch the various posts and videos that the WildFly community has published this year:

Presentations

Jean Francois Denise presented WildFly Glow during the March WildFly Mini Conference

Videos

Also, keep an out here or on the WildFly channel on YouTube channel for an upcoming post from Jean Francois on using WildFly Glow to help with automatic connection to a database when deploying on OpenShift.

User Guides

We’ve added a new Guides page to the wildly.org site. Each guide will show the steps to accomplish a specific, focused task, with links to guides showing any prerequisites and to guides for related tasks. This is something WildFly has long needed, and we’re very excited to see it happening! We’re now up to 10 guides in a variety of topic areas. Please have a look and give us your feedback and suggestions for other guides you’d like to see.

Individual Features

There a number of new individual features in WildFly 32, but before getting into the individual items I want to highlight again the capabilities introduced in WildFly 31 to introduce features at different stability levels. Features can be introduced at one of four stability levels — experimental, preview, community or default — with the ideal outcome being that we promote them in subsequent releases to higher levels. The goal here is to allow users who want to look at features in earlier stages of the development lifecycle to easily do so, without leaving users who are not interested in that in a situation where they may inadvertently use those features.

We introduced this capability in WildFly 31, and added one feature at community stability, but in WildFly 32 we’ve significantly expanded our use of the concept, and added support in our provisioning tooling for it.

I’ll talk more about feature stability levels below, but first let’s talk about the new features.

Security

Provisioning

WildFly development

The following two features are focused on people who are developing either WildFly itself or extensions to it.

Other Goodies

  • Standard WildFly now supports Jakarta MVC via a new mvc-krazo subsystem. This capability was previously introduced in WildFly Preview 31; now it is available in standard WildFly. This feature is provided at the preview stability level.

  • When you start WildFly, instead of always typing long things like -c standalone-microprofile-ha.xml, now you can use short aliases for the standard configuration files. This feature is provided at the community stability level.

  • For all you asciiart fans, when you start WildFly with the --stability=experimental flag, now you get a cool boot message. This feature is provided at the experimental stability level.

WildFly Preview, EE 11 and SE 17

The 32 release introduces a significant inflection in how we are using WildFly Preview. Beginning with this release we are starting to use WildFly Preview to provide a look at what we’re doing for Jakarta EE 11 support. EE 11 won’t go GA before this summer, and standard WildFly won’t support EE 11 before the WildFly 34 release, at earliest. But when we wrapped up 32 development there were milestone, Release Candidate and Final releases of many EE 11 specs and implementations available, so we decided to provide those in WildFly Preview. This means for a number of EE APIs, WildFly Preview no longer provides an EE 10 compatible implementation.

However, for a number of specifications that are planning changes for EE 11 we are still offering the EE 10 variant. In future releases we’ll shift those to the EE 11 variants.

As a result of this shift to EE 11 APIs, WildFly Preview no longer supports running on Java SE 11. Going forward, if you want to use WildFly Preview you’ll need to use SE 17 or higher. A number of EE 11 APIs no longer produce SE 11 compatible binaries, which means an EE 11 runtime can no longer support SE 11.

Note

This removal of support for SE 11 has no impact on standard WildFly. Standard WildFly 32 continues to support running on SE 11. We do, however, encourage users to move to SE 17 or later, as the general Java ecosystem is moving away from SE 11 support, and eventually standard WildFly will as well.

The following table lists the various Jakarta EE technologies offered by WildFly Preview 32, along with information about which EE platform version the specification relates to. Note that a number of Jakarta specifications are unchanged between EE 10 and EE 11, while other EE technologies that WildFly offers are not part of EE 11.

Jakarta EE Technology WildFly Preview Version EE Version

Jakarta Activation

2.1

10 & 11

Jakarta Annotations

3.0.0

11

Jakarta Authentication

3.0

10

Jakarta Authorization

3.0.0-M2

11

Jakarta Batch

2.1

10 & 11

Jakarta Concurrency

3.1.0-M1

11

Jakarta Connectors

2.1

10 & 11

Jakarta Contexts and Dependency Injection

4.1.0

11

Jakarta Debugging Support for Other Languages

2.0

10 & 11

Jakarta Dependency Injection

2.0

10 & 11

Jakarta Enterprise Beans

4.0

10 & 11

Jakarta Enterprise Web Services

2.0

10 1

Jakarta Expression Language

6.0.0

11

Jakarta Faces

4.1.0-M1

11

Jakarta Interceptors

2.2.0

11

Jakarta JSON Binding

3.0

10 & 11

Jakarta JSON Processing

2.1

10 & 11

Jakarta Mail

2.1

10 & 11

Jakarta Messaging

3.1

10 & 11

Jakarta MVC (preview stability only)

2.1

N/A 2

Jakarta Pages

3.1

10

Jakarta Persistence

3.2.0-M2

11

Jakarta RESTful Web Services

3.1

10

Jakarta Security

4.0.0-M2

11

Jakarta Servlet

6.1.0-M2

11

Jakarta SOAP with Attachments

3.0

10 1

Jakarta Standard Tag Library

3.0

10 & 11

Jakarta Transactions

2.0

10 & 11

Jakarta Validation

3.1.0-M2

11

Jakarta WebSocket

2.2.0-M1

11

Jakarta XML Binding

4.0

10 1

Jakarta XML Web Services

4.0

10 1

Notes:

  1. This Jakarta EE 10 technology is not part of EE 11 but is still provided by WildFly.

  2. Jakarta MVC is not of the Jakarta EE Platform or the Web or Core Profile

Warning

Jakarta EE 11 no longer supports running with a Java SecurityManager enabled. As a result, individual Jakarta specification projects may have removed SecurityManager calls from the API jars WildFly Preview integrates, and the associated implementation artifacts may have done the same. As a result, WildFly Preview should not be run with the SecurityManager enabled. Future releases will prohibit use with the SecurityManager enabled if EE 11 APIs are used.

Feature Stability Levels

As I noted above, WildFly now provides new features at different stability levels ---- experimental, preview, community or default.

Out of the box, standard WildFly allows use of features at community or default stability, while WildFly Preview allows preview, community or default. If you wish to allow lower stability level features than the out-of-the-box setting, this can be done using the stability command line parameter:

bin/standalone.sh --stability=experimental

In WildFly 32 we’ve introduced features at all four stability levels. You can identify the stability level of new features by looking at the title of the Jira issue in the "Feature Request" section of the release notes. For features at anything other than default stability, the issue title will be prefaced by one of [Experimental], [Preview] or [Community].

Tooling Support for Feature Stability Levels

Our Galleon-based provisioning tooling has also had updates related to feature stability levels: we’ve added configuration options to allow you to control the stability level of features in your installation. This can be used to do things like:

  • Prevent the provisioning of lower stability features, so they are not available for use even when the --stability server start param is used.

  • Enable the inclusion of lower stability features in the configuration files the provisioning tool generates, avoiding the need to use a post-provisioning tool like the WildFly CLI to incorporate them into the configuration.

To limit your installation level to the highest stability features, you would include the following in your maven plugin configuration:

<galleon-options>
    <stability-level>default</stability-level>
</galleon-options>

To allow Galleon to include lower stability features in your installation’s generated configuration files, you could do something like:

<galleon-options>
    <stability-level>preview</stability-level>
</galleon-options>
Note

If one wants to have different values for configuration files and packages (i.e. filesystem resources like JBoss Modules modules), then the <config-stability-level> and <package-stability-level> options should be used instead of <stability-level>. The use case for using config-stability-level and package-stability-level as an alternative to stability-level is when the user wishes to generate configurations with features at a given stability level while allowing provisioning of packages at a lower level. The presence of the lower stability level packages allows subsequent update of the configuration, e.g. with the WildFly CLI, to enable lower stability features.

The latest wildfly-maven-plugin, wildfly-jar-maven-plugin (for bootable jars) and the WildFly Glow and Galleon tools all support these stability level configuration options. I encourage you to try them out.

Supported Specifications

Jakarta EE

Standard WildFly 32 is a compatible implementation of the EE 10 Platform as well as the Web Profile and the Core Profile. WildFly is EE 10 Platform, Web Profile and Core Profile compatible when running on both Java SE 11 and Java SE 17. WildFly is also a compatible EE 10 Core Profile implementation when running on SE 21.

Evidence supporting our certification is available in the WildFly Certifications repository on GitHub:

Specification Compatibility Evidence

Jakarta EE 10 Full Platform

SE 11

SE 17

Jakarta EE 10 Web Profile

SE 11

SE 17

Jakarta EE 10 Core Profile

SE 11

SE 17

SE 21

MicroProfile

WildFly supports numerous MicroProfile specifications. Because we no longer support MicroProfile Metrics, WildFly 32 cannot claim to be a compatible implementation of the MicroProfile 6.1 specification. However, WildFly’s MicroProfile support includes implementations of the following specifications in our "full" (e.g. standalone-full.xml) and "default" (e.g standalone.xml) configurations as well as our "microprofile" configurations (e.g. standalone-microprofile.xml):

MicroProfile Technology WildFly Full/Default Configurations WildFly MicroProfile Configuration

MicroProfile Config 3.1

X

X

MicroProfile Fault Tolerance 4.0

 — 

X

MicroProfile Health 4.0

 — 

X

MicroProfile JWT Authentication 2.1

X

X

MicroProfile LRA 2.0

 — 

X

MicroProfile OpenAPI 3.1

 — 

X

MicroProfile Reactive Messaging 3.0

 — 

 — 

MicroProfile Reactive Streams Operators 3.0

 — 

 — 

MicroProfile Rest Client 3.0

X

X

MicroProfile Telemetry 1.1

 — 

X

Compatibility evidence for the above specifications that are part of MicroProfile 6.1 can be found in the WildFly Certifications repository on GitHub.

Java SE Support

I’m pleased to be able to say that our recommendation is that you run WildFly 32 on Java SE 21, as that is the latest LTS JDK release where we have completed the full set of testing we like to do before recommending a particular SE version. WildFly 32 also is heavily tested and runs well on Java 17 and Java 11.

This recommendation to run on SE 21 is a shift from previous releases, where we recommended SE 17. This is because during the WildFly 32 development cycle we completed the qualification exercise that we go through before recommending an LTS SE release.

Our recommendation of SE 21 over earlier LTS releases is solely because as a general principle we recommend being on later LTS releases, not because of any problems with WildFly on SE 17 or SE 11.

One reason to use later SE versions is because it gets you ahead of the curve as WildFly and other projects begin to move on from supporting older SE releases.

In the WildFly 30 release announcement I indicated that WildFly 30 would likely be the last feature release to support SE 11. Obviously, that is not the case as we still support SE 11 in standard WildFly 32. However, as noted above, WildFly Preview no longer supports SE 11. We’re continuing to evaluate our plans around SE 11 support, and I’ll be sure to post here as we make decisions. I do encourage WildFly users to prepare now for any eventual change to move off of SE 11.

While we recommend using an LTS JDK release, I do believe WildFly runs well on JDK 22. By runs well, I mean the main WildFly testsuite runs with no more than a few failures in areas not expected to be commonly used. We want developers who are trying to evaluate what a newer JVM means for their applications to be able to look to WildFly as a useful development platform.

Please note that WildFly runs in classpath mode.

Incompatible Changes

We removed the deprecated Narayana compensations module from WildFly 32. We suggest any users of this functionality investigate WildFly’s support for MicroProfile LRA.

As noted above, WildFly Preview no longer supports running on Java SE 11. Users also should not run WildFly Preview 32 with a Java SecurityManager enabled.

Release Notes

The full WildFly 32 release notes are available in GitHub. Issues fixed in the underlying WildFly Core 24 release are listed in the WildFly Core JIRA.

Please try it out and give us your feedback, in the WildFly google group, Zulip or JIRA.

Meanwhile, we’re busy at work on WildFly 33!

Best regards,

Brian