Since the rebranding of WildFly Swarm 2018.5.0 to Thorntail 2.0.0 in late June, Red Hat has released Thorntail versions 2.1.0 and 2.2.0 within a three-week time frame since mid-August. Along with many bug fixes, especially related to MicroProfile, new features include:
- Compliance with MicroProfile 1.3
- Implementation of MicroProfile through SmallRye
- Automated migration process
Red Hat documented some potential code breaks due to changes in OpenTracing and Jaeger and log message codes
Background
Heritage WildFly Swarm is based on WildFly, Red Hat's open source application server. As with traditional monolithic application servers, an application is deployed on top of WildFly as shown below.
WildFly Swarm, on the other hand, is a "deconstructed" version of WildFly such that developers choose only the APIs necessary for their application that is packaged and run as an UberJar. The application shown below only uses JAX-RS.
Thorntail 2.0.0
When asked about the name change in a recent interview with InfoQ, Bob McWhirter, senior consulting engineer at Red Hat, stated:
While we lived with "WildFly Swarm" as a name for a few years, we noticed that "Swarm" is fairly overloaded, with many companies and projects using it. Additionally, as we move forward with a new architecture for the project, including "WildFly" in the name started to make less sense. When we started, we were absolutely an extension to the core WildFly project, but we've grown into our own, and needed our own identity. Given both of those reasons, we decided a new name was in order.
Concurrent with the name change, Red Hat abandoned the more recent popular versioning convention, YYYY.MM.VV
, and returned to the more traditional versioning convention, major.minor.micro
. Hence the change from WildFly Swarm 2018.5.0 to Thorntail 2.0.0.
The process to migrate a Maven project from WildFly Swarm to Thorntail was documented by Red Hat as follows:
- Change any references of
org.wildfly.swarm
ingroupId
toio.thorntail
. - Change any references of WildFly Swarm versions, such as
2018.5.0
, to2.0.0.Final
. - Change any references of
wildfly-swarm-plugin
inartifactId
tothorntail-maven-plugin
. - The suffix of the generated UberJar has changed from
-swarm.jar
to-thorntail.jar
. - The Maven plugin name has changed from
wildfly-swarm:run
tothorntail:run
.
Therefore, the WildFly Swarm Java and Maven commands,
$ java -jar target/demo-0.1.0-swarm.jar
$ mvn wildfly-swarm:run
Change to the following commands for Thorntail:
$ java -jar target/demo-0.1.0-thorntail.jar
$ mvn thorntail:run
Thorntail 2.1.0
Thorntail is fully compliant with MicroProfile 1.3 through SmallRye, a new community-driven organization providing shared implementations of the MicroProfile specification. Ken Finnigan, senior principal software engineer at Red Hat, initiated this move to SmallRye. In a recent Red Hat blog, it was stated:
MicroProfile is a fast-moving target and has evolved a lot since it was announced two years ago. Keeping track of this fast evolution in specifications and the matching implementations requires a lot of energy for all vendors, so Ken proposed to put the common parts of these implementation efforts into a single vendor-neutral implementation of MicroProfile, whose project name is SmallRye.
At smallrye.io, you can see that this community-driven project is doing well: all MicroProfile specifications now have their own implementation.
Source code for SmallRye can be found on GitHub.
Version 2.1.0 introduced a mechanism to automate the migration of a Maven project from WildFly Swarm to Thorntail by executing the following Maven command:
mvn io.thorntail:thorntail-maven-plugin:2.1.0.Final:migrate-from-wildfly-swarm
This will change all groupId
and artifactId
references from WildFly Swarm to Thorntail along with corresponding version numbers.
<properties>
<version.wildfly.swarm>2018.5.0</version.wildfly.swarm>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>bom</artifactId>
<version>${version.wildfly.swarm}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<properties>
<version.wildfly.swarm>2.1.0.Final</version.wildfly.swarm>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.thorntail</groupId>
<artifactId>bom</artifactId>
<version>${version.wildfly.swarm}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
A potential code break arose with a change to Jaeger and Open Tracing. Previously, adding Jaeger to a project meant that MicroProfile's Open Tracing was included. With version 2.1.0, however, Open Tracing was decoupled from Jaeger to better support Open Tracing. As stated in the release:
Now, the
jaeger
fraction is only used to provide tracer configuration. You are expected to bring in the tracing fraction manually; either the oldopentracing
, or the newmicroprofile-opentracing
.If you previously had a dependency on the
jaeger
fraction and not on theopentracing
fraction, you have to add an explicit dependency on theopentracing
fraction to retain the same behavior.
Thorntail 2.2.0
There were many bug fixes for this latest release, especially related to the MicroProfile APIs, Metrics, JWT, OpenAPI, and Rest Client.
Version 2.2.0 introduced new log message codes to reflect the name change to Thorntail. What was once WFSWARMnnnnn
or WFSxxxnnnnn
is now THORNnnnnn
or TTxxxnnnnn
. The numeric codes remain the same. This is only a breaking change for developers using parsers that search for the old message codes.
New Logo
There was an intentional delay in releasing a new logo for Thorntail. As McWhirter explained in his recent interview with InfoQ:
The logo is being worked on currently by the awesome JBoss.org design team. We hope to have some candidates in the coming weeks. We wanted to release the name prior to the logo because of Red Hat Summit, plus we wanted to push the new v4.x proof-of-concept of the new architecture.
The wait is over as the new logo was just released on September 17, 2018:
Resources
- WildFly Swarm Users Guide
- Right Size Your Services with WildFly and WildFly Swarm by Dimitris Andreadis (October 2106)
- Q&A with Bob McWhirter on WildFly Swarm Rename to Thorntail by InfoQ (May 14, 2018)
- Announcing Thorntail 2.0.0.Final by the Thorntail Team (June 26, 2018)
- MicroProfile REST API with MongoDB, Hibernate OGM and Thorntail by Hayri Cicek (August 7, 2018)
- Announcing Thorntail 2.1.0.Final by the Thorntail Team (August 15, 2018)
- Getting Started with MVC 1.0 (JSR-371) by Hayri Cicek (August 20, 2018)
- Announcing Thorntail 2.2.0.Final by the Thorntail Team (September 4, 2018)