RESTful resources for potential REST developers

Wikipedia defines Representational State Transfer (REST) as "a style of software architecture for distributed hypermedia systems such as the World Wide Web." The RESTful approach to Web services is widely seen as a simpler

    Requires Free Membership to View

alternative to SOAP. Many big name Web services providers such as Amazon, Twitter and Google use the RESTful approach extensively. If you are contemplating getting a REST style Web service project started, but don't want to reinvent the wheel, you need to know about existing well established tools.

If you are contemplating getting a REST style Web service project started, but don't want to reinvent the wheel, you need to know about existing well established tools.

As elucidated by Fielding in his PhD Dissertation in 2000, the principles of RESTful Web services are really rather simple. You combine the basic HTTP methods with addressing which can specify a resource and you have the basics of a RESTful service. So, why have people created all these various frameworks for creating and consuming RESTful services? These frameworks have been created to make it easier for developers working with a variety of other industry standards to get started with RESTful services. New REST frameworks pop up all the time, but here I describe the current state of three mature frameworks.

Jersey Project and the JAX-RS Standard

Java developers have been evolving the Java API for RESTful Web services or JAX-RS for some time in association with the JSR-311 specification. The current version was released in 2008 with a version 1.1 maintenance update in November 2009. This specification shows how to add annotations to a normal Java class so it can be expressed as part of a RESTful Web service. Annotations are a special syntax used to label sections of Java code which allow a service container to dynamically locate the class and method which will satisfy a RESTful style request.

The reference implementation is under development by the Jersey project which is part of Sun's (now Oracle's) open source implementation of the Java Enterprise Edition (JEE). An active developer community has just released Jersey version 1.3, which implements JAX-RS 1.1, but the documentation has not caught up with all of the new features. Version 1.3 has reorganized the code for easier integration into the latest version of GlassFish, the open source reference version of Java Enterprise Edition 6. Note that Jersey can easily be added to existing Tomcat 6 installations without disturbing existing applications. Both the Eclipse and NetBeans IDEs provide for Jersey project development and a search will easily locate Jersey tutorials using both. The Jersey toolkit includes classes for implementing the client side for generating HTTP requests and interpreting responses from RESTful Web services.

The Jersey project is attempting to popularize the Web Application Description Language (WADL) as a simpler RESTful equivalent to WSDL for describing the resources a service provides. This XML formatted service description can be generated by a Jersey service and optionally extended by the developer. It is intended to make it easy to create client software to access a Jersey service. As far as I can tell, WADL has not yet been extensively adopted. The major Web services exposing a RESTful interface, such as Twitter, publish plain text descriptions of services with examples in various languages.

Restlet version 2.0

The Restlet framework was started as an open source project well before the JSR-311 committee got organized. When I last looked, the Restlet framework version 1.1 was the current but version 2 was nearly ready for release. Version 2.0 (just released in July 2010) accomplished a major revision of the organization of packages and simplification of the API. This reorganization makes it possible to use one code base to create five different editions. Each edition contains support for the basic Restlet classes plus various extensions as appropriate for each working environment:

  • Java Standard Edition (JSE)
  • Java Enterprise Edition (JEE)
  • Google App Engine
  • Google Web Toolkit (GWT)
  • Android

The Restlet developers have been busy increasing the number of extensions to support industry standards. The version 2.0 Restlet framework supports the JAX-RS 1.0 API and also the Open Data Protocol (OData) currently being developed by Microsoft. The Restlet client API emphasizes using the same interfaces which the server side uses. This approach is in dramatic contrast with that used by Jersey and other REST clients which tend to emulate the functions of an HTTP browser client. Restlet documentation gives extensive examples of development with various IDEs.

IBM's Project Zero and sMash for WebSphere

Project Zero has evolved quite rapidly since I last took a look at it. The incubator project aimed at rapid (Zero complexity, Zero overhead, Zero obstacles) development has evolved into a product called IBM WebSphere sMash while the development community continues as Project Zero. Note that Project Zero is not open source, but provides a way for developers to feed ideas into the sMash commercial product, while taking advantage of open-source tools such as Groovy, Dojo and PHP.

The sMash product, currently at version 1.1, integrates the RESTful style of Project Zero with other IBM products such as the CICS transaction server. On the server side, the Java based scripting language Groovy and the popular PHP scripting language are emphasized. Deployment of services can be on WebSphere servers, Amazon's EC2 Cloud, or the IBM System z based private cloud. On the browser side sMash uses the popular Dojo JavaScript library.


Release notes for Restlet 2.0

My article on REST versus SOAP

This Wikipedia article lists additional frameworks in a variety of languages

Specification of WADL as submitted to the W3C

REST Tutorial on SearchSOA.com

This was first published in August 2010

There are Comments. Add yours.

TIP: Want to include a code block in your comment? Use <pre> or <code> tags around the desired text. Ex: <code>insert code</code>

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy
Sort by: OldestNewest

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:

Disclaimer: Our Tips Exchange is a forum for you to share technical advice and expertise with your peers and to learn from other enterprise IT professionals. TechTarget provides the infrastructure to facilitate this sharing of information. However, we cannot guarantee the accuracy or validity of the material submitted. You agree that your use of the Ask The Expert services and your reliance on any questions, answers, information or other materials received through this Web site is at your own risk.