How to choose between Jersey, Apache Wink and JBoss RESTEasy? [closed]

JAX-RS Implementations

Jersey

  • Reference Implementation
  • Usually the most cutting edge
  • Supports true asynchronous (ie web sockets etc…) connections through either Atmosphere or 2.0 version.
  • Has support for Spring and standard injection containers (ie @Inject).
  • Glassfish bundles it.
  • Its much more modular than the other JAX-RS projects.
  • It has a kick ass URI Builder
  • Does not necessarily require servlet container.
  • Grizzly support
  • Netty support (very early).
  • Swagger support
  • Sort of missing OAuth 2.0 . You’ll have to use other libraries.
  • Some MVC support through Viewables
  • Hosted on java.net (a minus as the site is terribly slow at times).
  • Licensing is based on CCDL 1.1 and GPL-v2. Please make sure you check Jersey licensing before you use it for commercial use

https://jersey.github.io/license.html

RestEasy

Apache Wink (never used it)

  • I have no idea why this project exists.
  • Supposedly its high performance focused.
  • It has a client built on top of HttpUrlConnection (which is a minus… it should be pluggable like Spring RestTemplate).
  • Basically Wink was developed in house at some enterprise companies and then given to Apache.
  • Requires a servlet container.

Restlet

  • Very powerful but very complicated
  • Provides some low-level REST support
  • Does not require a servlet container

Apache CXF

  • Some interesting WADL support.
  • Reuse and or combine JAX-RS w/ JAX-WS
  • Security support
  • Integration w/ Spring albeit kind of nasty
  • Supposed Autogeneration of client stubs

Other RPC-like systems

Message Queues

Asynchronous RPC

My humble opinion

I know the OP asked for REST but if this is for internal communication seriously consider using either a message queue or some other asynchronous RPC (Finagle) instead of traditional REST if your requirements match those systems.

If it must be classic HTTP REST (external) I would choose between either RestEasy or Jersey as a bulk of the mind share is put into those two projects.

Also see: Rest clients for Java?

Leave a Comment