Netty based non-blocking REST framework

If you really want non-blocking you need to do non-blocking from the ground up and have proper REST clients. Otherwise as stated in my comment the performance difference will be negligible and in many cases worse for NIO (Netty with thread sharing).

There only two libraries that I know do non-blocking from the ground up Vert.x and somewhat Finagle (its missing other things like non-blocking data access).

You should also know Tomcat and various other servlet containers that can work with JAX-RS support NIO. The issue is that even though NIO is supported it will still be a single thread per request. Only Play, Finagle, Vert.x and pure Netty (regardless of NIO) support a different shared threading model and thus have different mechanisms for doing concurrency.


Here's the list of microframeworks I'm aware of for REST applications:

  • Scalatra - http://www.scalatra.org/ (Scala + Netty)
  • RestExpress - https://github.com/RestExpress/RestExpress (Java + Netty)
  • Finatra - https://github.com/capotej/finatra (Scala + Finagle + Netty)

Please feel free to comment to the answer - I'll update the answer to add more.


Have you taken a look at Play?

It appears that you are inclined to use Netty but if you are willing to look around a very simple Grizzly + Jersey setup will probably perform well enough. Heck, a simple Glassfish 4.0 JAX-RS app may work well too.


Spring 5 comes with a reactive web framework called WebFlux. You can choose from multiple servers like Netty or Undertow. A reactive non-blocking WebClient has also been added to Spring and it also has support for reactive Mongo, Redis and Cassandra (I guess more is coming soon).

Spring Boot, the 'opinionated view of Spring', will also get a new version (2.0) based on Spring 5. At the time of writing it is expected to be released in February.

More information on the reactive stack of Spring: https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html