Spring Boot vs Drop Wizard

In my experience

When I started out writing Java, I started with Spring Boot, then I became comfortable with it, most of my projects are built with Spring Boot, then I was fortunate to join a company that only used Drop Wizard, then I learned that too and I'm comfortable with as well. I was discussing with a friend recently about these technologies and it appeared we were at a stalemate, it's obvious we were both fanboys of our preferred framework, so that conversation did not end with a clear winner. This article is a brief comparison between the two based on my experience, so let's get to it.

Dependency Injection

This was the shock I got when I started using Drop Wizard, I use dependency injection a lot, and with Spring it doesn't feel like I'm going out of my way to use dependency injection, it comes out of the box with Spring and I find it very easy to use. When I first started with Drop Wizard, I was implementing dependency injection myself before I discovered there were third-party libraries I could install to get it to work with Drop Wizard, Google's Guice is one of such libraries, it's very good.

Community

I found that Spring was easier for me to learn, I always found solutions to my problems quickly, thanks to the community. I easilly found code samples or articles that would help me. I can't say the same for Drop Wizard, there is a community as well, and you get solutions to your problems, but in my case, you might have to do a deeper search.

Speed to bootstrap projects

I find that with Drop Wizard, from zero to running a web application locally is a lot faster, Creating a project and getting a web server running is faster with Drop Wizard. Bootstrapping projects in Spring is not bad, but it's not as fast as Drop Wizard. Starting a project in Drop Wizard is easy, you just need one dependency in your pom.xml and you are good to go.

Use of Annotations

Springboot uses this a lot, it helps with boilerplate code. Drop Wizard does this as well, but not as much as Spring. These annotations can help reduce the lines of code you write, and also make your work faster, however, the use of annotations is not always the best, it may include some bloatware to your code since you are not in charge of how it's implemented. Using one annotation may internally load a bunch of classes, adding hundreds of lines of code to your app, and increasing the method calls on your stack, which would ultimately lead to it using more memory. Sometimes, it's better to just implement what you need. Be careful when you use these.

HTTP Servers

Drop Wizard is wired to only use Jetty as a servlet container, while Spring has options for Jetty, Tomcat, and Undertow. Spring's default is Tomcat, I've not had cause to choose a specific servlet container before, but I like the fact that I have options if the need arises.

Support for other communication protocols

Both Spring and Drop Wizard support REST, but Spring has support for SOAP, JMS, and advanced message queueing protocols amongst others out of the box. Drop Wizard is primarily designed for performant HTTP/REST applications, however, you can build other types of services, but you'll need a third-party library.

Metrics

Drop Wizard comes with an advanced metrics solution out of the box, this is very useful if you want to keep track of your application's performance. Spring has something for metrics, but, it is not as advanced as that of Drop Wizard. I've used them and it's really good, the metrics library is so good that people use it in Spring projects!

Size of executables (JARs)

Drop Wizard is known to be lean and lightweight, while Spring on the other hand is not as lean. This is evident when you compile to a jar, you'll see that drop wizard jars are mostly smaller in size compared to Spring. You might think that the sizes of your jars are not important but if it takes longer to restart your pods when something goes wrong, one second can make a major difference.

Conclusion

They are both very good tools for developing applications in Java, they have their respective strengths and weaknesses. While Spring Boot provides a comprehensive ecosystem (far more features out of the box) and strong community support for building applications, Drop Wizard emphasizes performance and efficiency.

I, for one, know my preference, but for you to decide which is right for you, you need to consider your specific needs and requirements.