This is something that I've been pondering since reviewing the number of languages and frameworks I sampled in 2018. Time to pick winners.
Back-end:
- backendless if possible (e.g. use GraphQL, Firebase, etc)
- minimal (1:1 with document store):
PostgreSQL/JSONB, FoundationDB, MongoDB, RethinkDB, CouchDB(mobile-sync)
- relational: PostgreSQL(master/replica), MySQL(multi-master), CockroachDB/TiDB (sharded)
languages: Elixir(Phoenix), Kotlin/Java(Javalin), Clojure(Liberator), Go, Kemal(Crystal)
Front-end:
- HTML+JS using Phoenix/LiveView (or Vaadin?)
- Vue.js (possibly Elm) for SPA
Runners-up:
Spring - slow startup, JPA/Hibernate quirks, latency spikes (gc? of JPA/Hibernate)
Micronaut - could be the next big thing (too much like Spring, learning curve)
Ktor - coroutine support potential interesting, prefer a Kotlin+Java ecosystem
SparkJava - too bare (used with Sql2o), Javalin is a spiritual successor
DropWizard - older, poor documentation. But JDBI is sweet to use with other microframeworks
Amber (Crystal) - Kemal has a much faster edit/compile/run cycle
Rails/Sinatra/Web2py/Django/Flask/etc - prefer static typing and faster/smaller runtime
This is obviously still too long a list. Continue testing and culling.
Back-end:
Front-end: Runners-up: This is obviously still too long a list. Continue testing and culling.