SlideShare une entreprise Scribd logo
1  sur  47
Construire des
applications temps
réel en utilisant Grizzly
Comet

Jean-François Arcand
Ingénieur Sénior
Sun Microsystèmes du Canada
http://twitter.com/project_grizzly
                                     1
Votre matinée sur Grizzly Comet
•   Cours de français
•   C’est quoi Comet/Ajax Pousse
•   C’est quoi Grizzly
•   Description détaillée du Grizzly Comet Framework
•   C’est quoi Atmosphere
•   La conclusion




                                                       2
Cours de Français
  Québec        France          US
  Fureteur      Browzer        Browser
  Courriel        Mail           Mail
 Magasinage     Shopping      Shopping
 Québecois     Canadien         Who?
  Pourriel       Spam         Junk Mail
 Résautage    Réseau social   Facebook
  Chandail       T-Shirt        T-Shirt


                                          3
What is Ajax Push, exactly?
Responsive, low-latency interaction for the web.
 • highly responsive, event driven browser applications
   > Keep clients up-to-date with data arriving or changing on the server,
      without frequent polling
 • Pros
   > Lower latency, not dependent on polling frequency
   > Server and network do not have to deal with frequent polling requests
      to check for updates
 • Example Applications       •
                                  4homemedia.com
   > GMail and GTalk              (using GlassFish project's Comet)
   > Meebo                    •
                                  JotLive
   > Many more …              •
                                  KnowNow


                                                                             4
Ajax Poll vs Ajax Push
Bending the rules of HTTP.




                             5
Ajax Poll vs Ajax Push
Bending the rules of HTTP.
• Poll:
  > Send a request to the server every X seconds.
  > The response is “empty” if there is no update.
• Long Poll:
  > Send a request to the server, wait for an event to happen, then send the
    response.
  > The response is never empty.
  > HTTP specification satisfied: indistinguishable from “slow” server
• Http Streaming:
  > Send a request, wait for events, stream multi-part/chunked response, and
     then wait for the events.
  > The response is continually appended to.
                                                                               6
How Push works
Keep an open connection.

• Deliver data over a previously opened connection


• Always “keep a connection open”
  > do not respond to the initiating request until event occurs

• Streaming is an option
  > send response in multiple parts without closing the
     connection in between

                                                                  7
HTTP Polling
Regularly checking for updates.
 GET /chatLog HTTP/1.1
 Accept: */*
 Connection: keep-alive
 <message>One</message>



• Uses the HTTP protocol in a standard way, but
  requests are regularly invoked
  setTimeout(‘poll()’, 10000);




                                                  8
Ajax Push
HTTP message flow inversion.
   GET /auctionMonitor/block/receive-updates?HTTP/1.1
   Accept: */*
   Cookie: JSESSIONID=75CF2BF3E03F0F9C6D2E8EFE1A6884F4
   Connection: keep-alive
                                          Chat message “Howdy”
   Host: vorlon.ice:18080
   HTTP/1.1 200 OK
   Content-Type: text/xml;charset=UTF-8
   Content-Length: 180
   Date: Thu, 27 Apr 2008 16:45:25 GMT
   Server: GlassFish/v3

   updates
    update address=quot;_id0:_id5:0:chatTextquot;
     span id=quot;_id0:_id5:0:chatTextquot;Howdy/span
    /update
   /updates
                                                                 9
HTTP Streaming
The long response.
 GET /chatLog HTTP/1.1
 Accept: */*
 Connection: keep-alive
 messageOne/message
 messageTwo/message
 messageThree/message
 messageFour/message


• Parse most recent message in JavaScript
  programming language (not shown here)
• The original 1999 “Push” technique (Netscape 1.1)


                                                      10
What is Project Grizzly
 Open Source Project on java.net,
 https://grizzly.dev.java.net
 Open Sourced under CDDL/LGPL license.
 Very open community policy.
 
    All project communications are done on Grizzly mailing list. No internal,
    off mailing list conversations.
 
    Project meetings open to anyone (public conference call).
 Project decisions are made by project member votes.
 Sun and non Sun commiters




                                                                                11
What is Project Grizzly
 Uses Java NIO primitives and hides the complexity programming with Java
 NIO.
 Easy-to-use high performance APIs for TCP, UDP and SSL communications.
 Brings non-blocking sockets to the protocol processing layer.
 Utilizes high performance buffers and buffer management.
 Choice of several different high performance thread pools.
 Ship with an HTTP module which is really easy to extend.
 Use the Framework, but STILL have a way to control the IO layer.




                                                                           12
Grizzly NIO Framework


     Grizzlet         Bayeux       Continuation      Messages Bus


                      Grizzly Comet Framework


     Grizzly HTTP (Sync/Async)         Grizzly Servlet Container


                       Grizzly NIO Framework




                                                                    13
1. Who?

                      Grizzly         Electronic
   Grizzly RCM                                     Nortel
                  Port Unification    Arts (EA)

                   Many many
   Yahoo Brazil                       Tomcat*      MINA*
                     more!!!

                                     Sun Shared
     Restlet          Sailfin                      Jetty
                                        Shell

                     Grizzly NIO Framework




                                                            14
HTTP modules
• The Grizzly Framework also have an HTTP framework that can be used to
  build Web Server
   This is what GlassFish™ v1|2|3 build on top of.
   More specialized modules are also available like Comet (Async HTTP).
• Simple interface to allow customization of the HTTP Protocol
   GrizzlyRequest: A utility class to manipulate the HTTP protocol request.
   GrizzlyResponse: A utility class to manipulate the HTTP protocol
     response.
   GrizzlyAdapter: A utility class to manipulate the HTTP request/response
     object.




                                                                               15
Example: Jersey
(jersey.dev.java.net).
• Jersey is the open source JAX-RS (Java Specification Request (JSR) 311)
  Reference Implementation for building RESTful Web services.
• By default, Jersey ship with support for Grizzly HTTP WebServer :
   Implement the GrizzlyAdapter interface, use the GrizzlyRequest and
     Response object to handle the http protocol.
• In less than 20 minutes, Jersey was running with Grizzly!




                                                                            16
2.2 Who?

                       Many many
                         more!!!
                                             Sailfin
    GlassFish
               Blog-city.com   EventGnosis    CBL
   Gem (JRuby)

    GlassFish    GlassFish
                                 Futjisu     JXTA
       v3           ESB

                Grizzly HTTP (Sync/Async)


                   Grizzly NIO Framework



                                                       17
Grizzly Comet Components


     Grizzlet   Bayeux       Continuation   Messages Bus


                Grizzly Comet Framework


                     Grizzly HTTP


                 Grizzly NIO Framework




                                                           18
2.4 Who?
                                             Many many
    Bindows      AltMobile       ItsNat
                                               more!!!

   Sun Instant
                 4homedia      ICEFaces          DWR
   Messenger

                              Messages
     Grizzlet     Bayeux                     Continuation
                                Bus
                      Grizzly Comet
                       Framework

                 Grizzly HTTP (Sync/Async)


                   Grizzly NIO Framework

                                                            19
Introduction to Grizzly Comet
• Grizzly Comet is a framework that ship with
  GlassFish v1|2|3, and can also be embedded into
  any application using the Grizzly Embed interface
  (no fish involved).

• The Grizzly Comet Framework includes a set of
  components that can be used for building Comet
  based application:
   Grizzly Comet, Continuation, Grizzlet, Messages Bus,
    Bayeux support

                                                           20
Grizzly Comet Framework
• The Framework contains the classes required to add
  support for Comet in a Web Application
• Main classes to interact with (details next):
     CometEngine
     CometContext
     CometHandler
     NotificationHandler
     CometReader
     CometWriter


                                                       21
How it works

                         send                 CometHandler
                                               CometHandler
      Browser 1                                 CometHandler



                         CometContext                     push
  Browser 2
                                        filters
         send
                  Push data
                                              NotificationHandler

        Servlet




                                                                    22
CometContext
 • A CometContext is a distribution mechanism for
   pushing messages that are delivered to multiple
   subscribers called CometHandler.
 • All connections registered to a CometContext
   automatically becomes suspended, waiting for an event
   (a push) to happens.
 • A browser receives only those messages published
   after the client “register “ to a CometContext.
 • Its contains references to all suspended connections
   (encapsulated inside a CometHandler)

                                                           23
CometContext - Example
  //Create a CometContext for my Chat application
   CometContext chatContext
       = CometEngine.getEngine().register(“chatroom”);

  // Suspend the request
   ChatRoomHandler chr = new ChatRoomHandler();
   chatContext.addCometHandler(chr);

  // Push welcome message
   chatContext.push(“Ted is entering the room”);

  // Push bye bye message
  chatContext.push(“Alexandre is leaving the room”);

  // Later, resume the request
  chatContext.resumeCometHandler(chr);




                                                         24
CometHandler
• The CometHandler is the master piece of a Grizzly
  Comet based application.
• A CometHandler contains the business logic of what
  will be pushed back to the browser.
• A CometHandler might be invoked by the Container:
   When a push operation happens
   When a I/O operations are ready to be process
    (asynchronous read or write)
   When the browser close the connection.



                                                       25
CometHandler
• The CometHandler is the master piece of a Grizzly
  Comet based application.
• A CometHandler contains the business logic of what
  will be pushed back to the browser.
• A CometHandler might be invoked by the Container:
   When a push operation happens
   When a I/O operations are ready to be process
    (asynchronous read or write)
   When the browser close the connection.



                                                       26
CometHandler API

 //Invoked when CometContext.notify() is called
  public void onEvent(CometEvent ce);

 // Invoked when the browser close a suspended
 // connection or when the suspend timeout expire.
 public void onInterrupt(CometEvent ce);

 // Invoked when the request is suspended
  public void onInitialize(CometEvent ce);

 // Attach an object
 // most probably the HttpServletResponse}
  public void attach(E e);




                                                     27
CometHandler Example




                       28
NotificationHandler
• The NotificationHandler object is the masterpiece when writing Comet
  application
   This is inside that object that you will decide to what to do with the push
     operation:
       – Throttle: If too many push occurs simultaneously, should we delay
         them?
       – Aggregate: Should we cache push operations and aggregate them to
         avoid overloading the network?
       – Filter: Should all messages by pushed back to the client.
       – Should a thread pool be used to improve the push speed operation?
         Should a JMS backed be used to deliver the message?
• The DefaultNotificationHandler push all messages.



                                                                                  29
NotificationHandler - Example




                                30
Asyncronous I/0 – Read and Write

 • A CometHandler can be notified for asynchronous read and write
   operations
 • Useful when reading or writing large chunk (like file upload.
 • Bring NIO to Servlet indirectly 




                                                                    31
Messages Bus


    Grizzlet         Bayeux       Continuation      Messages Bus


                     Grizzly Comet Framework


    Grizzly HTTP (Sync/Async)         Grizzly Servlet Container


                      Grizzly NIO Framework




                                                                   32
Grizzly Messages Bus
• The Grizzly Messages Bus implements the Grizzly Comet Protocol (GCP).
• The GCP protocol is a very basic protocol that can be used by browser to
  share data, using the comet technique, between several clients without
  having to poll for it.
• The protocol is very simple. First, a client must subscribe to a topic:
   http://host:port/contextPath?subscribe=[topic
     name]cometTechnique=[polling|log-polling|http-
     streaming]message=[text]
• When issuing the URL above, the connection will be automatically suspended
  based on the cometTechnique specified




                                                                               33
Grizzly Messages Bus
• To share data between applications, a browser just
  need to send the following request:
   http://host:port/contextPath?publish=[topic
    name]message=[text]
• The Servlet can be used as it is or extended to add
  extra features like filtering messages, security, login,
  etc.
• Quite easy to write games using the Grizzly
  Messages Bus. No server side implementation
  required, just client side!
                                                             34
Bayeux Protocol


     Grizzlet         Bayeux       Continuation      Messages Bus


                      Grizzly Comet Framework


     Grizzly HTTP (Sync/Async)         Grizzly Servlet Container


                       Grizzly NIO Framework




                                                                    35
The Bayeux Protocol
• http://svn.xantus.org/shortbus/trunk/bayeux/bayeux.html
• Bayeux is a JSON-based protocol for clients to register interest in events and
  for servers to deliver them in a more timely fashion than Ajax-based polling
  allows.
• With Bayeux, you only needs to write the client.
• The goals of the Bayeux spec so far have been to:
      make event delivery fast
      keep it simple
      provide extension points in the protoco




                                                                                   36
Grizzlet


      Grizzlet         Bayeux       Continuation      Messages Bus


                       Grizzly Comet Framework


      Grizzly HTTP (Sync/Async)         Grizzly Servlet Container


                        Grizzly NIO Framework




                                                                     37
What is a Grizzlet

• Simple interface build on top of the Comet
  Framework:
   public void onRequest(AsyncConnection
     asyncConnection)‫‏‬
   public void onPush(AsyncConnection
     asyncConnection)‫‏‬
• Implement that interface, deploy your POJO in
  Grizzly Web Server or a GlassFish v3 Adapter.
  Boom it works!
                                                  38
Continuation


     Grizzlet         Bayeux       Continuation      Messages Bus


                      Grizzly Comet Framework


     Grizzly HTTP (Sync/Async)         Grizzly Servlet Container


                       Grizzly NIO Framework




                                                                    39
Grizzly Continuation

• Simple API to resume/suspend requests:

    GrizzlyContinuation continuation =
    Continuation.getContinuation();
    continuation.suspend(timeout);

  …
   // From another Thread
     continuation.resume();
• Used in Servlet/JSP.

                                           40
What is Project Atmosphere
The state of Comet (Ajax Push) right now
 • Since July 2006the Grizzly Comet Framework and its extensions’
    popularity keep increasing.
     Among the most popular framework right now.
 • Comet techniques aren't standardized among Web Container
    Grizzly Comet applications aren't portable (cannot run on Tomcat nor
     Jetty)‫‏‬
 • Servlet 3.0 will supports only a subset of Comet
    No async I/O, No pushing functionalities
    Support will takes time (Spec to be finalized)‫‏‬




                                                                            41
What is Project Atmosphere (con't)‫‏‬
So...
• Atmosphere is a POJO based framework using
  Inversion of Control (IoC) to bring Comet to the
  masses.
• A framework which can run on any Java based Web
  Server.....without having to wait for Servlet 3.0 or
  without the needs to learn how Comet support has
  been differently implemented by current Web Server
  supporting Comet
• Run on top of Servlet 2.5 compliant Web Server

                                                         42
What is Project Atmosphere (con't)‫‏‬
Extends and improve the Grizzlet concept....
• Grizzlet is a POJO based approach for writing
  Comet application.
   Grizzlet only runs on top of the Grizzly Comet
    Framework right now
   Grizzly community asked many times to have the
    concept ported to other Web Server
• Evolve the Grizzlet...and make it the core of Project
  Atmosphere.


                                                          43
Architecture
Reuse experience and code...from Grizzly
Comet to Jersey!

            Grizzlet                              Atmosphere re-usable
       (Atmosphere POJO)‫‏‬                          Components library


              Jersey's Injection Provider, IoC Support, and more....


                        Portable Comet Layer API (PCL)


  Tomcat Comet        Grizzly Comet           Jetty Comet              Blocking WS



             User defined              Atmosphere Component


                                                                                     44
Example
Easy of use of Jersey, power of Grizzly Comet
@Grizzlet(Grizzlet.Scope.APPLICATION)‫‏‬
@Path(quot;myGrizzletquot;)‫‏‬
public class MyGrizzlet{
  @Suspend(6000)‫‏‬
  @GET
  @Push
  public String onGet(){
      return quot;Suspending the connectionquot;;
  }
  @POST
  @Push
  public String onPost(@Context HttpServletRequest req,
                            @Context HttpServletResponse res) throws IOException{
      res.setStatus(200);
      res.getWriter().println(quot;OK, info pushedquot;);
      return req.getParameter(quot;chatMessagequot;);
  }


                                                                                    45
Summary
The Asynchronous Web Revolution is Now

• The Asynchronous Web will revolutionize human
  interaction
• Push can scale with Asynchronous Request
  Processing.
• With GlassFish, the revolution begins with your
  applications today
• Get ready for Atmosphere and Servlet 3.0

                                                    46
For More Information
http://twitter.com/project_grizzly
• Getting Started with GlassFish and Comet
    http://weblogs.java.net/blog/jfarcand/archive/2008/04/the_hitchhikers.html
    http://weblogs.java.net/blog/jfarcand/archive/2006/10/writting_a_come.html

• Grizzly Active’s Bloggers:
   Alexey: http://blogs.sun.com/oleksiys/
   Shing Wai: http://blogs.sun.com/swchan/
   John: http://weblogs.java.net/blog/johnmann/
   Sebastien: http://weblogs.java.net/blog/survivant
   Jeanfrancois: http://weblogs.java.net/jfarcand
• Project Grizzly mailing lists,
   dev@grizzly.dev.java.net  users@dev.grizzly.java.net


                                                                                  47

Contenu connexe

Tendances

Programming WebSockets with Glassfish and Grizzly
Programming WebSockets with Glassfish and GrizzlyProgramming WebSockets with Glassfish and Grizzly
Programming WebSockets with Glassfish and GrizzlyC2B2 Consulting
 
Defeating The Network Security Infrastructure V1.0
Defeating The Network Security Infrastructure  V1.0Defeating The Network Security Infrastructure  V1.0
Defeating The Network Security Infrastructure V1.0Philippe Bogaerts
 
VMworld 2013: vSphere Networking and vCloud Networking Suite Best Practices a...
VMworld 2013: vSphere Networking and vCloud Networking Suite Best Practices a...VMworld 2013: vSphere Networking and vCloud Networking Suite Best Practices a...
VMworld 2013: vSphere Networking and vCloud Networking Suite Best Practices a...VMworld
 
HTML5 WebSocket Introduction
HTML5 WebSocket IntroductionHTML5 WebSocket Introduction
HTML5 WebSocket IntroductionMarcelo Jabali
 
vlavrynovych - WebSockets Presentation
vlavrynovych - WebSockets Presentationvlavrynovych - WebSockets Presentation
vlavrynovych - WebSockets PresentationVolodymyr Lavrynovych
 
IBM MQ v8 and JMS 2.0
IBM MQ v8 and JMS 2.0IBM MQ v8 and JMS 2.0
IBM MQ v8 and JMS 2.0Matthew White
 
Virtual Router in CloudStack 4.4
Virtual Router in CloudStack 4.4Virtual Router in CloudStack 4.4
Virtual Router in CloudStack 4.4Sheng Yang
 
WMQ Toolbox: 20 Scripts, One-liners, & Utilities for UNIX & Windows
WMQ Toolbox: 20 Scripts, One-liners, & Utilities for UNIX & Windows WMQ Toolbox: 20 Scripts, One-liners, & Utilities for UNIX & Windows
WMQ Toolbox: 20 Scripts, One-liners, & Utilities for UNIX & Windows T.Rob Wyatt
 
Messaging for Web and Mobile with Apache ActiveMQ
Messaging for Web and Mobile with Apache ActiveMQMessaging for Web and Mobile with Apache ActiveMQ
Messaging for Web and Mobile with Apache ActiveMQdejanb
 
TLS - 2016 Velocity Training
TLS - 2016 Velocity TrainingTLS - 2016 Velocity Training
TLS - 2016 Velocity TrainingPatrick Meenan
 
2012 CloudStack Design Camp in Taiwan--- CloudStack Overview-1
2012 CloudStack Design Camp in Taiwan--- CloudStack Overview-12012 CloudStack Design Camp in Taiwan--- CloudStack Overview-1
2012 CloudStack Design Camp in Taiwan--- CloudStack Overview-1tcloudcomputing-tw
 
VMworld 2013: vSphere Distributed Switch – Design and Best Practices
VMworld 2013: vSphere Distributed Switch – Design and Best Practices VMworld 2013: vSphere Distributed Switch – Design and Best Practices
VMworld 2013: vSphere Distributed Switch – Design and Best Practices VMworld
 
加快互联网核心协议,提高Web速度yuchungcheng
加快互联网核心协议,提高Web速度yuchungcheng加快互联网核心协议,提高Web速度yuchungcheng
加快互联网核心协议,提高Web速度yuchungchengMichael Zhang
 

Tendances (20)

Programming WebSockets with Glassfish and Grizzly
Programming WebSockets with Glassfish and GrizzlyProgramming WebSockets with Glassfish and Grizzly
Programming WebSockets with Glassfish and Grizzly
 
Defeating The Network Security Infrastructure V1.0
Defeating The Network Security Infrastructure  V1.0Defeating The Network Security Infrastructure  V1.0
Defeating The Network Security Infrastructure V1.0
 
MySQL Aquarium Paris
MySQL Aquarium ParisMySQL Aquarium Paris
MySQL Aquarium Paris
 
VMworld 2013: vSphere Networking and vCloud Networking Suite Best Practices a...
VMworld 2013: vSphere Networking and vCloud Networking Suite Best Practices a...VMworld 2013: vSphere Networking and vCloud Networking Suite Best Practices a...
VMworld 2013: vSphere Networking and vCloud Networking Suite Best Practices a...
 
HTML5 WebSocket Introduction
HTML5 WebSocket IntroductionHTML5 WebSocket Introduction
HTML5 WebSocket Introduction
 
vlavrynovych - WebSockets Presentation
vlavrynovych - WebSockets Presentationvlavrynovych - WebSockets Presentation
vlavrynovych - WebSockets Presentation
 
OpenDS Primer Aquarium
OpenDS Primer AquariumOpenDS Primer Aquarium
OpenDS Primer Aquarium
 
Html5 security
Html5 securityHtml5 security
Html5 security
 
WebSockets in JEE 7
WebSockets in JEE 7WebSockets in JEE 7
WebSockets in JEE 7
 
IBM MQ v8 and JMS 2.0
IBM MQ v8 and JMS 2.0IBM MQ v8 and JMS 2.0
IBM MQ v8 and JMS 2.0
 
Virtual Router in CloudStack 4.4
Virtual Router in CloudStack 4.4Virtual Router in CloudStack 4.4
Virtual Router in CloudStack 4.4
 
GlassFish v3 Prelude Aquarium Paris
GlassFish v3 Prelude Aquarium ParisGlassFish v3 Prelude Aquarium Paris
GlassFish v3 Prelude Aquarium Paris
 
WMQ Toolbox: 20 Scripts, One-liners, & Utilities for UNIX & Windows
WMQ Toolbox: 20 Scripts, One-liners, & Utilities for UNIX & Windows WMQ Toolbox: 20 Scripts, One-liners, & Utilities for UNIX & Windows
WMQ Toolbox: 20 Scripts, One-liners, & Utilities for UNIX & Windows
 
OpenSolaris Web Stack MySQL BOF
OpenSolaris Web Stack MySQL BOFOpenSolaris Web Stack MySQL BOF
OpenSolaris Web Stack MySQL BOF
 
Messaging for Web and Mobile with Apache ActiveMQ
Messaging for Web and Mobile with Apache ActiveMQMessaging for Web and Mobile with Apache ActiveMQ
Messaging for Web and Mobile with Apache ActiveMQ
 
TLS - 2016 Velocity Training
TLS - 2016 Velocity TrainingTLS - 2016 Velocity Training
TLS - 2016 Velocity Training
 
2012 CloudStack Design Camp in Taiwan--- CloudStack Overview-1
2012 CloudStack Design Camp in Taiwan--- CloudStack Overview-12012 CloudStack Design Camp in Taiwan--- CloudStack Overview-1
2012 CloudStack Design Camp in Taiwan--- CloudStack Overview-1
 
VMworld 2013: vSphere Distributed Switch – Design and Best Practices
VMworld 2013: vSphere Distributed Switch – Design and Best Practices VMworld 2013: vSphere Distributed Switch – Design and Best Practices
VMworld 2013: vSphere Distributed Switch – Design and Best Practices
 
加快互联网核心协议,提高Web速度yuchungcheng
加快互联网核心协议,提高Web速度yuchungcheng加快互联网核心协议,提高Web速度yuchungcheng
加快互联网核心协议,提高Web速度yuchungcheng
 
Stonehenge
StonehengeStonehenge
Stonehenge
 

En vedette

Cybersecurity overview - Open source compliance seminar
Cybersecurity overview - Open source compliance seminarCybersecurity overview - Open source compliance seminar
Cybersecurity overview - Open source compliance seminarRogue Wave Software
 
портал свадебных услуг
портал свадебных услугпортал свадебных услуг
портал свадебных услугAinur Arystanbekova
 
Constable NR 1 FINAL 12 02 2011[1]
Constable NR  1 FINAL 12 02 2011[1]Constable NR  1 FINAL 12 02 2011[1]
Constable NR 1 FINAL 12 02 2011[1]Rebecca Deo
 
ALZAnnualReport2015FINAL
ALZAnnualReport2015FINALALZAnnualReport2015FINAL
ALZAnnualReport2015FINALRebecca Deo
 
Iva Soldo - How Can Your Brand Win With Snapchat in 2017? (Babel Camp 2016)
Iva Soldo - How Can Your Brand Win With Snapchat in 2017? (Babel Camp 2016)Iva Soldo - How Can Your Brand Win With Snapchat in 2017? (Babel Camp 2016)
Iva Soldo - How Can Your Brand Win With Snapchat in 2017? (Babel Camp 2016)Babel Guide
 
Rightsizing Open Source Software Identification
Rightsizing Open Source Software IdentificationRightsizing Open Source Software Identification
Rightsizing Open Source Software IdentificationnexB Inc.
 
Customer Case Study: ScienceLogic - Many Paths to Compliance
Customer Case Study: ScienceLogic - Many Paths to ComplianceCustomer Case Study: ScienceLogic - Many Paths to Compliance
Customer Case Study: ScienceLogic - Many Paths to ComplianceBlack Duck by Synopsys
 
DJ Khaled's Major Keys to Success on Social Media
DJ Khaled's Major Keys to Success on Social MediaDJ Khaled's Major Keys to Success on Social Media
DJ Khaled's Major Keys to Success on Social MediaCarlos Gil
 
Content Jam 2016: SEO Masterclass with Andy Crestodina and Ryan Erwin
Content Jam 2016: SEO Masterclass with Andy Crestodina and Ryan ErwinContent Jam 2016: SEO Masterclass with Andy Crestodina and Ryan Erwin
Content Jam 2016: SEO Masterclass with Andy Crestodina and Ryan ErwinOrbit Media Studios
 
Snapchat
SnapchatSnapchat
SnapchatShooger
 
Convenios de asociación estrategica
Convenios de asociación estrategicaConvenios de asociación estrategica
Convenios de asociación estrategicaLaura Vargas Romero
 
Проект відкриття тепличного господарства
Проект відкриття тепличного господарства Проект відкриття тепличного господарства
Проект відкриття тепличного господарства Galyna Makhova
 

En vedette (17)

Resume
ResumeResume
Resume
 
Cybersecurity overview - Open source compliance seminar
Cybersecurity overview - Open source compliance seminarCybersecurity overview - Open source compliance seminar
Cybersecurity overview - Open source compliance seminar
 
Final report
Final reportFinal report
Final report
 
портал свадебных услуг
портал свадебных услугпортал свадебных услуг
портал свадебных услуг
 
Constable NR 1 FINAL 12 02 2011[1]
Constable NR  1 FINAL 12 02 2011[1]Constable NR  1 FINAL 12 02 2011[1]
Constable NR 1 FINAL 12 02 2011[1]
 
ALZAnnualReport2015FINAL
ALZAnnualReport2015FINALALZAnnualReport2015FINAL
ALZAnnualReport2015FINAL
 
State of Livestream and Raw Content
State of Livestream and Raw ContentState of Livestream and Raw Content
State of Livestream and Raw Content
 
Iva Soldo - How Can Your Brand Win With Snapchat in 2017? (Babel Camp 2016)
Iva Soldo - How Can Your Brand Win With Snapchat in 2017? (Babel Camp 2016)Iva Soldo - How Can Your Brand Win With Snapchat in 2017? (Babel Camp 2016)
Iva Soldo - How Can Your Brand Win With Snapchat in 2017? (Babel Camp 2016)
 
How to become a popular Instabrand
How to become a popular Instabrand How to become a popular Instabrand
How to become a popular Instabrand
 
Rightsizing Open Source Software Identification
Rightsizing Open Source Software IdentificationRightsizing Open Source Software Identification
Rightsizing Open Source Software Identification
 
Customer Case Study: ScienceLogic - Many Paths to Compliance
Customer Case Study: ScienceLogic - Many Paths to ComplianceCustomer Case Study: ScienceLogic - Many Paths to Compliance
Customer Case Study: ScienceLogic - Many Paths to Compliance
 
DJ Khaled's Major Keys to Success on Social Media
DJ Khaled's Major Keys to Success on Social MediaDJ Khaled's Major Keys to Success on Social Media
DJ Khaled's Major Keys to Success on Social Media
 
#HireEric
#HireEric#HireEric
#HireEric
 
Content Jam 2016: SEO Masterclass with Andy Crestodina and Ryan Erwin
Content Jam 2016: SEO Masterclass with Andy Crestodina and Ryan ErwinContent Jam 2016: SEO Masterclass with Andy Crestodina and Ryan Erwin
Content Jam 2016: SEO Masterclass with Andy Crestodina and Ryan Erwin
 
Snapchat
SnapchatSnapchat
Snapchat
 
Convenios de asociación estrategica
Convenios de asociación estrategicaConvenios de asociación estrategica
Convenios de asociación estrategica
 
Проект відкриття тепличного господарства
Проект відкриття тепличного господарства Проект відкриття тепличного господарства
Проект відкриття тепличного господарства
 

Similaire à Build Real-Time Apps with Grizzly Comet Framework

Going Live! with Comet
Going Live! with CometGoing Live! with Comet
Going Live! with CometSimon Willison
 
WebSocket Perspectives 2015 - Clouds, Streams, Microservices and WoT
WebSocket Perspectives 2015 - Clouds, Streams, Microservices and WoTWebSocket Perspectives 2015 - Clouds, Streams, Microservices and WoT
WebSocket Perspectives 2015 - Clouds, Streams, Microservices and WoTFrank Greco
 
Comet: Making The Web a 2-Way Medium
Comet: Making The Web a 2-Way MediumComet: Making The Web a 2-Way Medium
Comet: Making The Web a 2-Way MediumJoe Walker
 
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008Association Paris-Web
 
Real-Time with Flowdock
Real-Time with FlowdockReal-Time with Flowdock
Real-Time with FlowdockFlowdock
 
Developing Revolutionary Web Applications using Comet and Ajax Push
Developing Revolutionary Web Applications using Comet and Ajax PushDeveloping Revolutionary Web Applications using Comet and Ajax Push
Developing Revolutionary Web Applications using Comet and Ajax PushDoris Chen
 
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java DevelopersWebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java DevelopersViktor Gamov
 
FIWARE Wednesday Webinars - Short Term History within Smart Systems
FIWARE Wednesday Webinars - Short Term History within Smart SystemsFIWARE Wednesday Webinars - Short Term History within Smart Systems
FIWARE Wednesday Webinars - Short Term History within Smart SystemsFIWARE
 
WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)
WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)
WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)Ericom Software
 
Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Arun Gupta
 
WebRTC: A front-end perspective
WebRTC: A front-end perspectiveWebRTC: A front-end perspective
WebRTC: A front-end perspectiveshwetank
 
DIY Internet: Snappy, Secure Networking with MinimaLT (JSConf EU 2013)
DIY Internet: Snappy, Secure Networking with MinimaLT (JSConf EU 2013)DIY Internet: Snappy, Secure Networking with MinimaLT (JSConf EU 2013)
DIY Internet: Snappy, Secure Networking with MinimaLT (JSConf EU 2013)Igalia
 
Crushing Latency with Vert.x
Crushing Latency with Vert.xCrushing Latency with Vert.x
Crushing Latency with Vert.xPaulo Lopes
 
Jetty 9 – The Next Generation Servlet Container
Jetty 9 – The Next Generation Servlet ContainerJetty 9 – The Next Generation Servlet Container
Jetty 9 – The Next Generation Servlet ContainerCodemotion
 
Toster - Understanding the Rails Web Model and Scalability Options
Toster - Understanding the Rails Web Model and Scalability OptionsToster - Understanding the Rails Web Model and Scalability Options
Toster - Understanding the Rails Web Model and Scalability OptionsFabio Akita
 
Understanding the Rails web model and scalability options
Understanding the Rails web model and scalability optionsUnderstanding the Rails web model and scalability options
Understanding the Rails web model and scalability options.toster
 
V2 peter-lubbers-sf-jug-websocket
V2 peter-lubbers-sf-jug-websocketV2 peter-lubbers-sf-jug-websocket
V2 peter-lubbers-sf-jug-websocketbrent bucci
 

Similaire à Build Real-Time Apps with Grizzly Comet Framework (20)

Going Live! with Comet
Going Live! with CometGoing Live! with Comet
Going Live! with Comet
 
Time for Comet?
Time for Comet?Time for Comet?
Time for Comet?
 
WebSocket Perspectives 2015 - Clouds, Streams, Microservices and WoT
WebSocket Perspectives 2015 - Clouds, Streams, Microservices and WoTWebSocket Perspectives 2015 - Clouds, Streams, Microservices and WoT
WebSocket Perspectives 2015 - Clouds, Streams, Microservices and WoT
 
Comet: Making The Web a 2-Way Medium
Comet: Making The Web a 2-Way MediumComet: Making The Web a 2-Way Medium
Comet: Making The Web a 2-Way Medium
 
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
 
Real-Time with Flowdock
Real-Time with FlowdockReal-Time with Flowdock
Real-Time with Flowdock
 
Developing Revolutionary Web Applications using Comet and Ajax Push
Developing Revolutionary Web Applications using Comet and Ajax PushDeveloping Revolutionary Web Applications using Comet and Ajax Push
Developing Revolutionary Web Applications using Comet and Ajax Push
 
The HTML5 WebSocket API
The HTML5 WebSocket APIThe HTML5 WebSocket API
The HTML5 WebSocket API
 
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java DevelopersWebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
 
FIWARE Wednesday Webinars - Short Term History within Smart Systems
FIWARE Wednesday Webinars - Short Term History within Smart SystemsFIWARE Wednesday Webinars - Short Term History within Smart Systems
FIWARE Wednesday Webinars - Short Term History within Smart Systems
 
ICEfaces and JSF 2.0 on GlassFish
ICEfaces and JSF 2.0 on GlassFishICEfaces and JSF 2.0 on GlassFish
ICEfaces and JSF 2.0 on GlassFish
 
WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)
WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)
WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)
 
Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009
 
WebRTC: A front-end perspective
WebRTC: A front-end perspectiveWebRTC: A front-end perspective
WebRTC: A front-end perspective
 
DIY Internet: Snappy, Secure Networking with MinimaLT (JSConf EU 2013)
DIY Internet: Snappy, Secure Networking with MinimaLT (JSConf EU 2013)DIY Internet: Snappy, Secure Networking with MinimaLT (JSConf EU 2013)
DIY Internet: Snappy, Secure Networking with MinimaLT (JSConf EU 2013)
 
Crushing Latency with Vert.x
Crushing Latency with Vert.xCrushing Latency with Vert.x
Crushing Latency with Vert.x
 
Jetty 9 – The Next Generation Servlet Container
Jetty 9 – The Next Generation Servlet ContainerJetty 9 – The Next Generation Servlet Container
Jetty 9 – The Next Generation Servlet Container
 
Toster - Understanding the Rails Web Model and Scalability Options
Toster - Understanding the Rails Web Model and Scalability OptionsToster - Understanding the Rails Web Model and Scalability Options
Toster - Understanding the Rails Web Model and Scalability Options
 
Understanding the Rails web model and scalability options
Understanding the Rails web model and scalability optionsUnderstanding the Rails web model and scalability options
Understanding the Rails web model and scalability options
 
V2 peter-lubbers-sf-jug-websocket
V2 peter-lubbers-sf-jug-websocketV2 peter-lubbers-sf-jug-websocket
V2 peter-lubbers-sf-jug-websocket
 

Plus de Alexis Moussine-Pouchkine

GlassFish OSGi - From modular runtime to hybrid applications
GlassFish OSGi - From modular runtime to hybrid applicationsGlassFish OSGi - From modular runtime to hybrid applications
GlassFish OSGi - From modular runtime to hybrid applicationsAlexis Moussine-Pouchkine
 

Plus de Alexis Moussine-Pouchkine (20)

GlassFish Article September 07
GlassFish Article September 07GlassFish Article September 07
GlassFish Article September 07
 
GlassFish OSGi - Java2days 2010
GlassFish OSGi - Java2days 2010GlassFish OSGi - Java2days 2010
GlassFish OSGi - Java2days 2010
 
GlassFish Community and future larochelle
GlassFish Community and future larochelleGlassFish Community and future larochelle
GlassFish Community and future larochelle
 
Javaee glassfish jcertif2010
Javaee glassfish jcertif2010Javaee glassfish jcertif2010
Javaee glassfish jcertif2010
 
GlassFish Community - FISL 2010
GlassFish Community - FISL 2010GlassFish Community - FISL 2010
GlassFish Community - FISL 2010
 
GlassFish OSGi - From modular runtime to hybrid applications
GlassFish OSGi - From modular runtime to hybrid applicationsGlassFish OSGi - From modular runtime to hybrid applications
GlassFish OSGi - From modular runtime to hybrid applications
 
Feuille de route (roadmap) GlassFish
Feuille de route (roadmap) GlassFishFeuille de route (roadmap) GlassFish
Feuille de route (roadmap) GlassFish
 
Java EE 6 Solutions Linux 2010
Java EE 6 Solutions Linux 2010Java EE 6 Solutions Linux 2010
Java EE 6 Solutions Linux 2010
 
GlassFish v3 at JavaZone 09
GlassFish v3 at JavaZone 09GlassFish v3 at JavaZone 09
GlassFish v3 at JavaZone 09
 
L'association GUSES
L'association GUSESL'association GUSES
L'association GUSES
 
Open Solaris 2009.06
Open Solaris 2009.06Open Solaris 2009.06
Open Solaris 2009.06
 
Java EE 6 and GlassFish portfolio
Java EE 6 and GlassFish portfolioJava EE 6 and GlassFish portfolio
Java EE 6 and GlassFish portfolio
 
Metro Web Services
Metro Web ServicesMetro Web Services
Metro Web Services
 
Retour JavaOne 2009
Retour JavaOne 2009Retour JavaOne 2009
Retour JavaOne 2009
 
Zembly
ZemblyZembly
Zembly
 
Behind The Clouds
Behind The CloudsBehind The Clouds
Behind The Clouds
 
Retour d'expérience Cap Gemini GlassFish
Retour d'expérience Cap Gemini GlassFishRetour d'expérience Cap Gemini GlassFish
Retour d'expérience Cap Gemini GlassFish
 
OpenDS - Open Source Java LDAP server
OpenDS - Open Source Java LDAP serverOpenDS - Open Source Java LDAP server
OpenDS - Open Source Java LDAP server
 
Open MQ Jerome Moliere
Open MQ Jerome MoliereOpen MQ Jerome Moliere
Open MQ Jerome Moliere
 
GlassFish v3 : En Route Java EE 6
GlassFish v3 : En Route Java EE 6GlassFish v3 : En Route Java EE 6
GlassFish v3 : En Route Java EE 6
 

Dernier

The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
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
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 

Dernier (20)

The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
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
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 

Build Real-Time Apps with Grizzly Comet Framework

  • 1. Construire des applications temps réel en utilisant Grizzly Comet Jean-François Arcand Ingénieur Sénior Sun Microsystèmes du Canada http://twitter.com/project_grizzly 1
  • 2. Votre matinée sur Grizzly Comet • Cours de français • C’est quoi Comet/Ajax Pousse • C’est quoi Grizzly • Description détaillée du Grizzly Comet Framework • C’est quoi Atmosphere • La conclusion 2
  • 3. Cours de Français Québec France US Fureteur Browzer Browser Courriel Mail Mail Magasinage Shopping Shopping Québecois Canadien Who? Pourriel Spam Junk Mail Résautage Réseau social Facebook Chandail T-Shirt T-Shirt 3
  • 4. What is Ajax Push, exactly? Responsive, low-latency interaction for the web. • highly responsive, event driven browser applications > Keep clients up-to-date with data arriving or changing on the server, without frequent polling • Pros > Lower latency, not dependent on polling frequency > Server and network do not have to deal with frequent polling requests to check for updates • Example Applications • 4homemedia.com > GMail and GTalk (using GlassFish project's Comet) > Meebo • JotLive > Many more … • KnowNow 4
  • 5. Ajax Poll vs Ajax Push Bending the rules of HTTP. 5
  • 6. Ajax Poll vs Ajax Push Bending the rules of HTTP. • Poll: > Send a request to the server every X seconds. > The response is “empty” if there is no update. • Long Poll: > Send a request to the server, wait for an event to happen, then send the response. > The response is never empty. > HTTP specification satisfied: indistinguishable from “slow” server • Http Streaming: > Send a request, wait for events, stream multi-part/chunked response, and then wait for the events. > The response is continually appended to. 6
  • 7. How Push works Keep an open connection. • Deliver data over a previously opened connection • Always “keep a connection open” > do not respond to the initiating request until event occurs • Streaming is an option > send response in multiple parts without closing the connection in between 7
  • 8. HTTP Polling Regularly checking for updates. GET /chatLog HTTP/1.1 Accept: */* Connection: keep-alive <message>One</message> • Uses the HTTP protocol in a standard way, but requests are regularly invoked setTimeout(‘poll()’, 10000); 8
  • 9. Ajax Push HTTP message flow inversion. GET /auctionMonitor/block/receive-updates?HTTP/1.1 Accept: */* Cookie: JSESSIONID=75CF2BF3E03F0F9C6D2E8EFE1A6884F4 Connection: keep-alive Chat message “Howdy” Host: vorlon.ice:18080 HTTP/1.1 200 OK Content-Type: text/xml;charset=UTF-8 Content-Length: 180 Date: Thu, 27 Apr 2008 16:45:25 GMT Server: GlassFish/v3 updates update address=quot;_id0:_id5:0:chatTextquot; span id=quot;_id0:_id5:0:chatTextquot;Howdy/span /update /updates 9
  • 10. HTTP Streaming The long response. GET /chatLog HTTP/1.1 Accept: */* Connection: keep-alive messageOne/message messageTwo/message messageThree/message messageFour/message • Parse most recent message in JavaScript programming language (not shown here) • The original 1999 “Push” technique (Netscape 1.1) 10
  • 11. What is Project Grizzly Open Source Project on java.net, https://grizzly.dev.java.net Open Sourced under CDDL/LGPL license. Very open community policy.  All project communications are done on Grizzly mailing list. No internal, off mailing list conversations.  Project meetings open to anyone (public conference call). Project decisions are made by project member votes. Sun and non Sun commiters 11
  • 12. What is Project Grizzly Uses Java NIO primitives and hides the complexity programming with Java NIO. Easy-to-use high performance APIs for TCP, UDP and SSL communications. Brings non-blocking sockets to the protocol processing layer. Utilizes high performance buffers and buffer management. Choice of several different high performance thread pools. Ship with an HTTP module which is really easy to extend. Use the Framework, but STILL have a way to control the IO layer. 12
  • 13. Grizzly NIO Framework Grizzlet Bayeux Continuation Messages Bus Grizzly Comet Framework Grizzly HTTP (Sync/Async) Grizzly Servlet Container Grizzly NIO Framework 13
  • 14. 1. Who? Grizzly Electronic Grizzly RCM Nortel Port Unification Arts (EA) Many many Yahoo Brazil Tomcat* MINA* more!!! Sun Shared Restlet Sailfin Jetty Shell Grizzly NIO Framework 14
  • 15. HTTP modules • The Grizzly Framework also have an HTTP framework that can be used to build Web Server This is what GlassFish™ v1|2|3 build on top of. More specialized modules are also available like Comet (Async HTTP). • Simple interface to allow customization of the HTTP Protocol GrizzlyRequest: A utility class to manipulate the HTTP protocol request. GrizzlyResponse: A utility class to manipulate the HTTP protocol response. GrizzlyAdapter: A utility class to manipulate the HTTP request/response object. 15
  • 16. Example: Jersey (jersey.dev.java.net). • Jersey is the open source JAX-RS (Java Specification Request (JSR) 311) Reference Implementation for building RESTful Web services. • By default, Jersey ship with support for Grizzly HTTP WebServer : Implement the GrizzlyAdapter interface, use the GrizzlyRequest and Response object to handle the http protocol. • In less than 20 minutes, Jersey was running with Grizzly! 16
  • 17. 2.2 Who? Many many more!!! Sailfin GlassFish Blog-city.com EventGnosis CBL Gem (JRuby) GlassFish GlassFish Futjisu JXTA v3 ESB Grizzly HTTP (Sync/Async) Grizzly NIO Framework 17
  • 18. Grizzly Comet Components Grizzlet Bayeux Continuation Messages Bus Grizzly Comet Framework Grizzly HTTP Grizzly NIO Framework 18
  • 19. 2.4 Who? Many many Bindows AltMobile ItsNat more!!! Sun Instant 4homedia ICEFaces DWR Messenger Messages Grizzlet Bayeux Continuation Bus Grizzly Comet Framework Grizzly HTTP (Sync/Async) Grizzly NIO Framework 19
  • 20. Introduction to Grizzly Comet • Grizzly Comet is a framework that ship with GlassFish v1|2|3, and can also be embedded into any application using the Grizzly Embed interface (no fish involved). • The Grizzly Comet Framework includes a set of components that can be used for building Comet based application: Grizzly Comet, Continuation, Grizzlet, Messages Bus, Bayeux support 20
  • 21. Grizzly Comet Framework • The Framework contains the classes required to add support for Comet in a Web Application • Main classes to interact with (details next): CometEngine CometContext CometHandler NotificationHandler CometReader CometWriter 21
  • 22. How it works send CometHandler CometHandler Browser 1 CometHandler CometContext push Browser 2 filters send Push data NotificationHandler Servlet 22
  • 23. CometContext • A CometContext is a distribution mechanism for pushing messages that are delivered to multiple subscribers called CometHandler. • All connections registered to a CometContext automatically becomes suspended, waiting for an event (a push) to happens. • A browser receives only those messages published after the client “register “ to a CometContext. • Its contains references to all suspended connections (encapsulated inside a CometHandler) 23
  • 24. CometContext - Example //Create a CometContext for my Chat application CometContext chatContext = CometEngine.getEngine().register(“chatroom”); // Suspend the request ChatRoomHandler chr = new ChatRoomHandler(); chatContext.addCometHandler(chr); // Push welcome message chatContext.push(“Ted is entering the room”); // Push bye bye message chatContext.push(“Alexandre is leaving the room”); // Later, resume the request chatContext.resumeCometHandler(chr); 24
  • 25. CometHandler • The CometHandler is the master piece of a Grizzly Comet based application. • A CometHandler contains the business logic of what will be pushed back to the browser. • A CometHandler might be invoked by the Container: When a push operation happens When a I/O operations are ready to be process (asynchronous read or write) When the browser close the connection. 25
  • 26. CometHandler • The CometHandler is the master piece of a Grizzly Comet based application. • A CometHandler contains the business logic of what will be pushed back to the browser. • A CometHandler might be invoked by the Container: When a push operation happens When a I/O operations are ready to be process (asynchronous read or write) When the browser close the connection. 26
  • 27. CometHandler API //Invoked when CometContext.notify() is called public void onEvent(CometEvent ce); // Invoked when the browser close a suspended // connection or when the suspend timeout expire. public void onInterrupt(CometEvent ce); // Invoked when the request is suspended public void onInitialize(CometEvent ce); // Attach an object // most probably the HttpServletResponse} public void attach(E e); 27
  • 29. NotificationHandler • The NotificationHandler object is the masterpiece when writing Comet application This is inside that object that you will decide to what to do with the push operation: – Throttle: If too many push occurs simultaneously, should we delay them? – Aggregate: Should we cache push operations and aggregate them to avoid overloading the network? – Filter: Should all messages by pushed back to the client. – Should a thread pool be used to improve the push speed operation? Should a JMS backed be used to deliver the message? • The DefaultNotificationHandler push all messages. 29
  • 31. Asyncronous I/0 – Read and Write • A CometHandler can be notified for asynchronous read and write operations • Useful when reading or writing large chunk (like file upload. • Bring NIO to Servlet indirectly  31
  • 32. Messages Bus Grizzlet Bayeux Continuation Messages Bus Grizzly Comet Framework Grizzly HTTP (Sync/Async) Grizzly Servlet Container Grizzly NIO Framework 32
  • 33. Grizzly Messages Bus • The Grizzly Messages Bus implements the Grizzly Comet Protocol (GCP). • The GCP protocol is a very basic protocol that can be used by browser to share data, using the comet technique, between several clients without having to poll for it. • The protocol is very simple. First, a client must subscribe to a topic: http://host:port/contextPath?subscribe=[topic name]cometTechnique=[polling|log-polling|http- streaming]message=[text] • When issuing the URL above, the connection will be automatically suspended based on the cometTechnique specified 33
  • 34. Grizzly Messages Bus • To share data between applications, a browser just need to send the following request: http://host:port/contextPath?publish=[topic name]message=[text] • The Servlet can be used as it is or extended to add extra features like filtering messages, security, login, etc. • Quite easy to write games using the Grizzly Messages Bus. No server side implementation required, just client side! 34
  • 35. Bayeux Protocol Grizzlet Bayeux Continuation Messages Bus Grizzly Comet Framework Grizzly HTTP (Sync/Async) Grizzly Servlet Container Grizzly NIO Framework 35
  • 36. The Bayeux Protocol • http://svn.xantus.org/shortbus/trunk/bayeux/bayeux.html • Bayeux is a JSON-based protocol for clients to register interest in events and for servers to deliver them in a more timely fashion than Ajax-based polling allows. • With Bayeux, you only needs to write the client. • The goals of the Bayeux spec so far have been to: make event delivery fast keep it simple provide extension points in the protoco 36
  • 37. Grizzlet Grizzlet Bayeux Continuation Messages Bus Grizzly Comet Framework Grizzly HTTP (Sync/Async) Grizzly Servlet Container Grizzly NIO Framework 37
  • 38. What is a Grizzlet • Simple interface build on top of the Comet Framework: public void onRequest(AsyncConnection asyncConnection)‫‏‬ public void onPush(AsyncConnection asyncConnection)‫‏‬ • Implement that interface, deploy your POJO in Grizzly Web Server or a GlassFish v3 Adapter. Boom it works! 38
  • 39. Continuation Grizzlet Bayeux Continuation Messages Bus Grizzly Comet Framework Grizzly HTTP (Sync/Async) Grizzly Servlet Container Grizzly NIO Framework 39
  • 40. Grizzly Continuation • Simple API to resume/suspend requests: GrizzlyContinuation continuation = Continuation.getContinuation(); continuation.suspend(timeout); … // From another Thread continuation.resume(); • Used in Servlet/JSP. 40
  • 41. What is Project Atmosphere The state of Comet (Ajax Push) right now • Since July 2006the Grizzly Comet Framework and its extensions’ popularity keep increasing. Among the most popular framework right now. • Comet techniques aren't standardized among Web Container Grizzly Comet applications aren't portable (cannot run on Tomcat nor Jetty)‫‏‬ • Servlet 3.0 will supports only a subset of Comet No async I/O, No pushing functionalities Support will takes time (Spec to be finalized)‫‏‬ 41
  • 42. What is Project Atmosphere (con't)‫‏‬ So... • Atmosphere is a POJO based framework using Inversion of Control (IoC) to bring Comet to the masses. • A framework which can run on any Java based Web Server.....without having to wait for Servlet 3.0 or without the needs to learn how Comet support has been differently implemented by current Web Server supporting Comet • Run on top of Servlet 2.5 compliant Web Server 42
  • 43. What is Project Atmosphere (con't)‫‏‬ Extends and improve the Grizzlet concept.... • Grizzlet is a POJO based approach for writing Comet application. Grizzlet only runs on top of the Grizzly Comet Framework right now Grizzly community asked many times to have the concept ported to other Web Server • Evolve the Grizzlet...and make it the core of Project Atmosphere. 43
  • 44. Architecture Reuse experience and code...from Grizzly Comet to Jersey! Grizzlet Atmosphere re-usable (Atmosphere POJO)‫‏‬ Components library Jersey's Injection Provider, IoC Support, and more.... Portable Comet Layer API (PCL) Tomcat Comet Grizzly Comet Jetty Comet Blocking WS User defined Atmosphere Component 44
  • 45. Example Easy of use of Jersey, power of Grizzly Comet @Grizzlet(Grizzlet.Scope.APPLICATION)‫‏‬ @Path(quot;myGrizzletquot;)‫‏‬ public class MyGrizzlet{ @Suspend(6000)‫‏‬ @GET @Push public String onGet(){ return quot;Suspending the connectionquot;; } @POST @Push public String onPost(@Context HttpServletRequest req, @Context HttpServletResponse res) throws IOException{ res.setStatus(200); res.getWriter().println(quot;OK, info pushedquot;); return req.getParameter(quot;chatMessagequot;); } 45
  • 46. Summary The Asynchronous Web Revolution is Now • The Asynchronous Web will revolutionize human interaction • Push can scale with Asynchronous Request Processing. • With GlassFish, the revolution begins with your applications today • Get ready for Atmosphere and Servlet 3.0 46
  • 47. For More Information http://twitter.com/project_grizzly • Getting Started with GlassFish and Comet http://weblogs.java.net/blog/jfarcand/archive/2008/04/the_hitchhikers.html http://weblogs.java.net/blog/jfarcand/archive/2006/10/writting_a_come.html • Grizzly Active’s Bloggers: Alexey: http://blogs.sun.com/oleksiys/ Shing Wai: http://blogs.sun.com/swchan/ John: http://weblogs.java.net/blog/johnmann/ Sebastien: http://weblogs.java.net/blog/survivant Jeanfrancois: http://weblogs.java.net/jfarcand • Project Grizzly mailing lists, dev@grizzly.dev.java.net users@dev.grizzly.java.net 47