WildFly 33 is released!

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

New and Notable

Individual Features

There a number of new features in WildFly 33, but before getting into the specific items I want to mention 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.

So, here’s what’s new:

WildFly, EE 10 and SE 21

I am very happy to be able to announce that standard WildFly 33 is a compatible implementation of the Jakarta EE 10 Web Profile and Full Platform when running on Java SE 21.

WildFly has been able to certify as a compatible EE 10 Core Profile, Web Profile and Full Platform implementation when running on SE 11 and SE 17 since the WildFly 27 release. We’ve also been able to certify as EE 10 Core Profile compatible on SE 21 since WildFly 30. What’s new is the ability to add Web Profile and Full Platform on SE 21 to the compatibility matrix.

My thanks to Scott Marlow for driving this effort and to James Perkins for his invaluable help. And kudos to the Jakarta EE community in general for making this possible. It has been a Jakarta EE goal since EE 9.1 that vendors should be able to certify as compatible when running on SE releases that didn’t even exist when the EE version went GA. This doesn’t happen by magic; certifying as EE compatible requires passing a number of large TCKs, and like any large piece of software, adaptations to the TCKs are sometimes needed to allow proper execution on a new Java SE version. Those adaptations require volunteer effort from the community of developers who work on Jakarta EE. My thanks to Paul Nicolucci, Gurunandan Rao, Jason Mehrens, Lance Andersen and Arjan Tims for your hard work on Jakarta EE in this area! And my thanks and apologies to anyone else involved who I’ve neglected to mention.

Supported Specifications

Jakarta EE

Standard WildFly 33 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 Java SE 11, Java SE 17 and Java 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

SE 21

Jakarta EE 10 Web Profile

SE 11

SE 17

SE 21

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 33 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.

WildFly Preview, EE 11 and SE 17

As I noted in the WildFly 32 release announcement, beginning with that release we are using WildFly Preview to provide a look at what we’re doing for Jakarta EE 11 support. EE 11 won’t go GA before later this year, and we don’t expect standard WildFly to support EE 11 before the WildFly 35 release. But there are milestone, Release Candidate and Final releases of many EE 11 specs and implementations available, so we are providiong 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.

The following table lists the various Jakarta EE technologies offered by WildFly Preview 33, 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

11

Jakarta Batch

2.1

10 & 11

Jakarta Concurrency

3.1.0

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

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

11

Jakarta RESTful Web Services

4.0

11

Jakarta Security

4.0.0

11

Jakarta Servlet

6.1.0

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

11

Jakarta WebSocket

2.2.0

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

Java SE Support

Our recommendation is that you run WildFly 33 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 33 also is heavily tested and runs well on Java 17 and Java 11.

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.

However, WildFly Preview no longer supports SE 11, as the baseline for Jakarta EE 11 is SE 17. We’re continuing to evaluate our plans around SE 11 support in standard WildFly, 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

Running WildFly Preview 33 with the Java SecurityManager enabled is no longer allowed. In WildFly Preview 32 it was noted as being unsupported, but with 33 booting a WildFly Preview server will fail if the SecurityManager is enabled. This is because the Jakarta EE 11 specifications no longer support the SecurityManager, and it is not possible for WildFly to provide a consistent, reliable SecurityManager experience once the spec APIs and implementation projects we integrate no longer support it.

As noted above, WildFly Preview no longer supports running on Java SE 11.

Known Issues

The Arquillian version specified in the WildFly 33 end user wildfly-ee-with-tools BOM results in test failures with JUnit 5. Users can work around this problem by directly controlling the Arquillian version and using Arquillian 1.9.0.

<dependency>
    <groupId>org.jboss.arquillian.container</groupId>
    <artifactId>arquillian-container-test-spi</artifactId>
    <version>1.9.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.jboss.arquillian.junit</groupId>
    <artifactId>arquillian-junit-container</artifactId>
    <version>1.9.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.jboss.arquillian.protocol</groupId>
    <artifactId>arquillian-protocol-servlet-jakarta</artifactId>
    <version>1.9.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.jboss.arquillian.junit5</groupId>
    <artifactId>arquillian-junit5-container</artifactId>
    <version>1.9.0</version>
    <scope>test</scope>
</dependency>

Release Notes

The full WildFly 33 release notes are available in GitHub. Issues fixed in the underlying WildFly Core 25 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.

And, with that, onward to WildFly 34!

Best regards,

Brian