There's always a trade-off with either fat JARs or light WARs deployed to an app server. Neither of them is actually more lightweight in all aspects.
- Fat JAR may contain only what is necessary, there's no easy and straightforward way to build it as most solutions like Spring Boot and WildFly Swarm require a special maven plugin and configuration.
- Light WARs may contain only the business logic, but there's no easy and straightforward way to run them in an app server as most solutions require a special deployment tool or web interface to deploy pps
I think both ways to package and run enterprise applications are valid for certain usecases and should be addressed
- Building fat JARs can be as simple as using a standard tool or a common maven plugin
- Running light WARs can be also almost as simple as running a JAR, just run `java -jar appserver.jar -app application.war` or `appserver -app application.war`
The latter is already supported by Payara Micro and Hollow WildFly Swarm (e.g. `java -jar payara-micro.jar --deploy application.war` or `java -jar wildfly-swarm-hollow.jar application.war`). Traditional app servers like GlassFish also provide command-line tools that can do deploy a WAR application into a running server, e.g. GlassFish with `asadmin deploy application.war`. It could be standardized to simplify running and deploying plain WARs.
There already were attempts to do this with JSR 77 which is too complicated and with JSR 373 which was planned for Java EE 8 but withdrawn. I also created my own proposal for a standard structure of fat JARs, which also covers running WARs with the help of an external runtime from command line:
https://github.com/OndrejM/fat-jar-spec Maybe now is the right time to discuss whether it makes sense to standardize something like that in JavaEE.next.
Ondro