SlideShare uma empresa Scribd logo
1 de 51
Baixar para ler offline
1
De l’open source à l’open API
avec Restlet
par Jérôme LOUVEL
@jlouvel
2
Abstract
• L’open API, plus importante que l’open source ?
• Tour d’horizon d’APIs web et des acteurs clés
• Restlet Framework 2.1 & Roadmap
• APISpark, PaaS tout-en-un pour APIs web
3
Speaker
• Jérôme LOUVEL (@jlouvel, jlouvel@restlet.com, G+)
• Ingénieur PolyTech’Montpellier, 14 ans d’expérience
• Créateur de Restlet Framework, CEO de Restlet SAS
• Expert JAX-RS 1.0 (JSR-311)
• Contributeur à “RESTful Web Services” (O’Reilly)
• Co-auteur de “Restlet in Action” (Manning)
L’OPEN API, PLUS IMPORTANTE QUE L’OPEN SOURCE ?
Partie 1/4
4
Explosion du nombre d’APIs web
5
Source: ProgrammableWeb
Source: ProgrammableWeb
Croissance des sites web
6
Source: NetCraft / Jacob Nielsen
Un parallèle qui laisse rêveur !
Prédominance de REST
7
Source: ProgrammableWeb
• REST est souvent synonyme de non-SOAP…
• L’hypermédia est rarement exploité…
• AtomPub est plutôt la plus RESTful des APIs à ce jour
• REST n’est pas indispensable au succès d’une API web
• Exigence de qualité croissante : REST comme guide
Source: ProgrammableWeb
L’open API, ça se consomme
• Enrichir un site web (mashups, flux blog/tweets, Google Maps)
• Import/Export SaaS (libérer ses données, changer de fournisseur)
• Intégration SaaS (notifier / web hooks, automatiser / workflow)
• APIs composites (combiner plusieurs APIs en une autre)
8
L’open API permet d’exposer
• Backend Mobile (connectées, natives ou HTML 5)
• Backend SaaS (HTML 5/AJAX, API développeur/partenaire)
• Backend Open Data (multi-formats, API développeur, big data)
• Backend Internet des Objets (M2M, RFID, géolocalisation)
9
Impact de l’open source
10
1. Réduction des coûts (licences)
2. Ecosystème d’innovation (logiciel)
2000 2005
De l’open source à l’open API
11
1. Réduction des coûts (cloud computing)
2. Accès multicanal (mobilité, convergence)
2005 2010
Impact de l’open API
12
1. Réduction des coûts (composition d’APIs web, open & privates, gain de temps)
2. Ecosystème d’innovation (places de marché d’APIs web, nouvelles chaînes de valeur)
2015 2020
Anatomie d’une API web
13
• Un contrat d’API web standard = Mise en concurrence facilitée
• Exemples de contrats : Atom/AtomPub, AWS S3, CDMI, etc.
TOUR D’HORIZON D’APIS WEB ET D’ACTEURS CLÉS
Partie 2/4
14
Twitter et les APIs web
15
Twilio, l’API web est le produit
16
Google Maps Image API
17
http://maps.googleapis.com/maps/api/staticmap?
center=Brooklyn+Bridge,New+York,NY&
zoom=14&
size=512x512&
maptype=roadmap&
markers=color:blue%7Clabel:S%7C40.702147,-74.015794&
markers=color:green%7Clabel:G%7C40.711614,-74.012318&
markers=color:red%7Ccolor:red%7Clabel:C%7C40.718217,-73.998284&
sensor=false
• Représentation « image/png » de la ressource de carte
• Une ressource REST peut exposer des représentations binaires
Amazon et les APIs web
18
• Authentification exotique
• Anti-pattern d’API RESTful
• Mais AWS reste une référence dans le cloud !
De nouveaux acteurs
19
• Frameworks RESTful
• Génération de doc
• Frameworks NIO/HTTP
• Backends as a Service
• Applis mobiles
• SaaS & sites riches
• Open data
• Internet des Objets
• Sécurisation
• Analytics
• SDKs clients
• Gestion communauté
• Annuaire
• Monétisation
• Animation
• Référencement
• Oracle Jersey
• JBoss RESTEasy
• XINS, Swagger
• Enunciate
• Restlet Framework
• StackMob
• Parse.com
• Sencha.io
• Firebase
• APISpark
• Apigee
• Mashery
• 3Scale
• WebServius
• APISpark
• ProgrammableWeb
• Mashape
• Alcatel Open API Platform
• The Easy API
• APISpark
RESTLET FRAMEWORK 2.1 & ROADMAP
Partie 3/4
20
Restlet Framework 2.1
21
Framework pour exposer et consommer
des APIs web de style REST
OSGi
environments
Servlet
containers
Regular
JVM
Android
mobiles
GAE
PaaS
GWT
browsers
Langage
Java
Nombreuses références
22
• Une communauté internationale
• Environ 100 000 développeurs Restlet
Architecture
Une API Java, un moteur et 37 extensions !
23
Multi-protocole
Centré sur HTTP
24
Multi-cloud
Augmentez la portabilité de vos APIs web
25
Support de Google SDC
Accès sécurisé à l’intranet depuis le cloud public
26
Multi-distribution
Une forge logicielle sur mesure
27
REST, un paradigme à part entière
28
Compétition
Niveaux d’abstraction et paradigmes différents
29
Packages de l’API Restlet
Un cœur complet mais compact
30
org.restlet.data
org.restlet.representation
org.restlet
org.restlet.resource
org.restlet.routing
org.restlet.security
org.restlet.service
org.restlet.util
Filtrage et routage
Multi-thread et dynamique
31
Interfaces Java annotées
Approche uniforme, client & serveur
32
public interface RootResource {
@Get("txt")
public String represent();
}
public interface AccountsResource {
@Get("txt|json|xml")
public String represent();
@Post("txt")
public String add(String account);
}
public interface AccountResource {
@Get("txt?depth={level}")
public String represent();
@Put(“form:txt")
public void store(String account);
@Delete
public void remove();
}
Service de conversion
Extensible, scoring, beans de représentation
33
Restlet API vs JAX-RS API
34
Des styles de codage différents
Côté serveur
35
@POST
@Path(“withdrawal")
@Consumes("text/plain")
@Produces("application/json")
public Money withdraw(
@PathParam("card") String card,
@QueryParam("pin") String pin,
String amount){
return getMoney(card,
pin, amount);
}
@Post(“txt:json”)
public Money withdraw(){
String card = getAttribute(“card”);
String pin = getQueryValue(“pin”);
String amount = getQueryValue(“amount”);
return getMoney(card, pin, amount);
}
JAX-RS API 1.1 Restlet API 2.1
Des styles de codage différents
Côté client
36
// Get instance of Client
Client client = ClientFactory.newClient();
// Get account balance
String bal =
client.target("http://.../atm/{cardId}/balance")
.pathParam("cardId", "112233")
.queryParam("pin", "9876")
.request("text/plain").get(String.class);
// Get instance of Client
ClientResource client = new
ClientResource(""http://.../atm/{cardId}/balance");
// Get account balance
client.setAttribute("cardId", "112233");
client.setQueryValue("pin", "9876");
client.accept(MediaType.TXT_PLAIN);
String bal = client.get(String.class);
JAX-RS API 2.0 Restlet API 2.1
Sortie version 2.1
2 ans de développement !
37
1) Améliorations incrémentales de l’API Restlet
• Sucre syntaxique (ClientResource#get/setQuery, get/setAttribute, etc.)
• Amélioration annotations. Example: @Get("form|xml:json?level=2")
• Traçage des requêtes individuel facilité
• ConnegService, DecoderService côté client
• Gestion côté client de l’absence de chunk encoding dans GAE
• Extension EMF (converter XMI/XML), HTML (multi-part upload)
2) Sécurité des APIs web renforcée
• Support des schémas AWS S3, AWS Query, Cookie et GAE
• Support de Google Secure Data Connector (SDC) hors GAE
• Nouvelles extensions OAuth 2.0 et OpenID 2.0 (draft specs)
Sortie version 2.1
Prévu en juin 2012
38
3) Nouveau connecteur HTTP interne
• Design NIO non-bloquant, peu de threads
• Zéro dépendance, centré HTTP/Restlet, lecture représ. asynchrone
• Dépréciation des extensions Grizzly et Netty
• Documenté et extensible (extension SIP)
4) Option « Apache Public License 2.0 »
• En plus d’EPL 1.0, LGPL 2.1/3.0 et CDDL 1.0
• Licences commerciales possible si nécessaire
5) Migration vers GitHub
• Historique SVN avec branches importé
• Tickets Tigris.org importés
• Forge Restlet automatisée mise à jour
• Augmentation des contributions constatée !
Livre « Restlet in Action »
Déjà disponible en MEAP
39
Version 2.2
Ecouter sa communauté !
40
• Migration vers Google Groups
• Listes de diffusion utilisateurs et développeurs encore sur Tigris.org
• Migration vers StackOverFlow
• Déjà largement utilisé pour les questions simples et bogues
• Augmenter la qualité des échanges dans le groupe sur Google en retour
• Migration vers Java SE 6
• Java SE 5 supporté depuis Restlet Framework 1.0 !
• Réduire la taille du code (ex: service pattern)
Version 2.2
Améliorations incrémentales
41
• Nouvelles fonctionnalités
• Optimiser la taille des éditions Android et GWT
• CacheService : générique et extensible
• Edition OSGi : gestion entièrement dynamique
• Injection : Guice, Spring (amélioration)
• Portage en JavaScript natif
• Même niveau d’abstraction qu’en Java
• Côté client (browser/XHR et Node.JS)
• Côté serveur (Node.JS)
• Prototype déjà disponible !
Version 3.0
Les grandes lignes
42
• Site web : nouveau design et tutoriel
• Restlet Studio : IDE basé sur Eclipse 4.0
• Restlet Apps : applications réutilisables (recherche, etc.)
• Connecteur interne
• Unification runtime client et serveur
• Pool de threads unique (via TaskService)
• Support de SPDY [et/ou HTTP 2.0] (sur NIO)
• Nouveau convertisseur interne
• Support multi-formats (XML, JSON, RDF, Form, CSV, etc.)
• Support des hyperliens et des métadonnées HTTP
• Remplaçant des extensions Jackson, XStream, etc.
• Nouveau portage : Google Dart
• Support HTML 5 : Server-Sent Events, Cross-origin policies
Version 3.0
De framework à plate-forme
43
APISPARK, PAAS TOUT-EN-UN POUR APIS WEB
Partie 4/4
44
APISpark, l’offre
La plate-forme tout-en-un pour APIs web
45
APISpark, l’offre
La plate-forme tout-en-un pour APIs web
46
Annuaire d’APIs web
47
Création d’une API web
48
Statistiques et reporting
49
Roadmap
• Beta privée : fin avril 2012
• Beta publique : juin 2012
• Version 1.0 : octobre 2012
Inscrivez-vous !
http://apispark.com
50
Conclusion
Merci !
51
• Apprendre REST & HTTP c’est un investissement sur le long terme
• Nombreuses opportunités autour des APIs web
• Restlet Framework : solution open source puissante et complète
• APISpark : solution en ligne tout-en-un et simple d’usage

Mais conteúdo relacionado

Mais procurados

[Webinaire avec Océane Consulting] Utiliser Vaadin pour intégrer Nuxeo et Lif...
[Webinaire avec Océane Consulting] Utiliser Vaadin pour intégrer Nuxeo et Lif...[Webinaire avec Océane Consulting] Utiliser Vaadin pour intégrer Nuxeo et Lif...
[Webinaire avec Océane Consulting] Utiliser Vaadin pour intégrer Nuxeo et Lif...
Nuxeo
 

Mais procurados (8)

Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
 
OpenStack & DevOps, l'Open Source au service du Cloud
OpenStack & DevOps, l'Open Source au service du CloudOpenStack & DevOps, l'Open Source au service du Cloud
OpenStack & DevOps, l'Open Source au service du Cloud
 
Kit de Developpement Synolia
Kit de Developpement SynoliaKit de Developpement Synolia
Kit de Developpement Synolia
 
JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?
 
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
 
Server Side Javascript in the cloud
Server Side Javascript in the cloudServer Side Javascript in the cloud
Server Side Javascript in the cloud
 
[Webinaire avec Océane Consulting] Utiliser Vaadin pour intégrer Nuxeo et Lif...
[Webinaire avec Océane Consulting] Utiliser Vaadin pour intégrer Nuxeo et Lif...[Webinaire avec Océane Consulting] Utiliser Vaadin pour intégrer Nuxeo et Lif...
[Webinaire avec Océane Consulting] Utiliser Vaadin pour intégrer Nuxeo et Lif...
 
REX Openshift à la Poste
REX Openshift à la PosteREX Openshift à la Poste
REX Openshift à la Poste
 

Destaque

Data Power Architectural Patterns - Jagadish Vemugunta
Data Power Architectural Patterns - Jagadish VemuguntaData Power Architectural Patterns - Jagadish Vemugunta
Data Power Architectural Patterns - Jagadish Vemugunta
floridawusergroup
 

Destaque (9)

De l'open source à l'open API avec Restlet
De l'open source à l'open API avec RestletDe l'open source à l'open API avec Restlet
De l'open source à l'open API avec Restlet
 
Transformez vos Google Spreadsheets en API web - DevFest 2014
Transformez vos Google Spreadsheets en API web - DevFest 2014Transformez vos Google Spreadsheets en API web - DevFest 2014
Transformez vos Google Spreadsheets en API web - DevFest 2014
 
APIStrat Open API Workshop
APIStrat Open API WorkshopAPIStrat Open API Workshop
APIStrat Open API Workshop
 
Intel Mashery API Management Solution
Intel Mashery API Management SolutionIntel Mashery API Management Solution
Intel Mashery API Management Solution
 
Mashery
MasheryMashery
Mashery
 
Enterprise API Security & Data Loss Prevention - Intel
Enterprise API Security & Data Loss Prevention - IntelEnterprise API Security & Data Loss Prevention - Intel
Enterprise API Security & Data Loss Prevention - Intel
 
Intorduction to Datapower
Intorduction to DatapowerIntorduction to Datapower
Intorduction to Datapower
 
Data Power Architectural Patterns - Jagadish Vemugunta
Data Power Architectural Patterns - Jagadish VemuguntaData Power Architectural Patterns - Jagadish Vemugunta
Data Power Architectural Patterns - Jagadish Vemugunta
 
IBM DataPower Gateway - Common Use Cases
IBM DataPower Gateway - Common Use CasesIBM DataPower Gateway - Common Use Cases
IBM DataPower Gateway - Common Use Cases
 

Semelhante a De l'Open Source à l'Open API (in French)

Portails Etat De L'art
Portails  Etat De L'artPortails  Etat De L'art
Portails Etat De L'art
Tugdual Grall
 
Front end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitéeFront end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitée
Ouadie LAHDIOUI
 

Semelhante a De l'Open Source à l'Open API (in French) (20)

Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
 
S51 vos projets web services ibm i a l aide de php
S51   vos projets web services ibm i a l aide de phpS51   vos projets web services ibm i a l aide de php
S51 vos projets web services ibm i a l aide de php
 
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
 
Web APIs in Action (in French)
Web APIs in Action (in French)Web APIs in Action (in French)
Web APIs in Action (in French)
 
Web services SOAP et REST
Web services  SOAP et RESTWeb services  SOAP et REST
Web services SOAP et REST
 
Architecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et XamarinArchitecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et Xamarin
 
Eclipse day paris
Eclipse day parisEclipse day paris
Eclipse day paris
 
Portails Etat De L'art
Portails  Etat De L'artPortails  Etat De L'art
Portails Etat De L'art
 
Front end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitéeFront end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitée
 
Investir sur son API web (in French)
Investir sur son API web (in French)Investir sur son API web (in French)
Investir sur son API web (in French)
 
Resource Oriented Architecture
Resource Oriented ArchitectureResource Oriented Architecture
Resource Oriented Architecture
 
JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?
 
BreizhCamp 2022
BreizhCamp 2022BreizhCamp 2022
BreizhCamp 2022
 
TIAD 2016 : Accenture Devops Platform dans Microsoft Azure
TIAD 2016 : Accenture Devops Platform dans Microsoft AzureTIAD 2016 : Accenture Devops Platform dans Microsoft Azure
TIAD 2016 : Accenture Devops Platform dans Microsoft Azure
 
Open Data Ready ! Libérez vos données avec OData et le Cloud
Open Data Ready ! Libérez vos données avec OData et le CloudOpen Data Ready ! Libérez vos données avec OData et le Cloud
Open Data Ready ! Libérez vos données avec OData et le Cloud
 
Démystifions l'API-culture!
Démystifions l'API-culture!Démystifions l'API-culture!
Démystifions l'API-culture!
 
vNext
vNextvNext
vNext
 
Vincent biret azure functions et flow #AosCanadianTour (quebec)
Vincent biret azure functions et flow #AosCanadianTour (quebec)Vincent biret azure functions et flow #AosCanadianTour (quebec)
Vincent biret azure functions et flow #AosCanadianTour (quebec)
 
Aspectize meetup
Aspectize meetupAspectize meetup
Aspectize meetup
 

Mais de Restlet

Mais de Restlet (20)

APIDays - API Design Workshop
APIDays - API Design WorkshopAPIDays - API Design Workshop
APIDays - API Design Workshop
 
APIdays 2016 - The State of Web API Languages
APIdays 2016  - The State of Web API LanguagesAPIdays 2016  - The State of Web API Languages
APIdays 2016 - The State of Web API Languages
 
DevOps DDay - Streamline DevOps Workflows With APIs
DevOps DDay - Streamline DevOps Workflows With APIsDevOps DDay - Streamline DevOps Workflows With APIs
DevOps DDay - Streamline DevOps Workflows With APIs
 
Restlet Framework NG
Restlet Framework NGRestlet Framework NG
Restlet Framework NG
 
API World 2016 - A five-sided prism polarizing Web API development
API World 2016 - A five-sided prism polarizing Web API developmentAPI World 2016 - A five-sided prism polarizing Web API development
API World 2016 - A five-sided prism polarizing Web API development
 
MuleSoft Connect 2016 - Getting started with RAML using Restlet’s visual desi...
MuleSoft Connect 2016 - Getting started with RAML using Restlet’s visual desi...MuleSoft Connect 2016 - Getting started with RAML using Restlet’s visual desi...
MuleSoft Connect 2016 - Getting started with RAML using Restlet’s visual desi...
 
The never-ending REST API design debate -- Devoxx France 2016
The never-ending REST API design debate -- Devoxx France 2016The never-ending REST API design debate -- Devoxx France 2016
The never-ending REST API design debate -- Devoxx France 2016
 
Public and private APIs: differences and challenges
Public and private APIs: differences and challengesPublic and private APIs: differences and challenges
Public and private APIs: differences and challenges
 
APIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API LanguagesAPIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API Languages
 
The never-ending REST API design debate
The never-ending REST API design debateThe never-ending REST API design debate
The never-ending REST API design debate
 
Take a Groovy REST
Take a Groovy RESTTake a Groovy REST
Take a Groovy REST
 
Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...
Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...
Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...
 
GlueCon 2015 - Publish your SQL data as web APIs
GlueCon 2015 - Publish your SQL data as web APIsGlueCon 2015 - Publish your SQL data as web APIs
GlueCon 2015 - Publish your SQL data as web APIs
 
GlueCon 2015 - How REST APIs can glue all types of devices together
GlueCon 2015 - How REST APIs can glue all types of devices togetherGlueCon 2015 - How REST APIs can glue all types of devices together
GlueCon 2015 - How REST APIs can glue all types of devices together
 
APIdays Paris 2014 - Workshop - Craft and Deploy Your API in a Few Clicks Wit...
APIdays Paris 2014 - Workshop - Craft and Deploy Your API in a Few Clicks Wit...APIdays Paris 2014 - Workshop - Craft and Deploy Your API in a Few Clicks Wit...
APIdays Paris 2014 - Workshop - Craft and Deploy Your API in a Few Clicks Wit...
 
APIdays Paris 2014 - The State of Web API Languages
APIdays Paris 2014 - The State of Web API LanguagesAPIdays Paris 2014 - The State of Web API Languages
APIdays Paris 2014 - The State of Web API Languages
 
Defrag 2014 - Blend Web IDEs, Open Source and PaaS to Create and Deploy APIs
Defrag 2014 - Blend Web IDEs, Open Source and PaaS to Create and Deploy APIsDefrag 2014 - Blend Web IDEs, Open Source and PaaS to Create and Deploy APIs
Defrag 2014 - Blend Web IDEs, Open Source and PaaS to Create and Deploy APIs
 
QCon SF 2014 - Create and Deploy APIs using Web IDEs, Open Source Frameworks ...
QCon SF 2014 - Create and Deploy APIs using Web IDEs, Open Source Frameworks ...QCon SF 2014 - Create and Deploy APIs using Web IDEs, Open Source Frameworks ...
QCon SF 2014 - Create and Deploy APIs using Web IDEs, Open Source Frameworks ...
 
APIdays Paris - How to Build Your Web API
APIdays Paris - How to Build Your Web APIAPIdays Paris - How to Build Your Web API
APIdays Paris - How to Build Your Web API
 
Web APIs, the New Language Frontier
Web APIs, the New Language FrontierWeb APIs, the New Language Frontier
Web APIs, the New Language Frontier
 

De l'Open Source à l'Open API (in French)

  • 1. 1 De l’open source à l’open API avec Restlet par Jérôme LOUVEL @jlouvel
  • 2. 2 Abstract • L’open API, plus importante que l’open source ? • Tour d’horizon d’APIs web et des acteurs clés • Restlet Framework 2.1 & Roadmap • APISpark, PaaS tout-en-un pour APIs web
  • 3. 3 Speaker • Jérôme LOUVEL (@jlouvel, jlouvel@restlet.com, G+) • Ingénieur PolyTech’Montpellier, 14 ans d’expérience • Créateur de Restlet Framework, CEO de Restlet SAS • Expert JAX-RS 1.0 (JSR-311) • Contributeur à “RESTful Web Services” (O’Reilly) • Co-auteur de “Restlet in Action” (Manning)
  • 4. L’OPEN API, PLUS IMPORTANTE QUE L’OPEN SOURCE ? Partie 1/4 4
  • 5. Explosion du nombre d’APIs web 5 Source: ProgrammableWeb Source: ProgrammableWeb
  • 6. Croissance des sites web 6 Source: NetCraft / Jacob Nielsen Un parallèle qui laisse rêveur !
  • 7. Prédominance de REST 7 Source: ProgrammableWeb • REST est souvent synonyme de non-SOAP… • L’hypermédia est rarement exploité… • AtomPub est plutôt la plus RESTful des APIs à ce jour • REST n’est pas indispensable au succès d’une API web • Exigence de qualité croissante : REST comme guide Source: ProgrammableWeb
  • 8. L’open API, ça se consomme • Enrichir un site web (mashups, flux blog/tweets, Google Maps) • Import/Export SaaS (libérer ses données, changer de fournisseur) • Intégration SaaS (notifier / web hooks, automatiser / workflow) • APIs composites (combiner plusieurs APIs en une autre) 8
  • 9. L’open API permet d’exposer • Backend Mobile (connectées, natives ou HTML 5) • Backend SaaS (HTML 5/AJAX, API développeur/partenaire) • Backend Open Data (multi-formats, API développeur, big data) • Backend Internet des Objets (M2M, RFID, géolocalisation) 9
  • 10. Impact de l’open source 10 1. Réduction des coûts (licences) 2. Ecosystème d’innovation (logiciel) 2000 2005
  • 11. De l’open source à l’open API 11 1. Réduction des coûts (cloud computing) 2. Accès multicanal (mobilité, convergence) 2005 2010
  • 12. Impact de l’open API 12 1. Réduction des coûts (composition d’APIs web, open & privates, gain de temps) 2. Ecosystème d’innovation (places de marché d’APIs web, nouvelles chaînes de valeur) 2015 2020
  • 13. Anatomie d’une API web 13 • Un contrat d’API web standard = Mise en concurrence facilitée • Exemples de contrats : Atom/AtomPub, AWS S3, CDMI, etc.
  • 14. TOUR D’HORIZON D’APIS WEB ET D’ACTEURS CLÉS Partie 2/4 14
  • 15. Twitter et les APIs web 15
  • 16. Twilio, l’API web est le produit 16
  • 17. Google Maps Image API 17 http://maps.googleapis.com/maps/api/staticmap? center=Brooklyn+Bridge,New+York,NY& zoom=14& size=512x512& maptype=roadmap& markers=color:blue%7Clabel:S%7C40.702147,-74.015794& markers=color:green%7Clabel:G%7C40.711614,-74.012318& markers=color:red%7Ccolor:red%7Clabel:C%7C40.718217,-73.998284& sensor=false • Représentation « image/png » de la ressource de carte • Une ressource REST peut exposer des représentations binaires
  • 18. Amazon et les APIs web 18 • Authentification exotique • Anti-pattern d’API RESTful • Mais AWS reste une référence dans le cloud !
  • 19. De nouveaux acteurs 19 • Frameworks RESTful • Génération de doc • Frameworks NIO/HTTP • Backends as a Service • Applis mobiles • SaaS & sites riches • Open data • Internet des Objets • Sécurisation • Analytics • SDKs clients • Gestion communauté • Annuaire • Monétisation • Animation • Référencement • Oracle Jersey • JBoss RESTEasy • XINS, Swagger • Enunciate • Restlet Framework • StackMob • Parse.com • Sencha.io • Firebase • APISpark • Apigee • Mashery • 3Scale • WebServius • APISpark • ProgrammableWeb • Mashape • Alcatel Open API Platform • The Easy API • APISpark
  • 20. RESTLET FRAMEWORK 2.1 & ROADMAP Partie 3/4 20
  • 21. Restlet Framework 2.1 21 Framework pour exposer et consommer des APIs web de style REST OSGi environments Servlet containers Regular JVM Android mobiles GAE PaaS GWT browsers Langage Java
  • 22. Nombreuses références 22 • Une communauté internationale • Environ 100 000 développeurs Restlet
  • 23. Architecture Une API Java, un moteur et 37 extensions ! 23
  • 26. Support de Google SDC Accès sécurisé à l’intranet depuis le cloud public 26
  • 28. REST, un paradigme à part entière 28
  • 29. Compétition Niveaux d’abstraction et paradigmes différents 29
  • 30. Packages de l’API Restlet Un cœur complet mais compact 30 org.restlet.data org.restlet.representation org.restlet org.restlet.resource org.restlet.routing org.restlet.security org.restlet.service org.restlet.util
  • 32. Interfaces Java annotées Approche uniforme, client & serveur 32 public interface RootResource { @Get("txt") public String represent(); } public interface AccountsResource { @Get("txt|json|xml") public String represent(); @Post("txt") public String add(String account); } public interface AccountResource { @Get("txt?depth={level}") public String represent(); @Put(“form:txt") public void store(String account); @Delete public void remove(); }
  • 33. Service de conversion Extensible, scoring, beans de représentation 33
  • 34. Restlet API vs JAX-RS API 34
  • 35. Des styles de codage différents Côté serveur 35 @POST @Path(“withdrawal") @Consumes("text/plain") @Produces("application/json") public Money withdraw( @PathParam("card") String card, @QueryParam("pin") String pin, String amount){ return getMoney(card, pin, amount); } @Post(“txt:json”) public Money withdraw(){ String card = getAttribute(“card”); String pin = getQueryValue(“pin”); String amount = getQueryValue(“amount”); return getMoney(card, pin, amount); } JAX-RS API 1.1 Restlet API 2.1
  • 36. Des styles de codage différents Côté client 36 // Get instance of Client Client client = ClientFactory.newClient(); // Get account balance String bal = client.target("http://.../atm/{cardId}/balance") .pathParam("cardId", "112233") .queryParam("pin", "9876") .request("text/plain").get(String.class); // Get instance of Client ClientResource client = new ClientResource(""http://.../atm/{cardId}/balance"); // Get account balance client.setAttribute("cardId", "112233"); client.setQueryValue("pin", "9876"); client.accept(MediaType.TXT_PLAIN); String bal = client.get(String.class); JAX-RS API 2.0 Restlet API 2.1
  • 37. Sortie version 2.1 2 ans de développement ! 37 1) Améliorations incrémentales de l’API Restlet • Sucre syntaxique (ClientResource#get/setQuery, get/setAttribute, etc.) • Amélioration annotations. Example: @Get("form|xml:json?level=2") • Traçage des requêtes individuel facilité • ConnegService, DecoderService côté client • Gestion côté client de l’absence de chunk encoding dans GAE • Extension EMF (converter XMI/XML), HTML (multi-part upload) 2) Sécurité des APIs web renforcée • Support des schémas AWS S3, AWS Query, Cookie et GAE • Support de Google Secure Data Connector (SDC) hors GAE • Nouvelles extensions OAuth 2.0 et OpenID 2.0 (draft specs)
  • 38. Sortie version 2.1 Prévu en juin 2012 38 3) Nouveau connecteur HTTP interne • Design NIO non-bloquant, peu de threads • Zéro dépendance, centré HTTP/Restlet, lecture représ. asynchrone • Dépréciation des extensions Grizzly et Netty • Documenté et extensible (extension SIP) 4) Option « Apache Public License 2.0 » • En plus d’EPL 1.0, LGPL 2.1/3.0 et CDDL 1.0 • Licences commerciales possible si nécessaire 5) Migration vers GitHub • Historique SVN avec branches importé • Tickets Tigris.org importés • Forge Restlet automatisée mise à jour • Augmentation des contributions constatée !
  • 39. Livre « Restlet in Action » Déjà disponible en MEAP 39
  • 40. Version 2.2 Ecouter sa communauté ! 40 • Migration vers Google Groups • Listes de diffusion utilisateurs et développeurs encore sur Tigris.org • Migration vers StackOverFlow • Déjà largement utilisé pour les questions simples et bogues • Augmenter la qualité des échanges dans le groupe sur Google en retour • Migration vers Java SE 6 • Java SE 5 supporté depuis Restlet Framework 1.0 ! • Réduire la taille du code (ex: service pattern)
  • 41. Version 2.2 Améliorations incrémentales 41 • Nouvelles fonctionnalités • Optimiser la taille des éditions Android et GWT • CacheService : générique et extensible • Edition OSGi : gestion entièrement dynamique • Injection : Guice, Spring (amélioration) • Portage en JavaScript natif • Même niveau d’abstraction qu’en Java • Côté client (browser/XHR et Node.JS) • Côté serveur (Node.JS) • Prototype déjà disponible !
  • 42. Version 3.0 Les grandes lignes 42 • Site web : nouveau design et tutoriel • Restlet Studio : IDE basé sur Eclipse 4.0 • Restlet Apps : applications réutilisables (recherche, etc.) • Connecteur interne • Unification runtime client et serveur • Pool de threads unique (via TaskService) • Support de SPDY [et/ou HTTP 2.0] (sur NIO) • Nouveau convertisseur interne • Support multi-formats (XML, JSON, RDF, Form, CSV, etc.) • Support des hyperliens et des métadonnées HTTP • Remplaçant des extensions Jackson, XStream, etc. • Nouveau portage : Google Dart • Support HTML 5 : Server-Sent Events, Cross-origin policies
  • 43. Version 3.0 De framework à plate-forme 43
  • 44. APISPARK, PAAS TOUT-EN-UN POUR APIS WEB Partie 4/4 44
  • 45. APISpark, l’offre La plate-forme tout-en-un pour APIs web 45
  • 46. APISpark, l’offre La plate-forme tout-en-un pour APIs web 46
  • 50. Roadmap • Beta privée : fin avril 2012 • Beta publique : juin 2012 • Version 1.0 : octobre 2012 Inscrivez-vous ! http://apispark.com 50
  • 51. Conclusion Merci ! 51 • Apprendre REST & HTTP c’est un investissement sur le long terme • Nombreuses opportunités autour des APIs web • Restlet Framework : solution open source puissante et complète • APISpark : solution en ligne tout-en-un et simple d’usage