Features

Native REST support

  • Core REST concepts have equivalent Java artifact (Resource, Representation, Connector or Component for example).
  • Suitable for both client-side and server-side web applications. The innovation is that that it uses the same API, reducing the learning curve and the software footprint.
  • Concept of "URIs as UI" supported based on the URI Templates standard. This results in a very flexible yet simple routing with automatic extraction of URI variables into request attributes.
  • Tunneling service lets browsers issue any HTTP method (PUT, DELETE, MOVE, etc.) through a simple HTTP POST. This service is transparent for Restlet applications.
  • Ready for the Semantic Web (Web 3.0), with full RDF supports added in Restlet 2.0.

Available editions

  • Restlet edition for Java SE/EE, letting you run your Restlet applications on regular JVMs or in regular Servlet containers.
  • Restlet edition for GWT, letting you leverage the Restlet API from within any Web browser, without plugins.
  • Restlet edition for GAE, letting you deploy Restlet applications on Google AppEngine cloud computing platform.
  • Restlet edition for Android, letting you deploy Restlet applications on Google Android mobile devices.

Complete Web Server

  • Static file serving similar to Apache HTTP Server, with metadata association based on file extensions.
  • Transparent content negotiation based on client preferences.
  • Conditional requests automatically supported for resources.
  • Remote edition of files based on PUT and DELETE methods (aka mini-WebDAV mode).
  • Decoder service transparently decodes compressed or encoded input representations. This service is transparent for Restlet applications.
  • Log service writes all accesses to your applications in a standard Web log file. The log format follows the W3C Extended Log File Format and is fully customizable.
  • Powerful URI based redirection support similar to Apache Rewrite module.
  • Extensive and flexible security support (authentication and authorization) being added to Restlet 2.0.

Available Connectors

  • Multiple server HTTP connectors available, based on either Mortbay's Jetty or the Simple framework or Grizzly NIO framework.
  • AJP server connector available to let you plug behind an Apache HTTP server or Microsoft IIS. It is based on Jetty's connector.
  • Multiple client HTTP connectors available, based on either the JDK's HttpURLConnection class or on Apache HTTP Client.
  • Compact internal HTTP, HTTPS client and HTTP server for development and light deployments. No external dependency needed.
  • Client SMTP, SMTPS, POP v3 and POPS v3 connectors are provided based on JavaMail and a custom email XML format.
  • Client JDBC connector based on the JDBC API, a custom request XML format and the JDBC WebRowSet interface for XML responses.
  • Client FILE connector supports GET, PUT and DELETE methods on files and directories. In addition, it is able to return directory listings.
  • Client CLAP connector to access to the Classloader resources.
  • Client RIAP connector to access to the Restlet internal resources, directly inside the JVM.
  • Client SOLR connector to call embedded Apache Lucene Solr search and indexing engine.

Available Representations

  • Built-in support for XML representations (JAX, JibX, DOM or SAX based) with a simple XPath API based on JDK's built-in XPath engine.
  • Integration with the FreeMarker template engine
  • Integration with the Velocity template engine
  • Integration with Apache FileUpload to support multi-part forms and easily handle large file uploads from browsers
  • Transformer filter to easily apply XSLT stylesheets on XML representations. It is based on JDK's built-in XSLT engine.
  • Extensible set of core representations based on NIO readable or writable channels, BIO input or output streams.
  • Support for Atom and JSON standards.
  • Integration with Apache Lucene Tika to support metadata extraction from any representation.

Flexible configuration

  • Complete configuration possible in Java via the Restlet API
  • Configuration possible via Restlet XML and WADL files
  • Servlet adapter provided to let you deploy any Restlet application in Servlet compliant containers like Tomcat, when the usage of standalone HTTP connectors is not possible.
  • Implementation of the JAX-RS 1.0 standard API (based on JSR-311).
  • Deployment as native services is possible and illustrated using the powerful Java Service Wrapper.
  • Extensive integration with popular Spring IoC framework.
  • Deployment to Oracle 11g embedded JVM supported by special extension.

Security

  • Supports HTTP Basic and Digest authentication (client and server side)
  • Supports Amazon S3 authentication (client side)
  • Supports Microsoft Shared Key and Shared Key Lite authentication (client side)
  • Supports OAuth authentication (server side)
  • Supports HTTPS (HTTP over SSL)
  • Supports SMTPS (SMTP over SSL) and SMTP-STARTTLS
  • Supports POPS (POP over SSL)

Scalability

  • Fully multi-threaded design with per-request Resource instances to reduce thread-safety issues when developing applications.
  • Intentional removal of Servlet-like HTTP sessions. This concept, attractive as a first sight, is one of the major issue for Servlet scalability and is going against the stateless exchanges promoted by REST.
  • Supports non-blocking NIO modes to decouple the number of connections from the number of threads.
  • Supports asynchronous request processing, decoupled from IO operations. Unlike the Servlet API, the Restlet applications don't have a direct control on the outputstream, they only provide output representation to be written by the server connector.

Upcoming features

Is something important for you missing? Maybe we are already working on it or are planning to do so. We suggest that you have a look at our roadmap or at our complete list of enhancement requests. Feel free to create some new ones if needed!