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