Top Banner
Survey of popular web services framework for restful JAVA APPLICATION SEPTEMBER 2014 VIJAY PRASAD GUPTA Enterprise Content Management Architect & Technology Leader https:// www.linkedin.com/in/vpgupta
12

Survey of restful web services frameworks

Nov 19, 2014

Download

Technology

Vijay Gupta

Survey of popular restful web services frameworks including Apache CXF, Jersey, Restlet, RESTEasy and DropWizard
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Survey of restful web services frameworks

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

Page 2: Survey of restful web services frameworks

SOME POPULAR choices

Page 3: Survey of restful web services frameworks

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

Page 4: Survey of restful web services frameworks

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

Page 5: Survey of restful web services frameworks

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

Page 6: Survey of restful web services frameworks

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

Page 7: Survey of restful web services frameworks

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

Page 8: Survey of restful web services frameworks

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.

Page 9: Survey of restful web services frameworks

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)

Page 10: Survey of restful web services frameworks

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

Page 11: Survey of restful web services frameworks

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

Page 12: Survey of restful web services frameworks

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