In Java world there are 2 most wide spread solutions for JSON REST technology. In this post I’ll cover some aspects of them, that seems of most importance to me.
Dependency Injection
With Spring, you are limited to Spring DI - quite complex and hard to debug. With Dropwizard, you can choose any DI you like. I was using Guice. But beware of using javax.inject annotations. Dropwizard v0.9.2. uses fresh release Jetty, that was build using HK2 DI library. So, using general annotations with some other DI solution may result in strange behavior. For Guice-HK2 there are some bridge solutions, but using DI library specific annotations will save you from trouble.
Rest Api
I personally find JAX-RS specification not very convenient, maybe because I prefer single routes file and dislike annotating classes with @Path. Spring annotations for REST API are slightly better in this regard.
Configuration
Dropwizard offers once convenient way to configure everything - yml. With Spring you have as much flexibility as you can handle, and it makes server hard to maintain. I guess Dropwizard configuration is more in line with java values - there is single way to do it, simple, clear,maintainable. In case of issue you always know where to look.
Deployment
Dropwizard oriented on jar-deployment, standalone jetty. Spring can do both jar and war (for tomcat). It is arguable, but I consider multiple deployment options as a plus - it doesn’t complicate maintenance much, but can simplify support in case of running multiple applications.
Static Resources & Templates
Dropwizard offers quite simple way to mix pages and JSON API. If we will use angular on client side - it result in quite elegant solution with no tweaks. With Spring Boot I've struggled to configure my application to work with HTML and JSON, with support of some static ( e.g. css) resources.
SummaryTable
This is my marks for different aspects of platform. Max mark is 5. The bigger-the better.
Criteria | Dropwizard | Spring Boot | |||||
DI | 5 | 3 | |||||
REST API | 3 | 4 | |||||
Configuration | 5 | 3 | |||||
Deployment | 4 | 5 | |||||
Static Resources & Templates | 5 | 3 | |||||
Total | 22 | 18 |
Summary
Dropwizard is better IMHO, and it plays nice with most Spring projects, like Spring Security and Spring JDBC. Spring Boot probably more performant, but I have no data on this topic, and all performance depends mostly from performance of your database. Solutions are quite similar, so winner detected.
There are lots of other articles on topic, that cover slightly different areas than this one.
See http://blog.takipi.com/java-bootstrap-dropwizard-vs-spring-boot/ and http://www.schibsted.pl/2015/07/spring-boot-and-dropwizard-in-microservices-development/ for more.
No comments:
Post a Comment