atmosphere framework

19
Atmosphere Framework par Fabien Baligand

Upload: fabien-baligand

Post on 25-May-2015

5.726 views

Category:

Technology


2 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Atmosphere Framework

AtmosphereFramework

par Fabien Baligand

Page 2: Atmosphere Framework

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 3: Atmosphere Framework

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 4: Atmosphere Framework

Page 4Jump Camp 4 IT – Hacker le cerveau

Ajax Push/Comet : techniques

Page 5: Atmosphere Framework

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 6: Atmosphere Framework

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 7: Atmosphere Framework

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 8: Atmosphere Framework

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 9: Atmosphere Framework

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 10: Atmosphere Framework

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 11: Atmosphere Framework

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 12: Atmosphere Framework

Page 12Jump Camp 4 IT – Hacker le cerveau

DEMO

DEMO SIMPLE SAMPLE

Page 13: Atmosphere Framework

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 14: Atmosphere Framework

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 15: Atmosphere Framework

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 16: Atmosphere Framework

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 17: Atmosphere Framework

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 18: Atmosphere Framework

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 19: Atmosphere Framework

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