NG
@jlouvel
Looking backward
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
More participants
User
Developer
Writer
Tester
Operator
API
Team
Manager
More approaches
Contract-driven
Code-driven
Behavior-driven
Data-driven
Service-driven
API
Project
Test-driven
API x DevOps = Better software delivery
DEV
API centric
software
QAOPS
Looking forward
client&server
API Centric
DevOps
Next
version 3
Java
8
HTTP
2.0
reactive
REST
DSL
API Centric
Java EE
Current
version 2
client&server
Java
7
HTTP
1.1
synchronousREST
portable
New runtime stack
Converters InjectorsAuthenticators
Reactive
Streams 1.0
Java 8.0
Restlet Framework
Runtime
Netty 4.1 SLF4J 1.7
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
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
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
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

Restlet Framework NG

  • 1.
  • 2.
  • 3.
    More APIs API centric software Mobileapp backend IoT backend Micro service Partner API gateway Web app backend Public API gateway Social bot backend Automated workflow
  • 4.
  • 5.
  • 6.
    API x DevOps= Better software delivery DEV API centric software QAOPS
  • 7.
    Looking forward client&server API Centric DevOps Next version3 Java 8 HTTP 2.0 reactive REST DSL API Centric Java EE Current version 2 client&server Java 7 HTTP 1.1 synchronousREST portable
  • 8.
    New runtime stack ConvertersInjectorsAuthenticators Reactive Streams 1.0 Java 8.0 Restlet Framework Runtime Netty 4.1 SLF4J 1.7
  • 9.
    Summer kickoff ● Simplifiedcode 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 hackday ● 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 Restletannotated 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? ● Collectfeedback 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