- April 25, 2007

Alexis Moussine-Pouchkine, a Java architect at Sun and a fellow at the OSSGTP (Open Source Get Together Paris), from Sun, has a nice post about the launch of Restlet 1.0.

He underlines some good synergy between the Restlet project and the Glassfish project led by Sun, in term of licensing and partnership with the Grizzly NIO framework led by Jean-Fran├žois Arcand.

He also draws a flattering parallel between Restlet and Hibernate projects, especially in the light of the JSR-311 effort to standardize a high-level, annotation-centric API for RESTful Web Services.

As an active member of the expert group for this JSR, I would like to mention that the Restlet API is only one source of inspiration but not a proposal. The initial API proposition was actually made by Sun, based on its SWDP prototype. There were also previous annotation-based initiatives made by third parties.

Actually, as underlined in this previous post, both APIs will end-up being complementary rather than competitors. To clarify the scopes of those various efforts, I have drawn some illustrations based on two axis:

  • the level of abstraction regarding the REST/HTTP semantics, from raw HTTP headers to high-level representation negotiation.
  • the processing flow abstraction, from the raw network socket to the JSR-311 resources context.

Here is the expected positioning of the JSR-311 as implemented over the Servlet AP. Note that the gap between the Servlet API and the JSR-311 will have to be filled by an adapter:

Now, here is the expected positioning of the JSR-311 API as implemented over the Restlet API:

Finally, we also plan to submit a Restlet API 2.0 to the JCP, probably in 2008. The best parallel is between the Restlet API and the Servlet API that we clearly aim to replace in the long term, as an API giving full control on the container and its connectors, fully leveraging NIO API and asynchronous request processing, while providing full support for all REST/HTTP semantics from the ground up. The API also has a unique ability to support client-side applications, without requiring direct usage of APIs such as JDK’s HttpURLConnection or Apache HTTP Client.

[Update 1] The JAX-RS extension for Restlet has been added to release 1.1 M3. See the announcement and the documentation about the extension.

[Update 2] Marc Hadley, JSR-311 spec lead, has blogged about the Restlet implementation of JAX-RS.