HttpWizard is a Dropwizard application built with Groovy which represents my current thinking for what an "ideal web application stack" looks like at this point in time (late-2016).
-
Dropwizard - Itself using "the best" libraries for implementing RESTful APIs on the JVM, e.g. Jersey and Jackson
-
Groovy - Concise and easy to write, support for many dynamic language behaviors (closures, collection enumerations, dynamic dispatch, etc).
-
Gradle - Fast and easy to use build and dependency declaration tool. Easily extended in Groovy, with a myriad of plugins to support various additional use cases (e.g. building containers, invoking Bower, etc)
-
Hibernate - Mature, sometimes arcane, Java persistence (DB) layer
-
React - Solid JavaScript library for building user interfaces
-
Docker - A deployment packaging mechanism which can deliver the app easily to a container service such as Kubernetes.
Based on my current thinking, I believe the JVM serves as an ideal base for a modern web application. This is assuming Java Runtime Environment (JRE) 8 or higher. I believe the reasons for the JVM are fairly self-evident but in short:
-
High-performance threading and parallelism implementation
-
Supports numerous languages, with "Java" being the primitive language to implement extensions which require additional speed
-
Library support for practically any protocol, format, etc
-
Easily tuned and monitored using off-the-shelf tools