Preface

 

Most web frameworks have a lot of assumptions built into them. When you’re building whatever the framework designers envisaged, they work very well. But if you need to depart from their happy paths, all that prescriptiveness starts to work against you.

Full-stack web frameworks with server-side rendering, using a relational database are common, and in the past I used them all the time. But over time, I progressively departed from using their standard components.

I began to build web APIs and microservices, often using nonrelational data stores, asynchronous requests, and server-push technologies. I was installing more dependencies to layer extra functionality on top of already large and complex frameworks. Simple tasks were difficult, because I was fighting against the basic assumptions of the frameworks I was using.

Then I discovered Scalatra. The language was unfamiliar at first, but the friendly community and incredibly simple HTTP DSL made it easy to get started.

Suddenly I was working in the environment I always wanted. The Scala language gave me all the speed and correctness benefits of static typing without the Java or C# boilerplate, a simple and productive language syntax akin to Ruby or Python, and access to a wealth of high-quality libraries.