Had a Spring/Boot app that had too slow startup times. Used SparkJava but it was too bare-bones.<p>Switched to Javalin with JDBI and it's pretty good.
We are 100% convinced that if you want to save time on development, you need to be using a component based framework for internal applications, where exact looks aren’t as important as functionality. PrimeFaces provides an incredible amount of components.<p>The other indispensable technology is CDI. This dependency injection specifications is very minimal and allows you to do perfect composition with your code, and makes mock testing with Mockito a breeze.<p>Quarkus is awesome, but it can’t run PrimeFaces directly. This would be best the best back, and if you wanted to write an SPA.<p>Another option is TomEE, which can run PrimeFaces, but it’s quirky. This would be best if you want to write a full stack application.<p>Spring/ThymeLeaf is quite good but is not a component framework. This is sort of in between and follows the MVC pattern.<p>There are so many choices compared to other languages and Java is faster than everything else out of the box.
Quarkus<p>Among others, hot-reload (in dev mode), low memory footprint, fast start, sane error messages (compared to Spring) are something that attracted us.
JAX-RS<p>It's super-easy to use for writing JSON back ends, just like Sinatra.<p>You can add a template engine like Freemarker to output HTML also.