survey of restful web services frameworks
DESCRIPTION
Survey of popular restful web services frameworks including Apache CXF, Jersey, Restlet, RESTEasy and DropWizardTRANSCRIPT
Survey of popular web services framework for restful JAVA APPLICATION
SEPTEMBER 2014
VIJAY PRASAD GUPTAEnterprise Content Management Architect &
Technology Leader
https://www.linkedin.com/in/vpgupta
SOME POPULAR choices
Apache cxfPROJECT HOME http://cxf.apache.org/
ABOUT Apache CXF is an open source services framework. CXF helps you build and develop services using frontend programming APIs, like JAX-WS and JAX-RS. These services can speak a variety of protocols such as SOAP, XML/HTTP, RESTful HTTP, or CORBA and work over a variety of transports such as HTTP, JMS or JBI.
Developer(s) Apache Software Foundation
License Type Apache License
Released FEB 2009
Last Release July 21, 2014 - Apache CXF 3.0.1/2.7.12/2.6.15
Download Page http://cxf.apache.org/download.html
Development Status
Active
Tutorial/Getting started
http://www.javatips.net/blog/2012/02/cxf-restful-tutorial
Forum Mailing List: http://cxf.apache.org/mailing-lists.htmlSupport: http://cxf.apache.org/support.html
Support for Java 7 Yes
JerseyPROJECT HOME https://jersey.java.net/
ABOUT Jersey RESTful Web Services framework 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. Jersey provides it’s own API that extend the JAX-RS toolkit with additional features and utilities to further simplify RESTful service and client development.
Developer(s) Oracle Corporation (Originally Sun)
License Type CDDL version 1.1 and GPL v2 license
Released August 2008 (Not sure) (One post indicates that it was available since 2007)
Last Release Jersey 2.12 / August 26, 2014
Download Page https://jersey.java.net/download.html
Development Status
Active
Tutorial/Getting started
https://jersey.java.net/documentation/latest/getting-started.htmlhttp://www.vogella.com/tutorials/REST/article.html
Forum Mailing List: [email protected] Stake overflow: http://stackoverflow.com/questions/tagged/jerseyIssue Tracking: https://java.net/jira/browse/JERSEY
Support for Java 7 Yes
RESTLETPROJECT HOME http://restlet.com/
ABOUT Restlet Framework is the leading RESTful web API framework for Java. Its unique Java API is available on both client and server sides, in six consistent editions: Java SE, Java EE, Android, GAE, GWT and OSGi! This project has been around for a long time and implemented REST before REST was popular. JAX-RS was a natural extension
Developer(s) Jerome Louvel & Thierry Boileau of Noelios Consulting (now Aeon Consulting partner) and Restlet community
License Type Apache license 2.0, LGPL license 3.0, LGPL license 2.1, CDDL license 1.0, EPL license 1.0
Released 2005
Last Release 2.2.2 / Aug 5, 2014
Download Page http://restlet.com/download/current#release=stable&edition=jse&distribution=zip
Development Status Active
Tutorial/Getting started
http://restlet.com/learn/tutorial/2.2/
Forum http://restlet.com/participate/
Support for Java 7 Yes
RESTEASYPROJECT HOME http://resteasy.jboss.org/
ABOUT RESTEasy is a JBoss project that provides various frameworks to help you build RESTful Web Services and RESTful Java applications. It is a fully certified and portable implementation of the JAX-RS specification.
Developer(s) Jboss (redhat)
License Type Apache License, Version 2.0
Released Jan 2009
Last Release Release 3.0.7/March 2014
Download Page http://sourceforge.net/projects/resteasy/files/Resteasy%20JAX-RS/
Development Status
Active
Tutorial/Getting started
https://developer.jboss.org/wiki/ResteasyWIKIhttp://www.mastertheboss.com/resteasy/resteasy-tutorialhttps://www.youtube.com/watch?v=Re8CggeqDr4
Forum http://resteasy.jboss.org/mailinglists
Support for Java 7 Yes
DROPWizardPROJECT HOME https://dropwizard.github.io/dropwizard/
ABOUT Dropwizard is a Java framework for developing ops-friendly, high-performance, RESTful web services. Dropwizard pulls together stable, mature libraries from the Java ecosystem into a simple, light-weight package that lets you focus on getting things done. Dropwizard has out-of-the-box support for sophisticated configuration, application metrics, logging, operational tools, and much more, allowing you and your team to ship a production-quality web service in the shortest time possible.
Developer(s) Yammer Inc.
License Type Apache License, Version 2.0
Released Dec 2011
Last Release Apr 04, 2014 – Version 0.7.0
Download Page https://dropwizard.github.io/dropwizard/getting-started.html
Development Status Active
Tutorial/Getting started
https://dropwizard.github.io/dropwizard/getting-started.htmlhttps://www.openshift.com/blogs/day-13-dropwizard-the-awesome-java-rest-server-stack
Forum https://groups.google.com/forum/#!forum/dropwizard-user
Support for Java 7 Yes
ComparisonAll of these are mature and production ready frameworks. Chances of
going wrong with any of them is minimal. They all have integration capabilities with Spring. They all have some degree of support to documentation and contract specification (WADL).
CXF JAX-RS is implemented as a CXF filter sitting behind the servlets, while Jersey and RestEasy are, servlet filters.
One unique advantage with CXF is that it makes it very easy to produce both a JAX-RS and JAX-WS (SOAP) endpoint from the exact same data model and service interface at the same time. So if that is something which matters to you, this may be the way to go. CXF had issues with handling SSL and HTTP proxies which seems to have been addressed in recent releases
Restlet based program can run as a standalone Java application. The restlet also supports Java EE environment with the help of Jetty web container. So this may result into a light-weight implementation and have unique value that way. There are some challenges or manual work involved in de-marshalling the response into java object.
Comparison (cont.…)RESTEasy may be a good choice if your environment is Jboss oriented. It
also provides good integration with EJB 3.0 and SEAM (something to consider if you have a need for that). Also it has a proprietary caching for URL or query which could be handy for high volume applications.
Jersey has some of the best tooling (IDE) support specially if you are using Netbeans. So you can achieve better productivity from tooling perspective. There are some challenges with Jersey-Spring integration specially with AOP. Also since it is a reference implementation for JAX-RS, it will continue to support any updates to the specification. There were some complains about the 2.0 release but there are many developers using Jersey in production.
DROPWIZARD promises improved performance and ease of development and has out-of-the-box support for sophisticated configuration, application metrics, logging, operational tools etc. It aims to integrate best of breed features and best practices components, something which may be good to consider from a technical debt perspective as well (use of best of breed libraries tend to reduce technical debt)
Which one does market likes? I did a search on job postings (as on 09/01/2014) using the job
aggregate website indeed.com and here are the results:
This indicates that CXF seems to be the most popular of the pack. Note: Jersey has not been included in this as it also returns results for Jersey city making it difficult to filter out
CXF Restlet DropWizard RESTEasy0
100
200
300
400
500
600497
9159 50
Job Opening in USA
References http://cxf.apache.org/
http://en.wikipedia.org/wiki/Apache_CXF
http://stackoverflow.com/questions/2704700/java-rest-implementation-jersey-vs-cxf
http://programmers.stackexchange.com/questions/155467/selecting-a-jax-rs-implementation-for-a-new-project
http://en.wikipedia.org/wiki/Project_Jersey
https://jersey.java.net/
http://www.vogella.com/tutorials/REST/article.html
http://en.wikipedia.org/wiki/Restlet
http://nagesh625.blogspot.com/2014/01/difference-between-jax-rs-specification.html
https://github.com/fcrepo4/fcrepo4/wiki/JAX-RS-Implementation-Comparison
http://compare-tech.blogspot.com/2012/09/comparing-restful-web-services.html
http://www.aeon-consulting.fr/2010/02/28/noelios-technologies-becomes-aeon-consulting-partner/
http://resteasy.jboss.org/
https://www.openshift.com/blogs/day-13-dropwizard-the-awesome-java-rest-server-stack
http://www.jroller.com/Solomon/entry/jax_rs_vendor_comparisons_part
http://cxf.547215.n5.nabble.com/In-JAX-RS-what-do-you-think-distinguishes-CXF-from-Jersey-td5735519.html
References http://cxf.apache.org/
http://en.wikipedia.org/wiki/Apache_CXF
http://stackoverflow.com/questions/2704700/java-rest-implementation-jersey-vs-cxf
http://programmers.stackexchange.com/questions/155467/selecting-a-jax-rs-implementation-for-a-new-project
http://en.wikipedia.org/wiki/Project_Jersey
https://jersey.java.net/
http://www.vogella.com/tutorials/REST/article.html
http://en.wikipedia.org/wiki/Restlet
http://nagesh625.blogspot.com/2014/01/difference-between-jax-rs-specification.html
https://github.com/fcrepo4/fcrepo4/wiki/JAX-RS-Implementation-Comparison
http://compare-tech.blogspot.com/2012/09/comparing-restful-web-services.html
http://www.aeon-consulting.fr/2010/02/28/noelios-technologies-becomes-aeon-consulting-partner/
http://resteasy.jboss.org/
https://www.openshift.com/blogs/day-13-dropwizard-the-awesome-java-rest-server-stack
http://www.jroller.com/Solomon/entry/jax_rs_vendor_comparisons_part
http://cxf.547215.n5.nabble.com/In-JAX-RS-what-do-you-think-distinguishes-CXF-from-Jersey-td5735519.html