Basics of WildFly Swarm
WildFly Swarm is a project that has taken the WildFly Java Application Server and deconstructed it into fine-grained parts. WildFly Swarm then allows the selective reconstitution of those parts back together with your application to allow building self-contained executable "uberjars".
The point of these machinations is to support microservices while providing just-enough-appserver to support whatever subset of traditional JavaEE APIs your application requires.
Additionally, WildFly Swarm brings other state-of-the-art components to your application, integrating them seamlessly. This includes authentication/authorization from Keycloak, client-side load-balancing via NetflixOSS Ribbon/Hystrix, and log aggregation using Logstash.
Monolithic Application Server
When using a traditional monolithic application server, you first install the entire server, and then deploy your application on top of it. In the case of microservices, you might end up with an app-server that supports significantly more functionality than your application requires. This can lead to an excess use of resources.
WildFly Swarm Uberjar
In the WildFly Swarm "uberjar" scenario, just enough application server is wrapped around your application. Any un-needed parts are simply excluded. This results in a much smaller usage of resources. Additionally, a single artifact is produced which can be shuffled along a continuous deployment pipeline.
In all cases, WildFly Swarm requires JDK8 or higher.
If you’re using Maven, version 3.2.5 or higher is recommended.
A well-defined collection of capabilities to add. In some cases, a fraction maps directly to a subsystem from WildFly, but in other cases (e.g. Jolokia) a fraction may involve different functionality.
A self-contained, executable Java archive. In the case of WildFly Swarm uberjars, it is a single
.jarfile containing your application, the portions of WildFly required to support it, an internal Maven repository of dependencies, plus a shim to bootstrap it all.