- August 06, 2009

After Restlet 1.2 M2 and 2.0 M3 releases that introduced major API changes for resources and security, we wanted to focus this new milestone on stability and on the automated support of Restlet editions.

Here is a summary of the main changes :

  • The packaging has been reworked to provide separate distributions for each edition that we support: Java SE, Java EE (with Servlet support), Google Web Toolkit, Google App Engine and Android. In addition, the porting of the main source code base to each edition is now fully automated, ensuring a constant synchronization in term of features and bug fixes. All extensions and API features aren’t (or can’t be) supported in all editions, but the API is consistent. As a side effect, the “org.restlet.gwt” package has been moved to the regular “org.restlet” one.
  • The ConverterService has been improved to automatically serialize POJOs into XML, JSON and other serialization formats such as regular Java serialization or long term bean persistence. We leverage XStream for automatic XML/JSON marshalling and unmarshalling. Note that the JAX-RS extension now also relies on this improved conversion service!
  • Content negotiation was rewritten to support all possible dimensions such as media type, language, character set or encoding.
  • A new FTP client connector was added in the “” extension, based on the JDK’s URLConnection class. It is limited and only support GET methods.
  • The RDF extension was improved with a new RdfClientResource class facilitating the navigation in the Web of Data.
  • A new ROME extension was added to support several versions of RSS and Atom syndication feeds formats. This extension is complementary with the existing Atom extension which is fully based on Restlet API.
  • Character sets support was enhanced, fixing an issue with Macintosh and adding new constants in the CharacterSet class for all common ones defined by IANA. Also, the default language used for representation is now dynamically retrieved based on the JVM setting instead of English/US.
  • Added client and server RIAP connectors that use a protected singleton unique in the JVM.
  • The org.restlet.Uniform abstract class has been refactored into an interface with a single handle(Request, Response) method. Its logic has been moved to the org.restlet.Client class. This allows us to leverage it for asynchronous calls, as we already do in the GWT edition.
  • The org.restlet.routing package has been enhanced with new Validator and Extractor filters containing logic found in the new deprecated Route class, replaced with a more specific TemplateRoute class. Those changes should be transparent for most applications using the Router class to attach Restlets and resources using URI templates.


Direct contributors

  • Alexander Horn
  • Andrew Moore
  • Arjohn Kampman
  • Aron Roberts
  • Avi Flax
  • Bob Resendes
  • Bruce Cooper
  • Bruno Harbulot
  • David Fogel
  • Dustin N. Jenkins
  • Evgeny Shepelyuk
  • Florian Georg
  • Frank Hellwig
  • Gabriel Ciuloaica
  • Joe Nellis
  • John Logsdon
  • John Wismar
  • Jonathan Hall
  • Martin Krasser
  • Matt J. Watson
  • Maxence Bernard
  • Niall Gallagher
  • Nicolas Janicaud
  • Nirav Shah
  • Olivier Monaco
  • Remi Dewitte
  • Schley Andrew Kutz
  • Serge Ilyn
  • Simon Reinhardt
  • Stuart MacKay
  • Sylvain Pajaud
  • Thomas Cozien

Thanks to all others who helped us in various ways!

Additonal resources

Changes log:

Download links:

Maven repositories: is updated on the 1st and 15th of each month is updated daily with new artifacts (access reserved to subscribers)

  • Jim Alateras

    Gr8 work on rolling out these incremental enhancements.

  • manav

    can’t find the GAE dedicated jar…org.restlet.gae.jar in M4.

  • Hi Manav,

    There is now a dedicated edition (or distribution if you prefer) for GAE. Here is the direct download link:


    • manav CHAUHAN

      Had to pass “-Dfile.encoding=UTF-8 ” as VM argument to get it running…this is on MAC.

      • That’s a good workaround for Mac indeed. This issue was also quickly fixed in recent 2.0 snapshots.

  • manav CHAUHAN

    Thanks for the reply and fix.

    Also having trouble with content negotiation based on URI (debatable, but a common practice now).

    both need to go to same resource , trying to accomplish this with jax-rs @PATH annotation.

    My Regex @PATH(tweets.( (json) | (xml) ) )

    My regex gets base64 encoded, and cannot find the resource. Would you consider supporting more regex escape characters in org.restlet.ext.jaxrs.internal.util.PathRegExp class

  • jon hanson


    If a developer wants to use Restlet with both GWT and GAE then which edition should one use?


    • Hi Jon,

      He should use both the GWT and the GAE editions of Restlet 2.0 M4, in separate projects.

      Best regards,

      • jon hanson

        “in separate projects.”

        Not sure I understand that. What I meant is if I want to develop a (single) web app project which uses both GWT and GAE, then which edition of Restlet should i use?


  • Jon,

    I mean that you should download both editions separately. I should be possible to then use Restlet GWT JARs on the client-side of your project and Restlet GAE JARs on the server-side.

    If you have troubles with this set-up, you can try to use two separate projects, one for client-side and another for server-side.


    • jon hanson

      Ok, that’s what i figured.


  • Pingback: Restlet 2.0 M5 now available « Noelios Technologies()