52 lines
1.9 KiB
Plaintext
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
|
|
|