
Fat JAR approach
The idea of creating a Fat JAR (all-inclusive JAR), is to allow us to have a single deployable unit that has all the application and runtime code in it. Thus, instead of deploying your application to an application server, you bundle everything needed to run your application into a JAR file, which includes an embedded server. This single artifact can then be promoted through your various environments, such as the test stage, till production.
Here’s the logical view for a Fat JAR based deployment with bundled server runtime/libs:

There already exist new frameworks that make it fairly easy to get started with microservices. We will look at two popular choices, WildFly Swarm and Spring Boot. WildFly Swarm is based on the WildFly application server, while Spring Boot is a popular choice among developers.
Both Spring Boot and WildFly Swarm allow us to build Uber JARs that are self-contained and have a small memory footprint, as they pack only the essentials of what the application needs. Both of these projects provide good support for developing microservices by means of third party library integrations such as Netflix OSS, which is a set of frameworks and libraries for building microservice applications.
Other noteworthy mentions include DropWizard, which also offers a similar approach to building an Uber JAR. We will see examples of WildFly Swarm and Spring Boot in the sections to follow.