SlideShare une entreprise Scribd logo
De l’open source à l’open API
        avec Restlet
          par Jérôme LOUVEL
                @jlouvel




                                1
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



                                                      2
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)

                                                               3
Partie 1/4

L’OPEN API, PLUS IMPORTANTE QUE L’OPEN SOURCE ?




                                                  4
Explosion du nombre d’APIs web




                              Source: ProgrammableWeb
    Source: ProgrammableWeb




                                                        5
Croissance des sites web




                Source: NetCraft / Jacob Nielsen




        Un parallèle qui laisse rêveur !



                                                   6
Prédominance de REST


                                                                                Source: ProgrammableWeb


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




                                                                                                          7
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




    2000                                           2005

           1. Réduction des coûts (licences)
           2. Ecosystème d’innovation (logiciel)



                                                          10
De l’open source à l’open API




    2005                                                 2010

           1. Réduction des coûts (cloud computing)
           2. Accès multicanal (mobilité, convergence)



                                                                11
Impact de l’open API




  2015                                                           2020

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)



                                                                                        12
Anatomie d’une API web




   • Un contrat d’API web standard = Mise en concurrence facilitée
   • Exemples de contrats : Atom/AtomPub, AWS S3, CDMI, etc.



                                                                     13
Partie 2/4

TOUR D’HORIZON D’APIS WEB ET D’ACTEURS CLÉS




                                              14
Twitter et les APIs web




                          15
Twilio, l’API web est le produit




                                   16
Google Maps Image API
        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




                                                                                   17
Amazon et les APIs web




     • Authentification exotique
     • Anti-pattern d’API RESTful
     • Mais AWS reste une référence dans le cloud !
                                                      18
De nouveaux acteurs
                          •   Backends as a Service
                                                         •   Sécurisation         •   Annuaire
•   Frameworks RESTful        •    Applis mobiles
                                                         •   Analytics            •   Monétisation
•   Génération de doc         •    SaaS & sites riches
                                                         •   SDKs clients         •   Animation
•   Frameworks NIO/HTTP       •    Open data
                                                         •   Gestion communauté   •   Référencement
                              •    Internet des Objets




•   Oracle Jersey              •     StackMob                •    Apigee          •   ProgrammableWeb
•   JBoss RESTEasy             •     Parse.com               •    Mashery         •   Mashape
•   XINS, Swagger              •     Sencha.io               •    3Scale          •   Alcatel Open API Platform
•   Enunciate                  •     Firebase                •    WebServius      •   The Easy API
•   Restlet Framework          •     APISpark                •    APISpark        •   APISpark




                                                                                                                  19
Partie 3/4

RESTLET FRAMEWORK 2.1 & ROADMAP




                                  20
Restlet Framework 2.1
                 Framework pour exposer et consommer
                      des APIs web de style REST




                       Langage
                         Java




    OSGi         Servlet         Regular   Android   GAE      GWT
environments   containers         JVM      mobiles   PaaS   browsers




                                                                       21
Nombreuses références




     • Une communauté internationale
     • Environ 100 000 développeurs Restlet



                                              22
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

                   org.restlet.data



              org.restlet.representation



                org.restlet.resource



org.restlet      org.restlet.routing



                 org.restlet.security



                 org.restlet.service



                   org.restlet.util




                                             30
Filtrage et routage
 Multi-thread et dynamique




                             31
Interfaces Java annotées
 Approche uniforme, client & serveur
                     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();
                     }




                                                              32
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

JAX-RS API 1.1                          Restlet API 2.1
@POST                                   @Post(“txt:json”)
@Path(“withdrawal")                     public Money withdraw(){
@Consumes("text/plain")                    String card = getAttribute(“card”);
@Produces("application/json")              String pin = getQueryValue(“pin”);
public Money withdraw(                     String amount = getQueryValue(“amount”);
@PathParam("card") String card,            return getMoney(card, pin, amount);
@QueryParam("pin") String pin,          }
String amount){
   return getMoney(card,
pin, amount);
}




                                                                                      35
Des styles de codage différents
                                             Côté client

        JAX-RS API 2.0                             Restlet API 2.1
// Get instance of Client                          // Get instance of Client
Client client = ClientFactory.newClient();         ClientResource client = new
                                                   ClientResource(""http://.../atm/{cardId}/balance");
// Get account balance
String bal =                                       // Get account balance
client.target("http://.../atm/{cardId}/balance")   client.setAttribute("cardId", "112233");
   .pathParam("cardId", "112233")                  client.setQueryValue("pin", "9876");
   .queryParam("pin", "9876")                      client.accept(MediaType.TXT_PLAIN);
   .request("text/plain").get(String.class);       String bal = client.get(String.class);




                                                                                                         36
Sortie version 2.1
              2 ans de développement !
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)



                                                                              37
Sortie version 2.1
                     Prévu en juin 2012
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 !

                                                                        38
Livre « Restlet in Action »
     Déjà disponible en MEAP




                               39
Version 2.2
                 Ecouter sa communauté !

• 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)


                                                                             40
Version 2.2
       Améliorations incrémentales

• 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 !
                                                      41
Version 3.0
                    Les grandes lignes
• 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

                                                                42
Version 3.0
De framework à plate-forme




                             43
Partie 4/4

APISPARK, PAAS TOUT-EN-UN POUR APIS WEB




                                          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 !


•   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




                                                                      51

Contenu connexe

Similaire à De l'open source à l'open API avec Restlet (20)

PPTX
Asp.Net Web.API, SignalR et UX : le futur
Microsoft
 
PDF
Investir sur son API web (in French)
Restlet
 
PDF
Firefox os appdays paris par tristan nitot: Hack, Learn, Celebrate
Tristan Nitot
 
PDF
Comprendre, utiliser et créer une API
Olivia Reaney
 
PDF
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Jean-Laurent de Morlhon
 
PDF
Tk02 Google Wave Et Html5 Fr
Valtech
 
PPTX
Le design d'API avec Mulesoft
SpikeeLabs
 
PDF
Smartday 2017 - Importance des API dans l'Open Data
Julien Chable
 
PDF
Démystifions l'API-culture!
OCTO Technology Suisse
 
PDF
Google Cloud Endpoints - DevFest - Nantes 2012
Maxime Gréau
 
PDF
Livre blanc : les nouveaux enjeux des API
labdesusages
 
PPTX
Api&sdk
Alexandre Jubien
 
PPT
Resource Oriented Architecture
DNG Consulting
 
PDF
Web 2.0 Vs médias et RSE
CYB@RDECHE
 
PDF
What's Next Replay! Lyon 2011 - A. Cogoluegnes
Zenika
 
PDF
Rich Desktop Applications
goldoraf
 
PDF
JUG Summer Camp (Sep 2011) - Les applications et architectures d’entreprise d...
Michaël Figuière
 
PDF
Google End points pour vos applications Android par Didier Girard 3 avril 2013
Paris Android User Group
 
PDF
Meito workshop api - 6 fev 2012 - compilation.
Yann Dieulangard
 
PPTX
Restlet et le multi-plateforme
Jerome Louvel
 
Asp.Net Web.API, SignalR et UX : le futur
Microsoft
 
Investir sur son API web (in French)
Restlet
 
Firefox os appdays paris par tristan nitot: Hack, Learn, Celebrate
Tristan Nitot
 
Comprendre, utiliser et créer une API
Olivia Reaney
 
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Jean-Laurent de Morlhon
 
Tk02 Google Wave Et Html5 Fr
Valtech
 
Le design d'API avec Mulesoft
SpikeeLabs
 
Smartday 2017 - Importance des API dans l'Open Data
Julien Chable
 
Démystifions l'API-culture!
OCTO Technology Suisse
 
Google Cloud Endpoints - DevFest - Nantes 2012
Maxime Gréau
 
Livre blanc : les nouveaux enjeux des API
labdesusages
 
Resource Oriented Architecture
DNG Consulting
 
Web 2.0 Vs médias et RSE
CYB@RDECHE
 
What's Next Replay! Lyon 2011 - A. Cogoluegnes
Zenika
 
Rich Desktop Applications
goldoraf
 
JUG Summer Camp (Sep 2011) - Les applications et architectures d’entreprise d...
Michaël Figuière
 
Google End points pour vos applications Android par Didier Girard 3 avril 2013
Paris Android User Group
 
Meito workshop api - 6 fev 2012 - compilation.
Yann Dieulangard
 
Restlet et le multi-plateforme
Jerome Louvel
 

Plus de Jerome Louvel (8)

PDF
DevOps D-Day - Streamline DevOps workflows with APIs
Jerome Louvel
 
PDF
Restlet Framework NG
Jerome Louvel
 
PDF
APIdays 2015 - The State of Web API Languages
Jerome Louvel
 
PDF
API Strategy & Practice - API Discovery, Hubs and IDEs
Jerome Louvel
 
PDF
20140527 - APIcon SF - Workshop #2 - Document and manage Java-based web APIs
Jerome Louvel
 
PDF
Web APIs, the New Language Frontier
Jerome Louvel
 
PDF
Build, host and manage your custom API in less than an hour
Jerome Louvel
 
PDF
APIdays San Francisco, 06/22/2013
Jerome Louvel
 
DevOps D-Day - Streamline DevOps workflows with APIs
Jerome Louvel
 
Restlet Framework NG
Jerome Louvel
 
APIdays 2015 - The State of Web API Languages
Jerome Louvel
 
API Strategy & Practice - API Discovery, Hubs and IDEs
Jerome Louvel
 
20140527 - APIcon SF - Workshop #2 - Document and manage Java-based web APIs
Jerome Louvel
 
Web APIs, the New Language Frontier
Jerome Louvel
 
Build, host and manage your custom API in less than an hour
Jerome Louvel
 
APIdays San Francisco, 06/22/2013
Jerome Louvel
 
Publicité

Dernier (11)

PDF
Circuit Breaker pattern avec Resilience4j
SOUFIANE MOUHTARAM
 
PDF
Communication entre les conteneurs docker dans diff réseaux
SOUFIANE MOUHTARAM
 
PPTX
Soutanece Stage Pfe Développement Web et Multimédia
YassineMyara
 
PDF
CHAPITRE 5_Déplacement des données DBA.pdf
houcemswissi1
 
PDF
CHAPITRE1_Architecture du Serveur Oracle.pdf
houcemswissi1
 
PDF
Généralités sur balisage (Tagging) en git
SOUFIANE MOUHTARAM
 
PDF
Présentation UCOPIA et ses fonctionnalités
ZakariaRAHOUI2
 
PDF
linkyfi presentation et ses fonctionnalité
ZakariaRAHOUI2
 
PDF
Google Remote Procedure Call Web Service
SOUFIANE MOUHTARAM
 
PDF
Rapport de Stage Fin D’étude - Développement Web et Multimédia
YassineMyara
 
PDF
Katalog VRF Clivet vrf technology(1).pdf
MehfoozAli19
 
Circuit Breaker pattern avec Resilience4j
SOUFIANE MOUHTARAM
 
Communication entre les conteneurs docker dans diff réseaux
SOUFIANE MOUHTARAM
 
Soutanece Stage Pfe Développement Web et Multimédia
YassineMyara
 
CHAPITRE 5_Déplacement des données DBA.pdf
houcemswissi1
 
CHAPITRE1_Architecture du Serveur Oracle.pdf
houcemswissi1
 
Généralités sur balisage (Tagging) en git
SOUFIANE MOUHTARAM
 
Présentation UCOPIA et ses fonctionnalités
ZakariaRAHOUI2
 
linkyfi presentation et ses fonctionnalité
ZakariaRAHOUI2
 
Google Remote Procedure Call Web Service
SOUFIANE MOUHTARAM
 
Rapport de Stage Fin D’étude - Développement Web et Multimédia
YassineMyara
 
Katalog VRF Clivet vrf technology(1).pdf
MehfoozAli19
 
Publicité

De l'open source à l'open API avec Restlet

  • 1. De l’open source à l’open API avec Restlet par Jérôme LOUVEL @jlouvel 1
  • 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 2
  • 3. Speaker • Jérôme LOUVEL (@jlouvel, [email protected], 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) 3
  • 4. Partie 1/4 L’OPEN API, PLUS IMPORTANTE QUE L’OPEN SOURCE ? 4
  • 5. Explosion du nombre d’APIs web Source: ProgrammableWeb Source: ProgrammableWeb 5
  • 6. Croissance des sites web Source: NetCraft / Jacob Nielsen Un parallèle qui laisse rêveur ! 6
  • 7. Prédominance de REST Source: ProgrammableWeb 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 7
  • 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 2000 2005 1. Réduction des coûts (licences) 2. Ecosystème d’innovation (logiciel) 10
  • 11. De l’open source à l’open API 2005 2010 1. Réduction des coûts (cloud computing) 2. Accès multicanal (mobilité, convergence) 11
  • 12. Impact de l’open API 2015 2020 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) 12
  • 13. Anatomie d’une API web • Un contrat d’API web standard = Mise en concurrence facilitée • Exemples de contrats : Atom/AtomPub, AWS S3, CDMI, etc. 13
  • 14. Partie 2/4 TOUR D’HORIZON D’APIS WEB ET D’ACTEURS CLÉS 14
  • 15. Twitter et les APIs web 15
  • 16. Twilio, l’API web est le produit 16
  • 17. Google Maps Image API 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 17
  • 18. Amazon et les APIs web • Authentification exotique • Anti-pattern d’API RESTful • Mais AWS reste une référence dans le cloud ! 18
  • 19. De nouveaux acteurs • Backends as a Service • Sécurisation • Annuaire • Frameworks RESTful • Applis mobiles • Analytics • Monétisation • Génération de doc • SaaS & sites riches • SDKs clients • Animation • Frameworks NIO/HTTP • Open data • Gestion communauté • Référencement • Internet des Objets • Oracle Jersey • StackMob • Apigee • ProgrammableWeb • JBoss RESTEasy • Parse.com • Mashery • Mashape • XINS, Swagger • Sencha.io • 3Scale • Alcatel Open API Platform • Enunciate • Firebase • WebServius • The Easy API • Restlet Framework • APISpark • APISpark • APISpark 19
  • 20. Partie 3/4 RESTLET FRAMEWORK 2.1 & ROADMAP 20
  • 21. Restlet Framework 2.1 Framework pour exposer et consommer des APIs web de style REST Langage Java OSGi Servlet Regular Android GAE GWT environments containers JVM mobiles PaaS browsers 21
  • 22. Nombreuses références • Une communauté internationale • Environ 100 000 développeurs Restlet 22
  • 23. Architecture Une API Java, un moteur et 37 extensions ! 23
  • 24. Multi-protocole Centré sur HTTP 24
  • 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 org.restlet.data org.restlet.representation org.restlet.resource org.restlet org.restlet.routing org.restlet.security org.restlet.service org.restlet.util 30
  • 31. Filtrage et routage Multi-thread et dynamique 31
  • 32. Interfaces Java annotées Approche uniforme, client & serveur 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(); } 32
  • 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 JAX-RS API 1.1 Restlet API 2.1 @POST @Post(“txt:json”) @Path(“withdrawal") public Money withdraw(){ @Consumes("text/plain") String card = getAttribute(“card”); @Produces("application/json") String pin = getQueryValue(“pin”); public Money withdraw( String amount = getQueryValue(“amount”); @PathParam("card") String card, return getMoney(card, pin, amount); @QueryParam("pin") String pin, } String amount){ return getMoney(card, pin, amount); } 35
  • 36. Des styles de codage différents Côté client JAX-RS API 2.0 Restlet API 2.1 // Get instance of Client // Get instance of Client Client client = ClientFactory.newClient(); ClientResource client = new ClientResource(""http://.../atm/{cardId}/balance"); // Get account balance String bal = // Get account balance client.target("http://.../atm/{cardId}/balance") client.setAttribute("cardId", "112233"); .pathParam("cardId", "112233") client.setQueryValue("pin", "9876"); .queryParam("pin", "9876") client.accept(MediaType.TXT_PLAIN); .request("text/plain").get(String.class); String bal = client.get(String.class); 36
  • 37. Sortie version 2.1 2 ans de développement ! 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) 37
  • 38. Sortie version 2.1 Prévu en juin 2012 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 ! 38
  • 39. Livre « Restlet in Action » Déjà disponible en MEAP 39
  • 40. Version 2.2 Ecouter sa communauté ! • 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) 40
  • 41. Version 2.2 Améliorations incrémentales • 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 ! 41
  • 42. Version 3.0 Les grandes lignes • 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 42
  • 43. Version 3.0 De framework à plate-forme 43
  • 44. Partie 4/4 APISPARK, PAAS TOUT-EN-UN POUR APIS WEB 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 ! • 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 51