httpwizard/README.adoc

52 lines
1.9 KiB
Plaintext

= httpwizard
HttpWizard is a
link:http://dropwizard.io[Dropwizard]
application built with
link:http://groovy-lang.org[Groovy]
which represents my current thinking for what an "ideal web application stack"
looks like at this point in time (late-2016).
== Tools
* link:http://dropwizard.io[Dropwizard] - Itself using "the best" libraries for
implementing RESTful APIs on the JVM, e.g. Jersey and Jackson
* link:http://groovy-lang.org[Groovy] - Concise and easy to write, support for
many dynamic language behaviors (closures, collection enumerations, dynamic
dispatch, etc).
* link:http://gradle.org[Gradle] - Fast and easy to use build and dependency
declaration tool. Easily extended in Groovy, with a myriad of
link:http://plugins.gradle.org[plugins] to support various additional
use cases (e.g. building containers, invoking link:http://bower.io[Bower],
etc)
* link:http://openjdk.java.net[OpenJDK] <<jvm, see below>>
=== In-progress
* link:http://hibernate.org/[Hibernate] - Mature, sometimes arcane, Java
persistence (DB) layer
* link:https://facebook.github.io/react/[React] - Solid JavaScript library for
building user interfaces
* link:http://docker.io[Docker] - A deployment packaging mechanism which can
deliver the app easily to a container service such as
link:http://kubernetes.io[Kubernetes].
[[jvm]]
=== Java Virtual Machine
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