SlideShare a Scribd company logo
1 of 39
Building Powerful WebSocket, Comet, and RESTful Applications Using Atmosphere http://twitter.com/atmo_framework Jeanfrancois Arcand http://twitter.com/jfarcand Paul Sandoz http://twitter.com/PaulSandoz
Creator of  the Grizzly Framework  Creatpr of GlassFish v3 Grizzly Micro Kernel Creator and Co-Leader of  Atmosphere Jeanfrancois 9 years @ Sun Microsystem Creator Async Http Client Co-leader  of Atmosphere Creator and Lead of Jersey Paul 13 years @ Sun Microsystem Java Champion
News and Update Comet and WebSocket Protocol The Atmosphere Framework Ya Ya Ya That’s Impossible High-level RESTful and asynchronous applications Twitter Search Conclusion  Q & A
PrimeFaces (JSF) Spring IntegrationAkka (Scala/Actor) GWT-Comet Apache Tuscany Grails (Plug In)Atlassian (JIRA) Ning (Social Network)AutoDesk (AutoCad) Fabric3 (3D) Thinked (Journie), Sonatype (Secret) Wink Wicket Struts JQuery Atmosphere 0.6.2 New! Atmosphere Gaming Framework
LongPolling Web Socket Streaming Browser Server Browser Server Browser Server Request Request Request Request Response Response Response Response Response Upgrade Data Data
Atmosphere Java WebServer
WebSocket Nothing Comet Java WebServer Atmosphere
Atmosphere WebSocket Comet API Servlet 3.0 API Nothing Comet Java WebServer
Atmosphere Atmosphere Application Atmosphere Runtime WebSocket Comet API Servlet 3.0 API Nothing Comet Java WebServer
Atmosphere Atmosphere Application Atmosphere Runtime Guice WebSocket Comet API Servlet 3.0 API Nothing Comet Java WebServer
Atmosphere Servlet Atmosphere Application Servlet runner Atmosphere Runtime Guice WebSocket Comet API Servlet 3.0 API Nothing Comet Java WebServer
Atmosphere Atmosphere Annotations Servlet Atmosphere Application Servlet runner Atmosphere Runtime Guice WebSocket Comet API Servlet 3.0 API Nothing Comet Java WebServer
Atmosphere Cluster Atmosphere Annotations Servlet Atmosphere Application Servlet runner Atmosphere Runtime Guice WebSocket Comet API Servlet 3.0 API Nothing Comet Java WebServer
Atmosphere Atmosphere Application Cluster Atmosphere Annotations Jersey Servlet Atmosphere Application Servlet runner Atmosphere Runtime Guice WebSocket Comet API Servlet 3.0 API Nothing Comet Java WebServer
Atmosphere Atmosphere JQuery Atmosphere Application Cluster Atmosphere Annotations Jersey Servlet Atmosphere Application Servlet runner Atmosphere Runtime Guice WebSocket Comet API Servlet 3.0 API Nothing Comet Java WebServer
Atmosphere Atmosphere JQuery Atmosphere Application Cluster Atmosphere Annotations Jersey Servlet Atmosphere Application Servlet runner Atmosphere Runtime Guice WebSocket Comet API Servlet 3.0 API Nothing Comet Java WebServer
Atmosphere Atmosphere JQuery Atmosphere Application Atmosphere Application Atmosphere Spade Server Powered by Grizzly Embed Guice WebSocket Comet API Servlet 3.0 API Nothing Comet
Why
Clustering Why
JMS JGroups Clustering Why
JMS JGroups Clustering Guarantee Delivery Why
Cache JMS JGroups OOM Manager Clustering Guarantee Delivery Events Aggregation Proxy Why
Cache JMS JGroups OOM Manager Clustering Guarantee Delivery Events Aggregation Proxy Why Portable & Unified
Cache JMS JGroups OOM Manager Clustering Guarantee Delivery Events Aggregation Proxy Why Servlet 3.0 Blocking I/O Portable & Unified Comet Native Web Socket New protocol
Cache JMS JGroups OOM Manager Clustering Guarantee Delivery Events Aggregation Proxy Why Servlet 3.0 Blocking I/O Portable & Unified Client Comet Native Web Socket New protocol
Cache JMS JGroups OOM Manager Clustering Guarantee Delivery Events Aggregation Proxy Why Servlet 3.0 Blocking I/O GWT JQuery Portable & Unified Client Java EE Comet Native Web Socket Grails JSF New protocol
Cache JMS JGroups OOM Manager Clustering Guarantee Delivery Events Aggregation Proxy Why JRuby Servlet 3.0 Blocking I/O GWT JQuery Portable & Unified Client Java EE Comet Native Web Socket Grails JSF New protocol
Cache JMS JGroups OOM Manager Clustering Guarantee Delivery Events Aggregation Proxy Why JRuby Groovy Servlet 3.0 Blocking I/O GWT JQuery Portable & Unified Client Java EE Comet Native Web Socket Grails JSF New protocol
Cache JMS JGroups OOM Manager Clustering Guarantee Delivery Events Aggregation Proxy Why JRuby Scala Groovy Servlet 3.0 Blocking I/O GWT JQuery Portable & Unified Client Java EE Comet Native Web Socket Grails JSF New protocol
Same API everywhere. No need to learn the protocol!
Comet Web Socket IE Chrome JQuery Plugin Auto detect best transport to use! Emulate WebSocket! Comet Web Socket Web Socket Server Side Events Safari Firefox Opera Comet Comet Comet
Ya Ya Ya That’s impossible!
@Path("/pubsub/{topic}") @Produces("text/html;charset=ISO-8859-1") public class JQueryPubSub {     private @PathParam("topic") Broadcaster topic;     @GET     public SuspendResponse<String> subscribe() {  return new SuspendResponse.SuspendResponseBuilder<String>()                 .broadcaster(topic)                 .outputComments(true)                 .addListener(new EventsLogger())                 .build();     }     @POST @Broadcast     public Broadcastable publish(@FormParam("message") String message) {         return new Broadcastable(message, "", topic);     }
 function subscribe()             {                 function callback(response)                 {                     if (response.transport != 'polling' && response.state != 'connected'                                  && response.state != 'closed') {                         if (response.status == 200) {                             var data = response.responseBody                             if (data.length > 0) {                                 $('ul').prepend($('<li></li>').text(" Message Received: " + data + " using transport: " + response.transport));                             }                         }                     }                 }                 $.atmosphere.subscribe(document.location.toString() + 'pubsub/'  							+ getElementByIdValue('topic'), callback : callback,                         			         $.atmosphere.request = {transport: getElementByIdValue('transport')});             }
JAX-RS and Jersey with AtmosphereRESTful and asynchronous Web applications  ,[object Object]
Jersey is the reference implementation and provides additional functionality
Atmosphere leverages the extensibility of Jersey
Atmosphere and Jersey can evolve at their own rates
Combine JAX-RS and Atmosphere annotations,[object Object]

More Related Content

What's hot

Ruby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.com
Ruby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.comRuby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.com
Ruby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.comIlya Grigorik
 
0-60 with Goliath: High performance web services
0-60 with Goliath: High performance web services0-60 with Goliath: High performance web services
0-60 with Goliath: High performance web servicesIlya Grigorik
 
Asynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and JavaAsynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and JavaJames Falkner
 
Building Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSocketsBuilding Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSocketsSergi Almar i Graupera
 
Servers with Event Machine - David Troy - RailsConf 2011
Servers with Event Machine - David Troy - RailsConf 2011Servers with Event Machine - David Troy - RailsConf 2011
Servers with Event Machine - David Troy - RailsConf 2011David Troy
 
GWT Web Socket and data serialization
GWT Web Socket and data serializationGWT Web Socket and data serialization
GWT Web Socket and data serializationGWTcon
 
Ruby Proxies for Scale, Performance, and Monitoring
Ruby Proxies for Scale, Performance, and MonitoringRuby Proxies for Scale, Performance, and Monitoring
Ruby Proxies for Scale, Performance, and MonitoringIlya Grigorik
 
Event Driven Architecture - MeshU - Ilya Grigorik
Event Driven Architecture - MeshU - Ilya GrigorikEvent Driven Architecture - MeshU - Ilya Grigorik
Event Driven Architecture - MeshU - Ilya GrigorikIlya Grigorik
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkFabio Tiriticco
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCLFastly
 
Using Websockets with Play!
Using Websockets with Play!Using Websockets with Play!
Using Websockets with Play!Andrew Conner
 
Spring Boot & WebSocket
Spring Boot & WebSocketSpring Boot & WebSocket
Spring Boot & WebSocketMing-Ying Wu
 
Beyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisBeyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisFastly
 
Implementing Comet using PHP
Implementing Comet using PHPImplementing Comet using PHP
Implementing Comet using PHPKing Foo
 
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
[1D1]신개념 N스크린 웹 앱 프레임워크 PARSNAVER D2
 
Building Next Generation Real-Time Web Applications using Websockets
Building Next Generation Real-Time Web Applications using WebsocketsBuilding Next Generation Real-Time Web Applications using Websockets
Building Next Generation Real-Time Web Applications using WebsocketsNaresh Chintalcheru
 
Large scale web socket system with AWS and Web socket
Large scale web socket system with AWS and Web socketLarge scale web socket system with AWS and Web socket
Large scale web socket system with AWS and Web socketLe Kien Truc
 

What's hot (20)

Ruby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.com
Ruby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.comRuby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.com
Ruby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.com
 
0-60 with Goliath: High performance web services
0-60 with Goliath: High performance web services0-60 with Goliath: High performance web services
0-60 with Goliath: High performance web services
 
Asynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and JavaAsynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and Java
 
Building Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSocketsBuilding Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSockets
 
Servers with Event Machine - David Troy - RailsConf 2011
Servers with Event Machine - David Troy - RailsConf 2011Servers with Event Machine - David Troy - RailsConf 2011
Servers with Event Machine - David Troy - RailsConf 2011
 
GWT Web Socket and data serialization
GWT Web Socket and data serializationGWT Web Socket and data serialization
GWT Web Socket and data serialization
 
Ruby Proxies for Scale, Performance, and Monitoring
Ruby Proxies for Scale, Performance, and MonitoringRuby Proxies for Scale, Performance, and Monitoring
Ruby Proxies for Scale, Performance, and Monitoring
 
Event Driven Architecture - MeshU - Ilya Grigorik
Event Driven Architecture - MeshU - Ilya GrigorikEvent Driven Architecture - MeshU - Ilya Grigorik
Event Driven Architecture - MeshU - Ilya Grigorik
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! Framework
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCL
 
Using Websockets with Play!
Using Websockets with Play!Using Websockets with Play!
Using Websockets with Play!
 
Spring Boot & WebSocket
Spring Boot & WebSocketSpring Boot & WebSocket
Spring Boot & WebSocket
 
Beyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisBeyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic Analysis
 
Implementing Comet using PHP
Implementing Comet using PHPImplementing Comet using PHP
Implementing Comet using PHP
 
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
 
Building Next Generation Real-Time Web Applications using Websockets
Building Next Generation Real-Time Web Applications using WebsocketsBuilding Next Generation Real-Time Web Applications using Websockets
Building Next Generation Real-Time Web Applications using Websockets
 
Ws
WsWs
Ws
 
Dancing with websocket
Dancing with websocketDancing with websocket
Dancing with websocket
 
Large scale web socket system with AWS and Web socket
Large scale web socket system with AWS and Web socketLarge scale web socket system with AWS and Web socket
Large scale web socket system with AWS and Web socket
 
Speedy TDD with Rails
Speedy TDD with RailsSpeedy TDD with Rails
Speedy TDD with Rails
 

Similar to The Atmosphere Framework

Cross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App EngineCross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App EngineAndy McKay
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaYevgeniy Brikman
 
Boston Computing Review - Java Server Pages
Boston Computing Review - Java Server PagesBoston Computing Review - Java Server Pages
Boston Computing Review - Java Server PagesJohn Brunswick
 
TPSE Thailand 2015 - Rethinking Web with React and Flux
TPSE Thailand 2015 - Rethinking Web with React and FluxTPSE Thailand 2015 - Rethinking Web with React and Flux
TPSE Thailand 2015 - Rethinking Web with React and FluxJirat Kijlerdpornpailoj
 
Laurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus PresentationLaurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus PresentationAjax Experience 2009
 
Real-Time Python Web: Gevent and Socket.io
Real-Time Python Web: Gevent and Socket.ioReal-Time Python Web: Gevent and Socket.io
Real-Time Python Web: Gevent and Socket.ioRick Copeland
 
Building your first Node app with Connect & Express
Building your first Node app with Connect & ExpressBuilding your first Node app with Connect & Express
Building your first Node app with Connect & ExpressChristian Joudrey
 
sMash at May NYPHP UG
sMash at May NYPHP UGsMash at May NYPHP UG
sMash at May NYPHP UGProject Zero
 
Event-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineEvent-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineRicardo Silva
 
Web program-peformance-optimization
Web program-peformance-optimizationWeb program-peformance-optimization
Web program-peformance-optimizationxiaojueqq12345
 
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディングXitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディングscalaconfjp
 
Xitrum @ Scala Matsuri Tokyo 2014
Xitrum @ Scala Matsuri Tokyo 2014Xitrum @ Scala Matsuri Tokyo 2014
Xitrum @ Scala Matsuri Tokyo 2014Ngoc Dao
 
Scalalable Language for a Scalable Web
Scalalable Language for a Scalable WebScalalable Language for a Scalable Web
Scalalable Language for a Scalable WebTimothy Perrett
 
Rapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devicesRapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devicesciklum_ods
 
REST made simple with Java
REST made simple with JavaREST made simple with Java
REST made simple with Javaelliando dias
 
Developing RESTful WebServices using Jersey
Developing RESTful WebServices using JerseyDeveloping RESTful WebServices using Jersey
Developing RESTful WebServices using Jerseyb_kathir
 

Similar to The Atmosphere Framework (20)

JS everywhere 2011
JS everywhere 2011JS everywhere 2011
JS everywhere 2011
 
Cross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App EngineCross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App Engine
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and Scala
 
I Feel Pretty
I Feel PrettyI Feel Pretty
I Feel Pretty
 
Boston Computing Review - Java Server Pages
Boston Computing Review - Java Server PagesBoston Computing Review - Java Server Pages
Boston Computing Review - Java Server Pages
 
huhu
huhuhuhu
huhu
 
TPSE Thailand 2015 - Rethinking Web with React and Flux
TPSE Thailand 2015 - Rethinking Web with React and FluxTPSE Thailand 2015 - Rethinking Web with React and Flux
TPSE Thailand 2015 - Rethinking Web with React and Flux
 
Laurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus PresentationLaurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus Presentation
 
Real-Time Python Web: Gevent and Socket.io
Real-Time Python Web: Gevent and Socket.ioReal-Time Python Web: Gevent and Socket.io
Real-Time Python Web: Gevent and Socket.io
 
Building your first Node app with Connect & Express
Building your first Node app with Connect & ExpressBuilding your first Node app with Connect & Express
Building your first Node app with Connect & Express
 
REST made simple with Java
REST made simple with JavaREST made simple with Java
REST made simple with Java
 
sMash at May NYPHP UG
sMash at May NYPHP UGsMash at May NYPHP UG
sMash at May NYPHP UG
 
Event-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineEvent-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 Engine
 
Web program-peformance-optimization
Web program-peformance-optimizationWeb program-peformance-optimization
Web program-peformance-optimization
 
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディングXitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
 
Xitrum @ Scala Matsuri Tokyo 2014
Xitrum @ Scala Matsuri Tokyo 2014Xitrum @ Scala Matsuri Tokyo 2014
Xitrum @ Scala Matsuri Tokyo 2014
 
Scalalable Language for a Scalable Web
Scalalable Language for a Scalable WebScalalable Language for a Scalable Web
Scalalable Language for a Scalable Web
 
Rapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devicesRapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devices
 
REST made simple with Java
REST made simple with JavaREST made simple with Java
REST made simple with Java
 
Developing RESTful WebServices using Jersey
Developing RESTful WebServices using JerseyDeveloping RESTful WebServices using Jersey
Developing RESTful WebServices using Jersey
 

Recently uploaded

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 

Recently uploaded (20)

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 

The Atmosphere Framework

  • 1. Building Powerful WebSocket, Comet, and RESTful Applications Using Atmosphere http://twitter.com/atmo_framework Jeanfrancois Arcand http://twitter.com/jfarcand Paul Sandoz http://twitter.com/PaulSandoz
  • 2. Creator of the Grizzly Framework Creatpr of GlassFish v3 Grizzly Micro Kernel Creator and Co-Leader of Atmosphere Jeanfrancois 9 years @ Sun Microsystem Creator Async Http Client Co-leader of Atmosphere Creator and Lead of Jersey Paul 13 years @ Sun Microsystem Java Champion
  • 3. News and Update Comet and WebSocket Protocol The Atmosphere Framework Ya Ya Ya That’s Impossible High-level RESTful and asynchronous applications Twitter Search Conclusion Q & A
  • 4. PrimeFaces (JSF) Spring IntegrationAkka (Scala/Actor) GWT-Comet Apache Tuscany Grails (Plug In)Atlassian (JIRA) Ning (Social Network)AutoDesk (AutoCad) Fabric3 (3D) Thinked (Journie), Sonatype (Secret) Wink Wicket Struts JQuery Atmosphere 0.6.2 New! Atmosphere Gaming Framework
  • 5. LongPolling Web Socket Streaming Browser Server Browser Server Browser Server Request Request Request Request Response Response Response Response Response Upgrade Data Data
  • 7. WebSocket Nothing Comet Java WebServer Atmosphere
  • 8. Atmosphere WebSocket Comet API Servlet 3.0 API Nothing Comet Java WebServer
  • 9. Atmosphere Atmosphere Application Atmosphere Runtime WebSocket Comet API Servlet 3.0 API Nothing Comet Java WebServer
  • 10. Atmosphere Atmosphere Application Atmosphere Runtime Guice WebSocket Comet API Servlet 3.0 API Nothing Comet Java WebServer
  • 11. Atmosphere Servlet Atmosphere Application Servlet runner Atmosphere Runtime Guice WebSocket Comet API Servlet 3.0 API Nothing Comet Java WebServer
  • 12. Atmosphere Atmosphere Annotations Servlet Atmosphere Application Servlet runner Atmosphere Runtime Guice WebSocket Comet API Servlet 3.0 API Nothing Comet Java WebServer
  • 13. Atmosphere Cluster Atmosphere Annotations Servlet Atmosphere Application Servlet runner Atmosphere Runtime Guice WebSocket Comet API Servlet 3.0 API Nothing Comet Java WebServer
  • 14. Atmosphere Atmosphere Application Cluster Atmosphere Annotations Jersey Servlet Atmosphere Application Servlet runner Atmosphere Runtime Guice WebSocket Comet API Servlet 3.0 API Nothing Comet Java WebServer
  • 15. Atmosphere Atmosphere JQuery Atmosphere Application Cluster Atmosphere Annotations Jersey Servlet Atmosphere Application Servlet runner Atmosphere Runtime Guice WebSocket Comet API Servlet 3.0 API Nothing Comet Java WebServer
  • 16. Atmosphere Atmosphere JQuery Atmosphere Application Cluster Atmosphere Annotations Jersey Servlet Atmosphere Application Servlet runner Atmosphere Runtime Guice WebSocket Comet API Servlet 3.0 API Nothing Comet Java WebServer
  • 17. Atmosphere Atmosphere JQuery Atmosphere Application Atmosphere Application Atmosphere Spade Server Powered by Grizzly Embed Guice WebSocket Comet API Servlet 3.0 API Nothing Comet
  • 18. Why
  • 21. JMS JGroups Clustering Guarantee Delivery Why
  • 22. Cache JMS JGroups OOM Manager Clustering Guarantee Delivery Events Aggregation Proxy Why
  • 23. Cache JMS JGroups OOM Manager Clustering Guarantee Delivery Events Aggregation Proxy Why Portable & Unified
  • 24. Cache JMS JGroups OOM Manager Clustering Guarantee Delivery Events Aggregation Proxy Why Servlet 3.0 Blocking I/O Portable & Unified Comet Native Web Socket New protocol
  • 25. Cache JMS JGroups OOM Manager Clustering Guarantee Delivery Events Aggregation Proxy Why Servlet 3.0 Blocking I/O Portable & Unified Client Comet Native Web Socket New protocol
  • 26. Cache JMS JGroups OOM Manager Clustering Guarantee Delivery Events Aggregation Proxy Why Servlet 3.0 Blocking I/O GWT JQuery Portable & Unified Client Java EE Comet Native Web Socket Grails JSF New protocol
  • 27. Cache JMS JGroups OOM Manager Clustering Guarantee Delivery Events Aggregation Proxy Why JRuby Servlet 3.0 Blocking I/O GWT JQuery Portable & Unified Client Java EE Comet Native Web Socket Grails JSF New protocol
  • 28. Cache JMS JGroups OOM Manager Clustering Guarantee Delivery Events Aggregation Proxy Why JRuby Groovy Servlet 3.0 Blocking I/O GWT JQuery Portable & Unified Client Java EE Comet Native Web Socket Grails JSF New protocol
  • 29. Cache JMS JGroups OOM Manager Clustering Guarantee Delivery Events Aggregation Proxy Why JRuby Scala Groovy Servlet 3.0 Blocking I/O GWT JQuery Portable & Unified Client Java EE Comet Native Web Socket Grails JSF New protocol
  • 30. Same API everywhere. No need to learn the protocol!
  • 31. Comet Web Socket IE Chrome JQuery Plugin Auto detect best transport to use! Emulate WebSocket! Comet Web Socket Web Socket Server Side Events Safari Firefox Opera Comet Comet Comet
  • 32. Ya Ya Ya That’s impossible!
  • 33. @Path("/pubsub/{topic}") @Produces("text/html;charset=ISO-8859-1") public class JQueryPubSub { private @PathParam("topic") Broadcaster topic; @GET public SuspendResponse<String> subscribe() { return new SuspendResponse.SuspendResponseBuilder<String>() .broadcaster(topic) .outputComments(true) .addListener(new EventsLogger()) .build(); } @POST @Broadcast public Broadcastable publish(@FormParam("message") String message) { return new Broadcastable(message, "", topic); }
  • 34. function subscribe() { function callback(response) { if (response.transport != 'polling' && response.state != 'connected' && response.state != 'closed') { if (response.status == 200) { var data = response.responseBody if (data.length > 0) { $('ul').prepend($('<li></li>').text(" Message Received: " + data + " using transport: " + response.transport)); } } } } $.atmosphere.subscribe(document.location.toString() + 'pubsub/' + getElementByIdValue('topic'), callback : callback, $.atmosphere.request = {transport: getElementByIdValue('transport')}); }
  • 35.
  • 36. Jersey is the reference implementation and provides additional functionality
  • 37. Atmosphere leverages the extensibility of Jersey
  • 38. Atmosphere and Jersey can evolve at their own rates
  • 39.
  • 46. Schedule execution of periodic broadcast
  • 48.
  • 49. Conclusion Write Powerfull Asynchronous Web Application using Atmosphere Write once, Run Anywhere Transport free! Browser nightmare free Extremely Simple! Join the community http://github.com/Atmosphere/atmosphere
  • 50. THANKS YOU! http://twitter.com/atmo_framework Jeanfrancois Arcand jfarcand@apache.org Paul Sandoz Paul.sandoz@oracle.com