Dropwizard vs Play vs Spring

Need advice about which tool to choose?Ask the StackShare community!

Dropwizard

285
320
+ 1
179
Play

690
515
+ 1
495
Spring

3.3K
3.9K
+ 1
1K
Advice on Dropwizard, Play, and Spring
Leonardo Viada
Project manager and web developer at Revo Digital · | 4 upvotes · 27.5K views
Needs advice
on
ScalaScalaRailsRails
and
PlayPlay
at

In the past few months, a project we're working on grew up quite fast. Since we're adding more and more features, I'm considering migrating my Express/TS REST API towards a more solid and more "enterprise-like" framework. Since I am experienced with TypeScript but not so much with Rails nor Play (Scala), I'd like to have some advice on which one could provide the best development experience, and most importantly, the smoothest paradigm transition from the JS/TS world. I've worked on some personal project with Rails, but I've found the Ruby language really distant from what the TypeScript ecosystem and syntax are, whereas on the opposite - during the brief tours I've taken in the past weeks - it's been a pleasure coding in Scala. Obviously, there are some key differences between the two languages - and the two frameworks consequently - but despite all the ROR automation and ease of use I don't despise at all Scala's pragmatic and great features such as static typing, pattern matching, and type inference. So... Please help me out with the choice! Regards

See more
Replies (4)
Kevin Emery
QE Systems Engineer at Discovery, Inc. · | 6 upvotes · 21.7K views
Recommends
RailsRails

I don't have the Scala experience to compare the two, but I can say that Ruby is a wonderful language. For procedural programming where you don't need a lot of concurrent execution threads, it's superior to Node.JS in my opinion. All of the concepts from Typescript have equivalent syntax in Ruby, but there are fewer symbols (e.g. () => { ... }); ) and more keywords (eg 'do ... end'). It's a very flexible language and allows for a lot of different approaches to how it's written, so coding standards and careful organization is important. In the long run, however, you'll find it quicker to debug than Node.JS and just as powerful.

See more
ALESSIO SALTARIN
Master IT Architect at IBM · | 5 upvotes · 22.2K views

If you are comfortable with TypeScript, why not evolve to a C# ecosystem? Asp.Net Core + Entity Framework is a mature and well supported technology. As far as I can see in the enterprise market, the most adopted choice is still Java. So, maybe you may have a look to SpringBoot - and ultimately Quarkus.

See more
Hosam Aly
Senior Software Engineer · | 3 upvotes · 13.8K views
Recommends
ScalaScalaRailsRailsPlayPlay

If software performance is your top priority, then Scala/Play is probably best. If developer productivity is your top priority, then Ruby on Rails is the best choice in my opinion.

The Rails framework is batteries-included. The framework takes care of many things by default so that you don't have to. Logging, security, etc. It's also well-integrated; for example, controllers understand models out of the box. I had a better experience with RoR than with Play.

On the other hand, Scala and the JVM are more performant in general, so they can scale to serve more requests per second on the same hardware.

If you're considering serverless functions, then Scala is probably a better choice because it would be faster to load, giving you better economics.

See more
malekmfs
at Meam Software Engineering Group · | 3 upvotes · 14.1K views
Recommends
ScalaScalaRailsRails

This is advice regardless of your background and requirements. The Play framework has a terrible and complicated design, don't risk it. I even suggest Spring and Kotlin over it! You can use Scala for small services and Data Engineering stuff and benefit optimizations and threading of JVM. RoR, on the other hand, has a huge development speed, which I believe is a big advantage cause you can handle performance bottlenecks later. Also, Scala has another downside, which is featureful in terms of OO and FP paradigms, which makes anyone write code freely with any personal style and makes it a problem in a team, Hence a coding style has to be defined if there would be Scala development team.

See more

Is learning Spring and Spring Boot for web apps back-end development is still relevant in 2021? Feel free to share your views with comparison to Django/Node.js/ ExpressJS or other frameworks.

Please share some good beginner resources to start learning about spring/spring boot framework to build the web apps.

See more
Replies (1)

Java in general, in my opinion, is somewhat outdated in 2021. C# is a better language, and therefore, I think ASP.NET (Core/.NET 5) should be used over it. Node.js isn't bad if you are getting started, or if you need to prototype an app. I use Node in production because of TypeScript, but .NET is a really good framework that has excellent performance.

See more
Needs advice
on
SpringSpring
and
Node.jsNode.js

I am provided with the opportunity to learn one of these technologies during my training. I have prior experience with Spring and found it tough and still haven't figured out when to use what annotations among the thousands of annotations provided. On the other hand, I am very proficient in Java data structures and algorithms (custom comparators, etc.)

I have used Node.js and found it interesting, but I am wondering If I am taking the risk of choosing a framework that has a comparatively lesser scope in the future. One advantage I see with the node.js is the number of tutorials available and the ease with which I can code.

Please recommend which path to take. Is Spring learnable, or should I spend my energy on learning Node.js instead?

See more
Replies (2)

I do not know Spring or your company/specialty. Of course it must be learnable and I won't tell you to give up on anything. Java is and will remain valuable.

Regardless, I don't think "lesser scope" is a valid strike against Node.js here. Node.js fulfills JavaScript's original vision of an everywhere language and can run anywhere that Java can. It serves webpages, communicates with hardware, powers command line tools, and builds desktop applications. A huge complexity-saver for teams running many environments (my biggest regret is that it cannot run a microcontroller).

Node.js' biggest practical weakness is that JavaScript is less structured than Java. Luckily, the large influx of Java developers has been helping with this: gaps like constants and private properties are gradually filling in, and TypeScript firms up the types to the point where JavaScript looks a lot like Java.

Probably more potential competition from the larger pool of JS developers, but the compensation is allegedly similar so I guess there is a similar supply/demand situation.

See more
Recommends

hi this depends where you want to advance . If you want to work for an big aged company with a lot of legacy go the spring way (banks, insurances netflix etc ) if you want to go the new agile fast cloud way learn node js it is much more suited for cloud and micro service even spring cloud can do that as well but it is much more heavier

See more
Needs advice
on
SpringSpring
and
DjangoDjango

I am a graduate student working as a software engineer in a company. For my personal development, I want to learn web development. I have some experience in Springboot while I was in university. So I want to continue with spring-boot, but I heard about Django. I'm reaching out to the experts here to help me choose a future proof framework. Django or Spring Boot?

Thanks in Advance

See more
Replies (5)
Recommends
SpringSpring

Kamrul Hasan, Don't choose dying technologies with small communities. How many startups do you think use Spring and Django? Use Google Trends to compare technologies. Study the StackOverflow developer survey and job websites to see what technologies are wanted. Few teams can afford to train you to get up to their level so be a life-long learner. Embrace the dawn of a new industry and become an expert.

See more
Sulaiman Sanusi
Recommends
SpringSpring

I recommend you stick to Java Spring as you already have experience with the technology, i suggest you master this technology and then if Django seam to be very interesting to you, django is a framework you can easily pickup as python is also easy, you have to probably be able to manage the context switching between a static typed language like Java to dynamic language like python

See more
Gonzalo Fernández
Recommends

Hi Kamrul,

It really depends on the kind of project and whether you feel more comfortable with Java or Python. Both are excellent frameworks, with a huge community and learning material. I've been working with Spring Boot since I started coding almost and I can assure you it's the perfect combination for Java. The learning curve may be harder that Django, but once you know the basics you're good to go. I can't tell you much about Django but you must now by now that it has a great reputation with Python users. In any case I don't think you can go wrong with any of these two. My advice is, if you are already familiar with the Spring framework, give Spring Boot a try, because you're going to find out that it just makes the whole Spring experience so much easier. Let us know what you chose!

See more
Christoph Becker
Recommends
SpringSpringDjangoDjango

It depends on what you want. Spring is Java-based whereas Django is Python-based. The question rather is Java vs Python. I personally recommend Python as it's shorter and easy to learn. But Java has advantages in really big systems.

See more
Recommends
DjangoDjango

Both are in active development and had huge community support. It really depends on you what you are comfortable with. Both are married to their respective languages. I choose Python over Java because of its simplicity and readability. To develop in java you need to write a lot of code. That's how java is. The best part I love with Django is its synchronization with Databases.

See more
Decisions about Dropwizard, Play, and Spring
Hampton Catlin
VP of Engineering at Rent The Runway · | 7 upvotes · 162.3K views

Starting a new company in 2020, with a whole new stack, is a really interesting opportunity for me to look back over the last 20 years of my career with web software and make the right decision for my company.

And, I went with the most radical decision– which is to ignore "sexy" / "hype" technologies almost entirely, and go back to a stack that I first used over 15 years ago.

For my purposes, we are building a video streaming platform, where I wanted rapid customer-facing feature development, high testability, simple scaling, and ease of hiring great, experienced talent. To be clear, our web platform is NOT responsible for handling the actual bits and bytes of the video itself, that's an entirely different stack. It simply needs to manage the business rules and the customers experience of the video content.

I reviewed a lot of different technologies, but none of them seemed to fit the bill as well as Rails did! The hype train had long left the station with Rails, and the community is a little more sparse than it was previously. And, to be honest, Ruby was the language that was easiest for developers, but I find that most languages out there have adopted many of it's innovations for ease of use – or at least corrected their own.

Even with all of that, Rails still seems like the best framework for developing web applications that are no more complex than they need to be. And that's key to me, because it's very easy to go use React and Redux and GraphQL and a whole host of AWS Lamba's to power my blog... but you simply don't actually NEED that.

There are two choices I made in our stack that were new for me personally, and very different than what I would have chosen even 5 years ago.

1) Postgres - I decided to switch from MySql to Postgres for this project. I wanted to use UUID's instead of numeric primary keys, and knew I'd have a couple places where better JSON/object support would be key. Mysql remains far more popular, but almost every developer I respect has switched and preferred Postgres with a strong passion. It's not "sexy" but it's considered "better".

2) Stimulus.js - This was definitely the biggest and wildest choice to make. Stimulus is a Javascript framework by my old friend Sam Stephenson (Prototype.js, rbenv, turbolinks) and DHH, and it is a sort of radical declaration that your Javascript in the browser can be both powerful and modern AND simple. It leans heavily on the belief that HTML-is-good and that data-* attributes are good. It focuses on the actions and interactions and not on the rendering aspects. It took me a while to wrap my head around, and I still have to remind myself, that server-side-HTML is how you solve many problems with this stack, and avoid trying to re-render things just in the browser. So far, I'm happy with this choice, but it is definitely a radical departure from the current trends.

See more
Get Advice from developers at your company using Private StackShare. Sign up for Private StackShare.
Learn More
Pros of Dropwizard
Pros of Play
Pros of Spring
  • 27
    Quick and easy to get a new http service going
  • 23
    Health monitoring
  • 20
    Easy setup
  • 19
    Metrics integration
  • 18
    Good conventions
  • 14
    Lightweight
  • 14
    Good documentation
  • 12
    Java Powered
  • 10
    Good Testing frameworks
  • 7
    Java powered, lightweight
  • 4
    Simple
  • 4
    Scalable
  • 3
    Great performance, Good in prod
  • 2
    Open source
  • 2
    All in one-productive-production ready-makes life easy
  • 81
    Scala
  • 55
    Built on akka
  • 55
    Web-friendly architecture
  • 50
    Stateless
  • 47
    High-scalable
  • 46
    Fast
  • 40
    Open source
  • 34
    Java
  • 27
    High velocity
  • 24
    Fun
  • 9
    Lightweight
  • 8
    Non-blocking io
  • 5
    Developer friendly
  • 5
    Simple template engine
  • 4
    Scalability
  • 3
    Pure love
  • 2
    Resource efficient
  • 220
    Java
  • 154
    Open source
  • 132
    Great community
  • 119
    Very powerful
  • 111
    Enterprise
  • 62
    Lot of great subprojects
  • 58
    Easy setup
  • 44
    Convention , configuration, done
  • 37
    Standard
  • 29
    Love the logic
  • 11
    Good documentation
  • 10
    Dependency injection
  • 9
    Stability
  • 6
    MVC
  • 6
    Easy
  • 3
    Strong typing
  • 3
    Makes the hard stuff fun & the easy stuff automatic
  • 2
    Code maintenance
  • 2
    Best practices
  • 2
    Maven
  • 2
    Great Desgin
  • 2
    Easy Integration with Spring Security
  • 2
    Integrations with most other Java frameworks
  • 1
    Java has more support and more libraries
  • 1
    Supports vast databases
  • 1
    Large ecosystem with seamless integration
  • 1
    OracleDb integration
  • 1
    Live project

Sign up to add or upvote prosMake informed product decisions

Cons of Dropwizard
Cons of Play
Cons of Spring
  • 2
    Slightly more confusing dependencies
  • 1
    Not on ThoughtWorks radar since 2014
  • 3
    Evolves fast, keep up with releases
  • 1
    Unnecessarily complicated
  • 15
    Draws you into its own ecosystem and bloat
  • 3
    Verbose configuration
  • 3
    Poor documentation
  • 3
    Java
  • 1
    Java is more verbose language in compare to python

Sign up to add or upvote consMake informed product decisions

What is Dropwizard?

Dropwizard is a sneaky way of making fast Java web applications. Dropwizard pulls together stable, mature libraries from the Java ecosystem into a simple, light-weight package that lets you focus on getting things done.

What is Play?

Play Framework makes it easy to build web applications with Java & Scala. Play is based on a lightweight, stateless, web-friendly architecture. Built on Akka, Play provides predictable and minimal resource consumption (CPU, memory, threads) for highly-scalable applications.

What is Spring?

A key element of Spring is infrastructural support at the application level: Spring focuses on the "plumbing" of enterprise applications so that teams can focus on application-level business logic, without unnecessary ties to specific deployment environments.

Need advice about which tool to choose?Ask the StackShare community!

What companies use Dropwizard?
What companies use Play?
What companies use Spring?

Sign up to get full access to all the companiesMake informed product decisions

What tools integrate with Dropwizard?
What tools integrate with Play?
What tools integrate with Spring?

Sign up to get full access to all the tool integrationsMake informed product decisions

Blog Posts

What are some alternatives to Dropwizard, Play, and Spring?
Spring Boot
Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run". We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.
Dropwizard Metrics
It is a Java library which gives you insight into what your code does in production. It provides a powerful toolkit of ways to measure the behavior of critical components in your production environment. It provides you with full-stack visibility.
Jersey
It is open source, production quality, framework for developing RESTful Web Services in Java that provides support for JAX-RS APIs and serves as a JAX-RS (JSR 311 & JSR 339) Reference Implementation. It provides it’s own API that extend the JAX-RS toolkit with additional features and utilities to further simplify RESTful service and client development.
Micronaut Framework
It is a modern, JVM-based, full-stack framework for building modular, easily testable microservice and serverless applications. It features a Dependency Injection and Aspect-Oriented Programming runtime that uses no reflection.
Prometheus
Prometheus is a systems and service monitoring system. It collects metrics from configured targets at given intervals, evaluates rule expressions, displays the results, and can trigger alerts if some condition is observed to be true.
See all alternatives