Year after year, the Restlet open source project has been growing and maturing, both technically and through its lively community of users and contributors.
Today, we are proud to announce the general availability of version 2.0 of the Restlet Framework, representing about 2 years of work since version 1.1! This is truly a major release, equivalent to the initial effort that took us from the project launch to the 1.0.0 release.
What’s new ?
After targeting standalone Java SE virtual machines and Java EE web containers in version 1.0, we introduced a manual port to GWT in version 1.1. During the development of version 2.0, we jumped on two new bandwagons launched by Google:
- Android for web connected smartphones and tablets
- GAE for cloud computing hosted applications
As each port required a lot of manual maintenance, we developed a special Restlet forge including a fully automated port mechanism that allows us to work on a single code base while taking into account the specificities of each target environment.
As a result, the framework is now available in five consistent editions covering the most popular Java-based platforms.
While maintaining an easy migration path from version 1.1, we took the opportunity of this major release to reorganize Restlet extensions, moving “com.noelios.restlet.ext” packages into “org.restlet.ext” ones, merging the “com.noelios.restlet.jar” into a single core “org.restlet.jar” including both the Restlet API and the core engine.
Enhanced Restlet API
We completed our support for HTTP headers, mapping almost all standard ones to the Restlet API as illustrated in this mapping table and also introduced a higher level way to develop Restlet resources that works equally well on both client and server side.
Those new ServerResource and ClientResource classes support the traditional class-oriented approach previously used in Restlet and added on top of it using custom Java annotations, providing the benefits of the JAX-RS API (that we keep supporting as a Restlet extension) but with much less annotations (just 5 currently) and a rich and extensible Java API as a solid foundation.
As a result, you can use representation beans that can get automatically serialized to and from XML, JSON, GWT object, Java object formats thanks to extensions such as Jackson, XStream, JiBX or JAXB.
We also added a brand new security API that supports HTTP centric authentication and authorization in simple yet extensible way, for example with extensions for the JAAS, jSSLutils and javax.crypto APIs.
A new extension for OData technology was added, thanks to a collaboration with Microsoft Interop teams. It provides a high-level client API based on the ClientResource class that lets you access remote OData services, typically hosted in an ASP.NET servers or on the Windows Azure cloud computing platform.
The extension contains both a code generator for the representation beans and a runtime layer. Advanced features such as projections, blobs, server-side paging, row counts, customizable feeds or version headers are supported.
We also want to make Restlet a great framework for building applications for the Semantic Web. The relationship between REST and RDF is perfect : the core concept of resources and their representations with REST and the expression of meaningful links between them with RDF.
This new extension contains a full RDF API, leveraging the Restlet API, and capable of processing RDF documents either in a DOM-like way or in a SAX-like way. It is also capable of writing large RDF documents is a SAX-like way. We currently support two serialization formats: RDF/XML, RDF/n3, Turtle and N-Triples. Finally, a RdfClientResource class facilitates the hypermedia navigation in the Web of Data.
“Restlet in Action” book
Last year we have started writing a book on the Restlet Framework for Manning. It will contain 12 chapters covering all major aspects of Restlet applications development and RESTful web APIs design based on our home-grown ROA/D methodology.
Today, we released chapter 6 on documenting and versionning web APIs, as well as chapter 7 on Restlet security contributed by Bruno Harbulot. To celebrate version 2.0.0 release, Manning is offering to Restlet users a time limited 35% discount with the “rest35au” code. Happy reading!
Today is a time to step back and thank our community of users and contributors, all readers providing feed-back on the book in the authors’ forum or during the external review and of course to our growing list of customers at Noelios Technologies, the commercial entity backing the open source project, making this open source project economically sustainable.
After nearly 5 years after the project launch, the road ahead has never been as exciting. REST is finally recognized as the best way to design web applications and distributed architectures in general.
Your feedback, funding and continuous support will make a difference.
Jérôme Louvel – Founder and Technical lead
ThierryBoileau – Core developer and Community manager
Contributors since 2.0 RC4
- Aleskandr Shekhter
- Alex Milowski
- Alexander J. Perez Tchernov
- Alistair Dutton
- Bruno Harbulot
- Christopher Gokey
- David Fogel
- Dustin Jenkins
- Eric Hough
- Felix Leipold
- Giovani Pieri
- Greg Hengeli
- Guillaume Maillard
- Guillermo Vega
- Iestyn Evans
- Jeroen Goubert
- Kristoffer Gronowski
- Louis Huh
- Martin Svensson
- Rickard Oberg
- Sriram Chavali
- Tim Kuntz
- Tim Peierls
- TK Kocheran
- Valdis Rigdon
- Vassilis Touloumtzoglou
Thanks to all others who helped us in various ways during the 2.0 development!
The development of this version was funded in part by the Hauts-de-Seine department based on Noelios Technologies participation to a collaborative HD3D2 R&D project. We are grateful for their support which will also help us develop the next 2.1 version.
- Xebia – Press review covering release of Restlet Framework 2.0 (in French)