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

Dropwizard

312
365
+ 1
182
Yesod

36
41
+ 1
15
Add tool

Dropwizard vs Yesod: What are the differences?

Developers describe Dropwizard as "Java framework for developing ops-friendly, high-performance, RESTful web services". 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. On the other hand, Yesod is detailed as "A RESTful Haskell web framework built on WAI". Yesod believes in the philosophy of making the compiler your ally, not your enemy. We use the type system to enforce as much as possible, from generating proper links, to avoiding XSS attacks, to dealing with character encoding issues. In general, if your code compiles, it works. And instead of declaring types everywhere you let the compiler figure them out for you with type inference.

Dropwizard and Yesod belong to "Frameworks (Full Stack)" category of the tech stack.

"Quick and easy to get a new http service going" is the primary reason why developers consider Dropwizard over the competitors, whereas "Haskell" was stated as the key factor in picking Yesod.

Dropwizard and Yesod are both open source tools. It seems that Dropwizard with 7.25K GitHub stars and 3.04K forks on GitHub has more adoption than Yesod with 2.11K GitHub stars and 329 GitHub forks.

According to the StackShare community, Dropwizard has a broader approval, being mentioned in 51 company stacks & 12 developers stacks; compared to Yesod, which is listed in 5 company stacks and 5 developer stacks.

Decisions about Dropwizard and Yesod
Hampton Catlin
VP of Engineering at Rent The Runway · | 7 upvotes · 452.9K 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
Manage your open source components, licenses, and vulnerabilities
Learn More
Pros of Dropwizard
Pros of Yesod
  • 27
    Quick and easy to get a new http service going
  • 23
    Health monitoring
  • 20
    Metrics integration
  • 20
    Easy setup
  • 18
    Good conventions
  • 14
    Good documentation
  • 14
    Lightweight
  • 13
    Java Powered
  • 10
    Good Testing frameworks
  • 7
    Java powered, lightweight
  • 5
    Simple
  • 4
    Scalable
  • 3
    Great performance, Good in prod
  • 2
    Open source
  • 2
    All in one-productive-production ready-makes life easy
  • 6
    Haskell
  • 4
    Super High Performance
  • 3
    Open source
  • 2
    Type safe URLs

Sign up to add or upvote prosMake informed product decisions

Cons of Dropwizard
Cons of Yesod
  • 2
    Slightly more confusing dependencies
  • 1
    Not on ThoughtWorks radar since 2014
    Be the first to leave a con

    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 Yesod?

    Yesod believes in the philosophy of making the compiler your ally, not your enemy. We use the type system to enforce as much as possible, from generating proper links, to avoiding XSS attacks, to dealing with character encoding issues. In general, if your code compiles, it works. And instead of declaring types everywhere you let the compiler figure them out for you with type inference.

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

    What companies use Dropwizard?
    What companies use Yesod?
    Manage your open source components, licenses, and vulnerabilities
    Learn More

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

    What tools integrate with Dropwizard?
    What tools integrate with Yesod?

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

    What are some alternatives to Dropwizard and Yesod?
    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.
    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.
    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.
    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.
    See all alternatives