Atmosphere Framework

6 922 vues

Publié le

Présentation du framework Atmosphere, qui permet de réaliser des applications web asynchrones (Comet) en java de manière simple, portable et RESTful

Publié dans : Technologie, Formation
0 commentaire
4 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
6 922
Sur SlideShare
0
Issues des intégrations
0
Intégrations
40
Actions
Partages
0
Téléchargements
96
Commentaires
0
J’aime
4
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Atmosphere Framework

  1. 2. Plan <ul><li>Présentation de Ajax Push/Comet </li></ul><ul><li>Présentation du framework Atmosphere </li></ul><ul><li>Nouveautés de la version 0.5 </li></ul><ul><li>Conclusion </li></ul><ul><li>Démo / Atelier de coding </li></ul>
  2. 3. Ajax Push/Comet : définition <ul><li>Ajax Push/Comet est le concept inverse du paradigme classique HTTP : ce n’est plus le client qui envoie des requêtes, des données ; mais le serveur qui envoie les évènements, les données, au fil de l’eau. </li></ul><ul><li>Usages d’Ajax Push / Comet : </li></ul><ul><ul><li>Application de chat </li></ul></ul><ul><ul><li>Application de jeu en ligne </li></ul></ul><ul><ul><li>Application boursière </li></ul></ul><ul><ul><li>Toute application où des évènements/données envoyés au serveur doivent être propagés immédiatement à tous les clients connectés. </li></ul></ul>
  3. 4. Ajax Push/Comet : techniques
  4. 5. Atmosphere : définition <ul><li>Atmosphere est un framework java permettant de réaliser des applications Ajax Push/Comet de manière portable, simple, et RESTful. </li></ul>
  5. 6. Atmosphere : portabilité <ul><li>S’exécute sur n’importe quel serveur d’applications compatible Servlet 2.3 </li></ul><ul><ul><li>En utilisant une gestion non bloquante des threads : Grizzly, GlassFish, JBoss, WebLogic, Jetty, Tomcat, Google App Engine </li></ul></ul><ul><ul><li>En utilisant une gestion bloquante des threads : Resin, Tomcat 4, Sun WS, Oracle4J, Jetty 5, Winstone, etc. </li></ul></ul><ul><li>Support de Servlet 3.0 Async API </li></ul><ul><ul><li>Auto-détection de Servlet 3.0 </li></ul></ul><ul><ul><ul><li>(GlassFish v3, Jetty 8, prochainement Tomcat 7) </li></ul></ul></ul>
  6. 7. Atmosphere : c’est simple <ul><li>Utilisation de simples POJO </li></ul><ul><li>Utilisation de simples annotations </li></ul><ul><li>Et c’est tout ! </li></ul>
  7. 8. Atmosphere : c’est simple <ul><li>Nul besoin de savoir : </li></ul><ul><li>Les problématiques de gestion asynchrone des I/O et des threads </li></ul><ul><li>Les différences d’implémentation des serveurs d’applications </li></ul><ul><li>Les différences de comportement du navigateur </li></ul><ul><li>Les problématiques Proxy/Réseau </li></ul><ul><li>Une solution pour la limite de deux connexions simultanées par DNS côté navigateur </li></ul><ul><li>La connaissance d’une solution complexe/lourde </li></ul>
  8. 9. Atmosphere : RESTful <ul><li>REST : </li></ul><ul><ul><li>Style architectural orienté Resource, se basant sur les méthodes HTTP (GET, PUT, DELETE, POST), où l’URI est importante, et où il n’y a pas de gestion d’état entre les requêtes </li></ul></ul><ul><li>JAX-RS: </li></ul><ul><ul><li>API Standard Java pour le développement simplifié de services web REST </li></ul></ul><ul><ul><li>Inclus dans Java EE 6 </li></ul></ul><ul><li>Jersey: </li></ul><ul><ul><li>L’ implémentation de référence de JAX-RS </li></ul></ul><ul><ul><li>Inclus dans Glassfish V3 </li></ul></ul>
  9. 10. Atmosphere : annotations <ul><li>Toutes les annotations JAX-RS et Jersey </li></ul><ul><li>Plus les annotations Atmosphere : </li></ul><ul><ul><li>@Suspend : Suspend une requête </li></ul></ul><ul><ul><li>@Resume : Reprend une requête suspendue </li></ul></ul><ul><ul><li>@Broadcast : Envoie/Propage un ou des évènements </li></ul></ul><ul><ul><ul><li>Possibilité de filtrer/agréger les évènements en utilisant BroadcastFilter </li></ul></ul></ul><ul><ul><li>@Schedule : Envoie périodiquement un évènement </li></ul></ul><ul><ul><li>@Cluster : Réplique les évènements sur une grappe de serveurs (en utilisant JGroups ou Shoal) </li></ul></ul>
  10. 11. Exemple simple <ul><li>@Path(&quot;/&quot;) </li></ul><ul><li>@Produces(&quot;text/html;charset=ISO-8859-1&quot;) </li></ul><ul><li>public class SimpleSample { </li></ul><ul><li>@GET </li></ul><ul><li>@Suspend </li></ul><ul><li>public String subscribe() { </li></ul><ul><li>return &quot;&quot;; </li></ul><ul><li>} </li></ul><ul><li>@POST </li></ul><ul><li>@Broadcast </li></ul><ul><li>public String publish( @FormParam(&quot;message&quot;) String message){ </li></ul><ul><li>return message + &quot;<br/>&quot;; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  11. 12. DEMO <ul><li>DEMO SIMPLE SAMPLE </li></ul>
  12. 13. Qui est derrière Atmosphere ? <ul><li>Jean-Francois Arcand : créateur d’Atmosphere, principal contributeur, aujourd’hui co-leader du projet </li></ul><ul><li>Paul Sandoz : co-leader d’Atmosphere, et aussi co-leader de JAX-RS et de son implémentation de référence Jersey. </li></ul>
  13. 14. Atmosphere : intégration <ul><li>Facilement intégrable avec : </li></ul><ul><ul><li>RestEasy, DWR, Struts, Grails, Scala Actors (via le projet Akka), Wicket, GWT, Cometd, JSF (via PrimeFaces), Google Guice, Lift Framework (en cours), etc. </li></ul></ul>
  14. 15. Atmosphere Spade Server <ul><li>Stack end-to-end incluant : </li></ul><ul><ul><li>Serveur web Grizzly </li></ul></ul><ul><ul><li>Moteur Jersey </li></ul></ul><ul><ul><li>Tous les modules Atmosphere </li></ul></ul><ul><li>Un unique jar </li></ul><ul><li>Utilisable directement par commande en ligne : </li></ul><ul><ul><li>java -jar atmosphere-spade-server.jar -p 8080 -a myApp.war </li></ul></ul><ul><li>S’embarque facilement dans une application </li></ul>
  15. 16. Atmosphere Plug-ins <ul><li>Jeu de classes et d’annotations apportant des fonctionnalités supplémentaires : </li></ul><ul><li>Fonctionnalités de load-balancing / clustering </li></ul><ul><ul><li>JGroups plugin, Shoal Plugin, JMS Plugin </li></ul></ul><ul><li>Fonctionnalités spécifiques à un conteneur : </li></ul><ul><ul><li>Grizzly Plugin : supporte la gestion asynchrone des threads </li></ul></ul><ul><li>Annotations/classes fournies par la communauté </li></ul>
  16. 17. Nouveautés de la version 0.5 <ul><li>Support des transactions (en utilisant des cookies) </li></ul><ul><ul><li>Aucun évènement perdu </li></ul></ul><ul><li>Agrégateur d’évènements (BroadcastFilter) </li></ul><ul><ul><li>Optimisation de l’envoi d’évènements en les agrégeant </li></ul></ul><ul><li>Support de la persistance </li></ul><ul><ul><li>Persiste les évènements en BDD, JMS </li></ul></ul><ul><li>Support de plus de frameworks (dont Google Guice) </li></ul><ul><li>Support de WebSocket (HTML5) </li></ul><ul><ul><li>Via le support des WebSocket de Grizzly 1.9.19/GlassFish v3 </li></ul></ul><ul><li>Solution pour la limite de 2 connexions par DNS </li></ul><ul><ul><li>Atmosphere Client MultiPlex Plug In </li></ul></ul>
  17. 18. Conclusion <ul><li>Le framework Atmosphere est un outil simple et puissant pour écrire des applications web asynchrones </li></ul><ul><ul><li>Tire le meilleur parti de chaque serveur d’applications </li></ul></ul><ul><ul><li>Tire le meilleur parti du projet Jersey </li></ul></ul><ul><ul><ul><li>Web services RESTful </li></ul></ul></ul><ul><ul><ul><li>Annotations JAX-RS </li></ul></ul></ul><ul><ul><li>On peut développer à partir de simples POJO </li></ul></ul><ul><ul><li>Pas besoin de réécrire votre application </li></ul></ul><ul><ul><ul><li>Atmosphere Meteor pour s’intégrer avec votre framework web </li></ul></ul></ul><ul><li>Communauté importante autour d’Atmosphere </li></ul><ul><ul><li>Grails, Scala (Akka Project), JSF (PrimeFaces) </li></ul></ul>
  18. 19. Pour aller plus loin <ul><li>Atmosphere: </li></ul><ul><ul><li>https://atmosphere.dev.java.net </li></ul></ul><ul><ul><li>http://twitter.com/atmosphere_java </li></ul></ul><ul><li>Jersey: </li></ul><ul><ul><li>https://jersey.dev.java.net </li></ul></ul><ul><li>Jean-Francois Arcand: </li></ul><ul><ul><li>http://weblogs.java.net/blog/jfarcand/ </li></ul></ul><ul><ul><li>http://twitter.com/jfarcand </li></ul></ul>

×