10 years have passed since the launch of Restlet Framework v1, the first RESTful API framework created, and thanks to our efforts and our open source community, we have gathered a lot of experience along the way. In parallel, the continuous innovation, competition and maturation in the web API space in general and in the Java space as well has created an opportunity to innovate again. The goal is to have a prototype of the v3 of the framework working, based on Netty and Reactive Streams, supporting HTTP/2 and async APIs in a RESTful way.
3. More APIs
API centric
software
Mobile app
backend
IoT
backend
Micro
service
Partner API
gateway
Web app
backend
Public
API
gateway
Social bot
backend
Automated
workflow
9. Summer kickoff
● Simplified code base
○ Removed multi-editions support and kept only 8 extensions
○ Java EE, GAE and GWT specific code removed
○ Only Java SE with compatibility with Android and OSGi
○ Used a new repository to remove historical weight from Git (binary dependencies)
● Reset build
○ Now regular Maven project structure and dependencies
○ Gradle is considered (now supported by default in Eclipse Neon!)
● Put new runtime stack in place
○ Java 8, SLF4J, Netty, Reactive Streams
10. REST Fest hack day
● Made Netty to Restlet API communication work :-)
○ Lots of debugging to make get an HTTP request/response work
○ Used a Reactive Streams adapter for Netty developed by Play! Team
■ Opportunity to contribute back and help moved as subproject of Netty (HTTP 2.0)
○ Still limited to in-memory representations
● Started refactoring the Restlet API
○ Refactoring the Representation class to separate the data from the metadata better
○ Introducing a new Data class hierarchy
■ Facilitate support streaming data
■ Pending work before I go back home :)
● https://github.com/restlet/restlet-framework
11. Restlet API processing
Restlet annotated
Java interfaces
Dynamic Restlet
client proxy
Client
program
Dynamic Restlet
server component
Server
implementation
Server
configuration
HTTP
call
Java
call
Java
call
Client
configuration
uses implements introspects
(re)generate
implements
API contract
definition
12. What’s next?
● Collect feedback from the community
○ Reach out to Restlet Framework users
○ Reach out to other API developers and DevOps practitioners
● Push REST support further
○ Reactive REST with built-in HTTP 2.0 connector
● Make programming web APIs even more accessible
○ Introduce new abstractions to simplify writing servers and client
○ Support API contract driven approach with code generation and regeneration
○ Look at best ways to add API tooling and DSL support
● Release a 3.0 milestone by the end of 2016