SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler offline
Ajax Push
For Revolutionary Enterprise Applications




Micha Kiener
mimacom ag

Ted Goddard, Ph.D.
ICEsoft Technologies

5420
2

Agenda

>   Web2.0 ™
>   Multi- user Ajax Demo
>   Push for enterprise collaboration
>   Asynchronous HTTP on the Wire
>   Asynchronous HTTP and the Server
>   Developing Asynchronous Applications
>   Conclusion
3

What sort of revolution?
“And yet it moves.”




  American Revolution             French Revolution
Dump everything in the bay        Storm the Bastille


                    Scientific Revolution
                Ex perimentation and Reason
4

Web 2 .0
A Web by the people, for the people.


 >   Documents on the web increasingly generated by users




 >   Out of the Information Age, into the Participation Age
 >   As a whole, the World Wide Web is a collaborative environment, but
     individual pages are only weakly so
 >   Are web user interfaces becoming more powerful?
 >   Is the user an HTTP client?
5

Ajax
Ajax is a state of mind.

  >   It was AJAX (Asynchronous JavaScript™ Technology with XML)
       > or Asynchronous JavaScript technology with XMLHttpRequest
      > now it’s Ajax (not an acronym) because many different techniques
        satisfied the same goals
      > coined by Jesse James Garrett in 2005 to sell an insurance company
        on re- writing all their software
  >   Is the web defined by the W3C or by browser implementers? (Ajax does
      not ex ist in W3C universe yet.)
  >   Ajax decouples user interface from network protocol
  >   Ajax is the leading edge of the user interface possible with current
      popular browsers
  >   The user ex perience is important
6

The Asynchronous Web Revolution
The Web enters the Participation Age.

 >   Ajax is still typically synchronous with user events
 >   Full asynchrony has updates pushed from server any time

 >   Update pages after they load
 >   Send users notifications
 >   Allow users to communicate and collaborate within the web application

 >   Called “Ajax Push”, “Comet”, or “Reverse Ajax ”
     - This is the full realization of Ajax , now fully asynchronous
7

Server- mediated Collaboration




                                         Ex ternal Application


                        Server


               • User Initiat ed
      User
     Push
     Action                                Push
                                           Push
              • Application Init iated


     Micha                                 Ted
8

Applications in the Participation Age
Application- mediated communication.

 >   Distance learning
 >   Collaborative authoring
 >   Auctions
 >   Shared WebDAV filesystem
 >   Blogging and reader comments
 >   SIP- coordinated mobile applications
 >   Hybrid chat/ email/ discussion forums
 >   Customer assistance on sales/ support pages
 >   Multi- step business process made collaborative
 >   Shared trip planner or restaurant selector with maps
 >   Shared calendar, “to do” list, project plan
 >   Games
 >   Enterprise shared record locking and negotiation
9

Agenda

>   Web 2.0
>   Multi- user Ajax Demo
>   Push for enterprise collaboration
>   Asynchronous HTTP on the Wire
>   Asynchronous HTTP and the Server
>   Developing Asynchronous Applications
>   Conclusion
10

Asynchronous Ajax Demo
GlassFish/ Grizzly with ICEfaces WebMC




          http:/ / webm c.icefaces.org/
11

Agenda

>   Web 2.0
>   Multi- user Ajax Demo
>   Push for enterprise collaboration
>   Asynchronous HTTP on the Wire
>   Asynchronous HTTP and the Server
>   Developing Asynchronous Applications
>   Conclusion
12

Didn’t we have that already?
Push- mechanisms in Rich- Clients

 >   Rich- Clients connect ed t o the server in a keep- alive manner
 >   Full Java- API is available wit hin t he client for networking
     and event- handling
 > Server can push an event to t he client any time
    > Eit her by having t he client polling for event s (opt ionally
      combined with a heart- beat, ping- like request)
    > Or by callback from t he server
 > Since the t echnology behind is well- known and t ransparent,
   its easy to use push for collaborative features and updat ing
   mechanisms
 > Rich- Clients were always claimed t o support push- features
13

Showcase for Push
Rich- Client based demo

 >   Collaboration t hrough edit ing and pessimist ic locking

 >   A list of Person object s which may be edited and creat ed

 >   Wit h pessimist ic locking, a lock- object must be obtained
     before t he object is editable

 >   If the lock is held by another user, it should be possible t o
     not ify him so he can release t he lock

 >   When dat a is changed, all views should be automat ically
     updat ed
14

Showcase for Push
Features using Rich- Client Push or Ajax Push

 >   Push in a Rich- Client (Demo)
     > Automatically updating changed / added / removed data sets
     > Collaborative notifications in the contex t of pessimistic locking
15

Showcase for Push
Features using Rich- Client Push or Ajax Push

 >   Wit h Ajax , people st ay longer on t he same page, hence
     aut omatic page update is needed

 >   As the Web get s more and more social, collaborat ive t asks
     come in place

 >   Updating and collaborat ion are inherently asynchronous and
     need some push- mechanism t o be fulfilled

 >   The nex t demo shows the collaborative features of t he rich-
     client in an Ajax Push web- environment
16

Showcase for Push
Features using Rich- Client Push or Ajax Push

 >   Push in a Web- Client (Demo)
     > Automatically updating changed / added / removed data sets
     > Collaborative notifications in the contex t of pessimistic locking
17

Agenda

>   Web 2.0
>   Multi- user Ajax Demo
>   Push for enterprise collaboration
>   Asynchronous HTTP on the Wire
>   Asynchronous HTTP and the Server
>   Developing Asynchronous Applications
>   Conclusion
18

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

Bayeux/ Cometd
JSON Pub/ Sub.

   [
       {
           "channel": "/some/name",
           "clientId": "83js73jsh29sjd92",
           "data": { "myapp" : "specific data", value: 100 }
       }
   ]

  >    JSON Messages are published on specified channels
  >    Channel operations: connect, subscribe, unsubscribe, etc.
  >    Multiple transports: polling, long- polling, iframe, flash
  >    Server implementations: Perl, Python, Java™ programming language
  >    Server- side reflector with no server- side application possible
20

Ajax Push
HTTP message flow inversion.

   GET / auctionMonitor/ block/ receive- updates?icefacesID= 1209765435
   HTTP/ 1.1
   Accept: */ *
   Cookie: JSESSIONID= 75CF2BF3E03F0F9C6D2E8EFE1A6884F4
   Connection: keep- alive
   Host: vorlon.ice:18080
                                               Chat m essage “Howdy”
   HTTP/ 1.1 200 OK
   Content- Type: text/ xml;charset= UTF- 8
   Content- Length: 180
   Date: Thu, 27 Apr 2006 16:45:25 GMT
   Server: Apache- Coyote/ 1.1

   < updates>
    < update address= "_id0:_id5:0:chatTex t">
       < span id= "_id0:_id5:0:chatTex t"> Howdy< / span>
    < / update>
   < / updates>
21

Agenda

>   Web 2.0
>   Multi- user Ajax Demo
>   Push for enterprise collaboration
>   Asynchronous HTTP on the Wire
>   Asynchronous HTTP and the Server
>   Developing Asynchronous Applications
>   Conclusion
22

Servlet Thread Catastrophe
Strangled by a thread for every client.




GET / updates HTTP/ 1.1   GET / updates HTTP/ 1.1   GET / updates HTTP/ 1.1   GET / updates HTTP/ 1.1
                          Connection: keep- alive   Connection: keep- alive   Connection: keep- alive
Connection: keep- alive


                          HTTP/ 1.1 200 OK

                          < updates>
                           …
                          < / updates>
23

Architecture Challenges
The serious effect of blocking threads.




                                          (default thread
                                          stack size)
24

Server- side Ajax Push: Who supports
what
The asynchronicity matrix.

Container     Asynchronous IO Suspendible    Delivery
                               Request /    Guarant ee
                               Response


Jet ty                             X
Tomcat               X             X
GlassFish            X             X            X
Resin                              X
WebLogic                           X
25

Jetty
service() will resume shortly.

  import org.mortbay.util.ajax.Continuation;

  service(request, response) {
      Continuation continuation = ContinuationSupport
          .getContinuation(request, this);
      ...
      continuation.suspend();
      response.getWriter().write(message);
  }


Asynchronously and elsewhere in t he application ...
  message.setValue(“Howdy”);
  continuation.resume();
26

Tomcat 6
Eventful Comet.
 import org.apache.catalina.CometProcessor;

 public class Processor implements CometProcessor {

 public void event(CometEvent event) {
     request = event.getHttpServletRequest();
     response = event.getHttpServletResponse();

     if   (event.getEventType()   ==   EventType.BEGIN)   {   ...
     if   (event.getEventType()   ==   EventType.READ)    {   ...
     if   (event.getEventType()   ==   EventType.END)     {   ...
     if   (event.getEventType()   ==   EventType.ERROR)   {   ...
 }
Asynchronously and elsewhere in the application ...
 message.setValue(“Howdy”);
 response.getWriter().write(message);
 event.close();
27


GlassFish
Suspend with Grizzly.
         CometContext context =
             CometEngine.getEngine().register(contextPath);
         context.setExpirationDelay(20 * 1000);

         SuspendableHandler handler = new SuspendableHandler();
         handler.attach(response);
         cometContext.addCometHandler(handler);

  class SuspendableHandler implements CometHandler       {

         public void onEvent(CometEvent event) {
            response.getWriter().println(event.attachment());
            cometContext.resumeCometHandler(this);
     }
 Asynchronously and elsewhere in the application ...
  message.setValue(“Howdy”);                        27
  cometContext.notify(message);


           03/ 07/ 2008
28

Servlet 3 .0
Future Asynchronous Standard.



>   Defined by JSR- 315 Ex pert Group
>   DWR, Jetty, Tomcat, GlassFish project, and ICEfaces participants
>   Standard asynchronous processing API being defined
    > Asynchronous I/ O
    > Suspendible requests
    > Delivery guarantee not included

>   Will improve portability of DWR, Cometd, and ICEfaces
>   (But unless you write Servlets today, this API will be hidden
    by your chosen Ajax framework.)
29

Agenda

>   Web 2.0
>   Multi- user Ajax Demo
>   Push for enterprise collaboration
>   Asynchronous HTTP on the Wire
>   Asynchronous HTTP and the Server
>   Developing Asynchronous Applications
>   Conclusion
30

JavaScript Polling
Are we there yet? Are we there yet? Are we there yet? ...



   function poll() {
     setTimeout(‘poll()’, 10000);
     req = new XMLHttpRequest();
     req.onreadystatechange = update();
     req.open(“POST”, “http://server/getMessage.jsp”);
   }

   function update() {
     chatLog.innerHTML = req.responseText;
   }

   poll();
31

Cometd
Distributed, loosely coupled, scripting
   function update(message) {
     chatLog.innerHTML = message.data.value;          JavaScript
   }
   ...
     cometd.subscribe(“chat”, remoteTopics, “update”)
     cometd.publish(“chat”, message)


   import dojox.cometd.*;
                                                            Java
   Channel channel = Bayeux.getChannel(“chat”, create);
   channel.subscribe(client);

 Asynchronously and elsewhere in t he application ...
   message.setValue(“Howdy”);
   channel.publish(client, message, “chat text”);
32

DWR
JavaScript RPC


   import org.directwebremoting.proxy.dwr.Util;

   scriptSessions =
       webContext.getScriptSessionsByPage(currentPage);
       util = new Util(scriptSessions);

To “Reverse Ajax ” and invoke arbit rary JavaScript :
   util.addScript(ScriptBuffer script);



Asynchronously and elsewhere in the application ...
   util.setValue(“form:chat:_id3”, “Howdy”);
33

ICEfaces
Preserve MVC with Transparent Ajax.

           PageBean.java                               Page.x html
public class PageBean {            <f:view
   String message;                    xmlns:f=“http://java.sun.com/jsf/core”
                                      xmlns:h="http://java.sun.com/jsf/html“ >

    public String getMessage() {     <html>
       return message;                 <body>
                                         <h:form>
    }                                       <h:inputText
                                               value=“#{pageBean.message}” />
   public void setMessage(String         </h:form>
message) {                             </body>
      this.message = message;        </html>
   }
                                   </f:view>

}      Presentation Model                      Declarative User Interface

    A language for Ajax Push that preserves Designer and Developer
       roles
34

ICEfaces
High level push.
   import org.icefaces.application.SessionRenderer;

 To updat e all users in t he application:
   SessionRenderer.render(SessionRenderer.ALL_SESSIONS);


 Or t o keep t rack of groups of users:
   SessionRenderer.addCurrentSession(“chat”);

 Asynchronously and elsewhere in t he application ...
   message.setValue(“Howdy”);
   SessionRenderer.render(“chat”);

  The JSF lifecycle runs and each user’s page is
  updated from the component tree and current
  model state.
35

Agenda

>   Web 2.0
>   Multi- user Ajax Demo
>   Push for enterprise collaboration
>   Asynchronous HTTP on the Wire
>   Asynchronous HTTP and the Server
>   Conclusion
36

Summary
The Asynchronous Web Revolution is Now


>   The Asynchronous Web will revolutionize human interaction

>   Ajax Push is the key to enterprise collaboration for the Web

>   Push can scale with Asynchronous Request Processing

>   ICEfaces and edoras provide the high- level capabilities for enterprise
    collaboration features in your application

>   Visit us at the mimacom stand in the ex hibition to talk with the experts
    and see more demos
Thank you!                      Questions?
        The Asynchronous Web Revolution is Now




Micha Kiener                 http:/ / www.mimacom.ch
mimacom ag                   micha.kiener@mimacom.ch

Ted Goddard                  http:/ / www.icefaces.org
ICEsoft Technologies         ted.goddard@icesoft.com

Mais conteúdo relacionado

Mais procurados

Enough with the JavaScript already!
Enough with the JavaScript already!Enough with the JavaScript already!
Enough with the JavaScript already!Nicholas Zakas
 
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...DataLeader.io
 
Great Java Application Server Debate
Great Java Application Server DebateGreat Java Application Server Debate
Great Java Application Server DebateHamed Hatami
 
Java dans Windows Azure Cloud Services, big data avec hd insight et les nouve...
Java dans Windows Azure Cloud Services, big data avec hd insight et les nouve...Java dans Windows Azure Cloud Services, big data avec hd insight et les nouve...
Java dans Windows Azure Cloud Services, big data avec hd insight et les nouve...Microsoft
 
14. html 5 security considerations
14. html 5 security considerations14. html 5 security considerations
14. html 5 security considerationsEoin Keary
 
Micronaut For Single Page Apps
Micronaut For Single Page AppsMicronaut For Single Page Apps
Micronaut For Single Page AppsZachary Klein
 
webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)Hendrik Ebbers
 
HTML5 WebSocket for the Real-Time Web and the Internet of Things
HTML5 WebSocket for the Real-Time Weband the Internet of ThingsHTML5 WebSocket for the Real-Time Weband the Internet of Things
HTML5 WebSocket for the Real-Time Web and the Internet of ThingsPeter Moskovits
 
What the Heck is OAuth and OpenID Connect - RWX 2017
What the Heck is OAuth and OpenID Connect - RWX 2017What the Heck is OAuth and OpenID Connect - RWX 2017
What the Heck is OAuth and OpenID Connect - RWX 2017Matt Raible
 
soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch
 
[peachpit] Adaptive Images in Responsive Web Design
[peachpit] Adaptive Images in Responsive Web Design[peachpit] Adaptive Images in Responsive Web Design
[peachpit] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
Spark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 WorkshopSpark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 WorkshopArun Gupta
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitAriya Hidayat
 
WebRTC & Firefox OS - presentation at Google
WebRTC & Firefox OS - presentation at GoogleWebRTC & Firefox OS - presentation at Google
WebRTC & Firefox OS - presentation at GoogleRobert Nyman
 
JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011Shreedhar Ganapathy
 
Front-end optimisation & jQuery Internals (Pycon)
Front-end optimisation & jQuery Internals (Pycon)Front-end optimisation & jQuery Internals (Pycon)
Front-end optimisation & jQuery Internals (Pycon)Artur Cistov
 
Clojure Web Development
Clojure Web DevelopmentClojure Web Development
Clojure Web DevelopmentHong Jiang
 
Spark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RSSpark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RSArun Gupta
 

Mais procurados (20)

Enough with the JavaScript already!
Enough with the JavaScript already!Enough with the JavaScript already!
Enough with the JavaScript already!
 
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
 
Great Java Application Server Debate
Great Java Application Server DebateGreat Java Application Server Debate
Great Java Application Server Debate
 
Java dans Windows Azure Cloud Services, big data avec hd insight et les nouve...
Java dans Windows Azure Cloud Services, big data avec hd insight et les nouve...Java dans Windows Azure Cloud Services, big data avec hd insight et les nouve...
Java dans Windows Azure Cloud Services, big data avec hd insight et les nouve...
 
14. html 5 security considerations
14. html 5 security considerations14. html 5 security considerations
14. html 5 security considerations
 
Micronaut For Single Page Apps
Micronaut For Single Page AppsMicronaut For Single Page Apps
Micronaut For Single Page Apps
 
webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)
 
JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...
JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...
JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...
 
HTML5 WebSocket for the Real-Time Web and the Internet of Things
HTML5 WebSocket for the Real-Time Weband the Internet of ThingsHTML5 WebSocket for the Real-Time Weband the Internet of Things
HTML5 WebSocket for the Real-Time Web and the Internet of Things
 
What the Heck is OAuth and OpenID Connect - RWX 2017
What the Heck is OAuth and OpenID Connect - RWX 2017What the Heck is OAuth and OpenID Connect - RWX 2017
What the Heck is OAuth and OpenID Connect - RWX 2017
 
J web socket
J web socketJ web socket
J web socket
 
soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5
 
[peachpit] Adaptive Images in Responsive Web Design
[peachpit] Adaptive Images in Responsive Web Design[peachpit] Adaptive Images in Responsive Web Design
[peachpit] Adaptive Images in Responsive Web Design
 
Spark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 WorkshopSpark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 Workshop
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKit
 
WebRTC & Firefox OS - presentation at Google
WebRTC & Firefox OS - presentation at GoogleWebRTC & Firefox OS - presentation at Google
WebRTC & Firefox OS - presentation at Google
 
JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011
 
Front-end optimisation & jQuery Internals (Pycon)
Front-end optimisation & jQuery Internals (Pycon)Front-end optimisation & jQuery Internals (Pycon)
Front-end optimisation & jQuery Internals (Pycon)
 
Clojure Web Development
Clojure Web DevelopmentClojure Web Development
Clojure Web Development
 
Spark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RSSpark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RS
 

Destaque

Building A Mini Google High Performance Computing In Ruby Presentation 1
Building A Mini Google  High Performance Computing In Ruby Presentation 1Building A Mini Google  High Performance Computing In Ruby Presentation 1
Building A Mini Google High Performance Computing In Ruby Presentation 1elliando dias
 
Ruby on Windows - HOW TO install and set up
Ruby on Windows - HOW TO install and set upRuby on Windows - HOW TO install and set up
Ruby on Windows - HOW TO install and set upTim Golden
 
One RubyStack to Rule them All
One RubyStack to Rule them AllOne RubyStack to Rule them All
One RubyStack to Rule them Allelliando dias
 
Model-Driven Software Development
Model-Driven Software DevelopmentModel-Driven Software Development
Model-Driven Software Developmentelliando dias
 
Miami2012 cag
Miami2012 cagMiami2012 cag
Miami2012 cagCarl Ford
 
Implementing and Managing Accelerated Math In Lower Elementary
Implementing and Managing Accelerated Math In Lower ElementaryImplementing and Managing Accelerated Math In Lower Elementary
Implementing and Managing Accelerated Math In Lower ElementaryD Houseman
 
Shakouri 4 gwe keynote jan 2011
Shakouri 4 gwe keynote jan 2011Shakouri 4 gwe keynote jan 2011
Shakouri 4 gwe keynote jan 2011Carl Ford
 
Rapid Development with Ruby/JRuby and Rails
Rapid Development with Ruby/JRuby and RailsRapid Development with Ruby/JRuby and Rails
Rapid Development with Ruby/JRuby and Railselliando dias
 

Destaque (10)

Building A Mini Google High Performance Computing In Ruby Presentation 1
Building A Mini Google  High Performance Computing In Ruby Presentation 1Building A Mini Google  High Performance Computing In Ruby Presentation 1
Building A Mini Google High Performance Computing In Ruby Presentation 1
 
Ruby on Windows - HOW TO install and set up
Ruby on Windows - HOW TO install and set upRuby on Windows - HOW TO install and set up
Ruby on Windows - HOW TO install and set up
 
J2EE Na Vida Real
J2EE Na Vida RealJ2EE Na Vida Real
J2EE Na Vida Real
 
One RubyStack to Rule them All
One RubyStack to Rule them AllOne RubyStack to Rule them All
One RubyStack to Rule them All
 
Model-Driven Software Development
Model-Driven Software DevelopmentModel-Driven Software Development
Model-Driven Software Development
 
Miami2012 cag
Miami2012 cagMiami2012 cag
Miami2012 cag
 
Implementing and Managing Accelerated Math In Lower Elementary
Implementing and Managing Accelerated Math In Lower ElementaryImplementing and Managing Accelerated Math In Lower Elementary
Implementing and Managing Accelerated Math In Lower Elementary
 
Shakouri 4 gwe keynote jan 2011
Shakouri 4 gwe keynote jan 2011Shakouri 4 gwe keynote jan 2011
Shakouri 4 gwe keynote jan 2011
 
Rapid Development with Ruby/JRuby and Rails
Rapid Development with Ruby/JRuby and RailsRapid Development with Ruby/JRuby and Rails
Rapid Development with Ruby/JRuby and Rails
 
Solid state 2
Solid state 2Solid state 2
Solid state 2
 

Semelhante a Ajax Push For Revolutionary Enterprise Applications

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
 
Data power v7 update - Ravi Katikala
Data power v7 update - Ravi KatikalaData power v7 update - Ravi Katikala
Data power v7 update - Ravi Katikalafloridawusergroup
 
Server side push in Aldan 3
Server side push in Aldan 3Server side push in Aldan 3
Server side push in Aldan 3ALDAN3
 
IBM Bluemix OpenWhisk: Serverless Conference 2016, London, UK: The Future of ...
IBM Bluemix OpenWhisk: Serverless Conference 2016, London, UK: The Future of ...IBM Bluemix OpenWhisk: Serverless Conference 2016, London, UK: The Future of ...
IBM Bluemix OpenWhisk: Serverless Conference 2016, London, UK: The Future of ...OpenWhisk
 
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
 
ASP.NET AJAX with Visual Studio 2008
ASP.NET AJAX with Visual Studio 2008ASP.NET AJAX with Visual Studio 2008
ASP.NET AJAX with Visual Studio 2008Caleb Jenkins
 
The 'Serverless' Paradigm, OpenWhisk and FIWARE
The 'Serverless' Paradigm, OpenWhisk and FIWAREThe 'Serverless' Paradigm, OpenWhisk and FIWARE
The 'Serverless' Paradigm, OpenWhisk and FIWAREFIWARE
 
The Serverless Paradigm, OpenWhisk and FIWARE
The Serverless Paradigm, OpenWhisk and FIWAREThe Serverless Paradigm, OpenWhisk and FIWARE
The Serverless Paradigm, OpenWhisk and FIWAREAlex Glikson
 
Camelone-2012 HTML5 WebSocket ActiveMQ/Camel
Camelone-2012 HTML5 WebSocket ActiveMQ/CamelCamelone-2012 HTML5 WebSocket ActiveMQ/Camel
Camelone-2012 HTML5 WebSocket ActiveMQ/CamelCharles Moulliard
 
Ajax basics
Ajax basicsAjax basics
Ajax basicsVel004
 
4163A - What is Web 2.0.ppt
4163A - What is Web 2.0.ppt4163A - What is Web 2.0.ppt
4163A - What is Web 2.0.pptMatthew Perrins
 
Hybrid application development
Hybrid application developmentHybrid application development
Hybrid application developmentEngin Hatay
 
Comet from JavaOne 2008
Comet from JavaOne 2008Comet from JavaOne 2008
Comet from JavaOne 2008Joe Walker
 

Semelhante a Ajax Push For Revolutionary Enterprise Applications (20)

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
 
Data power v7 update - Ravi Katikala
Data power v7 update - Ravi KatikalaData power v7 update - Ravi Katikala
Data power v7 update - Ravi Katikala
 
Micro service architecture
Micro service architectureMicro service architecture
Micro service architecture
 
Server side push in Aldan 3
Server side push in Aldan 3Server side push in Aldan 3
Server side push in Aldan 3
 
IBM Bluemix OpenWhisk: Serverless Conference 2016, London, UK: The Future of ...
IBM Bluemix OpenWhisk: Serverless Conference 2016, London, UK: The Future of ...IBM Bluemix OpenWhisk: Serverless Conference 2016, London, UK: The Future of ...
IBM Bluemix OpenWhisk: Serverless Conference 2016, London, UK: The Future of ...
 
Real time web apps
Real time web appsReal time web apps
Real time web apps
 
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
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
ASP.NET AJAX with Visual Studio 2008
ASP.NET AJAX with Visual Studio 2008ASP.NET AJAX with Visual Studio 2008
ASP.NET AJAX with Visual Studio 2008
 
The 'Serverless' Paradigm, OpenWhisk and FIWARE
The 'Serverless' Paradigm, OpenWhisk and FIWAREThe 'Serverless' Paradigm, OpenWhisk and FIWARE
The 'Serverless' Paradigm, OpenWhisk and FIWARE
 
The Serverless Paradigm, OpenWhisk and FIWARE
The Serverless Paradigm, OpenWhisk and FIWAREThe Serverless Paradigm, OpenWhisk and FIWARE
The Serverless Paradigm, OpenWhisk and FIWARE
 
Camelone-2012 HTML5 WebSocket ActiveMQ/Camel
Camelone-2012 HTML5 WebSocket ActiveMQ/CamelCamelone-2012 HTML5 WebSocket ActiveMQ/Camel
Camelone-2012 HTML5 WebSocket ActiveMQ/Camel
 
Ajax basics
Ajax basicsAjax basics
Ajax basics
 
4163A - What is Web 2.0.ppt
4163A - What is Web 2.0.ppt4163A - What is Web 2.0.ppt
4163A - What is Web 2.0.ppt
 
Realtime with websockets
Realtime with websocketsRealtime with websockets
Realtime with websockets
 
Ajax Ppt 1
Ajax Ppt 1Ajax Ppt 1
Ajax Ppt 1
 
Websocket
WebsocketWebsocket
Websocket
 
Hybrid application development
Hybrid application developmentHybrid application development
Hybrid application development
 
Comet from JavaOne 2008
Comet from JavaOne 2008Comet from JavaOne 2008
Comet from JavaOne 2008
 
Ecom 1
Ecom 1Ecom 1
Ecom 1
 

Mais de elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

Mais de elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Último

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
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
[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
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
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
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
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
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 

Último (20)

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
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
[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
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
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
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
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
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
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
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 

Ajax Push For Revolutionary Enterprise Applications

  • 1. Ajax Push For Revolutionary Enterprise Applications Micha Kiener mimacom ag Ted Goddard, Ph.D. ICEsoft Technologies 5420
  • 2. 2 Agenda > Web2.0 ™ > Multi- user Ajax Demo > Push for enterprise collaboration > Asynchronous HTTP on the Wire > Asynchronous HTTP and the Server > Developing Asynchronous Applications > Conclusion
  • 3. 3 What sort of revolution? “And yet it moves.” American Revolution French Revolution Dump everything in the bay Storm the Bastille Scientific Revolution Ex perimentation and Reason
  • 4. 4 Web 2 .0 A Web by the people, for the people. > Documents on the web increasingly generated by users > Out of the Information Age, into the Participation Age > As a whole, the World Wide Web is a collaborative environment, but individual pages are only weakly so > Are web user interfaces becoming more powerful? > Is the user an HTTP client?
  • 5. 5 Ajax Ajax is a state of mind. > It was AJAX (Asynchronous JavaScript™ Technology with XML) > or Asynchronous JavaScript technology with XMLHttpRequest > now it’s Ajax (not an acronym) because many different techniques satisfied the same goals > coined by Jesse James Garrett in 2005 to sell an insurance company on re- writing all their software > Is the web defined by the W3C or by browser implementers? (Ajax does not ex ist in W3C universe yet.) > Ajax decouples user interface from network protocol > Ajax is the leading edge of the user interface possible with current popular browsers > The user ex perience is important
  • 6. 6 The Asynchronous Web Revolution The Web enters the Participation Age. > Ajax is still typically synchronous with user events > Full asynchrony has updates pushed from server any time > Update pages after they load > Send users notifications > Allow users to communicate and collaborate within the web application > Called “Ajax Push”, “Comet”, or “Reverse Ajax ” - This is the full realization of Ajax , now fully asynchronous
  • 7. 7 Server- mediated Collaboration Ex ternal Application Server • User Initiat ed User Push Action Push Push • Application Init iated Micha Ted
  • 8. 8 Applications in the Participation Age Application- mediated communication. > Distance learning > Collaborative authoring > Auctions > Shared WebDAV filesystem > Blogging and reader comments > SIP- coordinated mobile applications > Hybrid chat/ email/ discussion forums > Customer assistance on sales/ support pages > Multi- step business process made collaborative > Shared trip planner or restaurant selector with maps > Shared calendar, “to do” list, project plan > Games > Enterprise shared record locking and negotiation
  • 9. 9 Agenda > Web 2.0 > Multi- user Ajax Demo > Push for enterprise collaboration > Asynchronous HTTP on the Wire > Asynchronous HTTP and the Server > Developing Asynchronous Applications > Conclusion
  • 10. 10 Asynchronous Ajax Demo GlassFish/ Grizzly with ICEfaces WebMC http:/ / webm c.icefaces.org/
  • 11. 11 Agenda > Web 2.0 > Multi- user Ajax Demo > Push for enterprise collaboration > Asynchronous HTTP on the Wire > Asynchronous HTTP and the Server > Developing Asynchronous Applications > Conclusion
  • 12. 12 Didn’t we have that already? Push- mechanisms in Rich- Clients > Rich- Clients connect ed t o the server in a keep- alive manner > Full Java- API is available wit hin t he client for networking and event- handling > Server can push an event to t he client any time > Eit her by having t he client polling for event s (opt ionally combined with a heart- beat, ping- like request) > Or by callback from t he server > Since the t echnology behind is well- known and t ransparent, its easy to use push for collaborative features and updat ing mechanisms > Rich- Clients were always claimed t o support push- features
  • 13. 13 Showcase for Push Rich- Client based demo > Collaboration t hrough edit ing and pessimist ic locking > A list of Person object s which may be edited and creat ed > Wit h pessimist ic locking, a lock- object must be obtained before t he object is editable > If the lock is held by another user, it should be possible t o not ify him so he can release t he lock > When dat a is changed, all views should be automat ically updat ed
  • 14. 14 Showcase for Push Features using Rich- Client Push or Ajax Push > Push in a Rich- Client (Demo) > Automatically updating changed / added / removed data sets > Collaborative notifications in the contex t of pessimistic locking
  • 15. 15 Showcase for Push Features using Rich- Client Push or Ajax Push > Wit h Ajax , people st ay longer on t he same page, hence aut omatic page update is needed > As the Web get s more and more social, collaborat ive t asks come in place > Updating and collaborat ion are inherently asynchronous and need some push- mechanism t o be fulfilled > The nex t demo shows the collaborative features of t he rich- client in an Ajax Push web- environment
  • 16. 16 Showcase for Push Features using Rich- Client Push or Ajax Push > Push in a Web- Client (Demo) > Automatically updating changed / added / removed data sets > Collaborative notifications in the contex t of pessimistic locking
  • 17. 17 Agenda > Web 2.0 > Multi- user Ajax Demo > Push for enterprise collaboration > Asynchronous HTTP on the Wire > Asynchronous HTTP and the Server > Developing Asynchronous Applications > Conclusion
  • 18. 18 Ajax Poll vs Ajax Push Bending the rules of HTTP.
  • 19. 19 Bayeux/ Cometd JSON Pub/ Sub. [ { "channel": "/some/name", "clientId": "83js73jsh29sjd92", "data": { "myapp" : "specific data", value: 100 } } ] > JSON Messages are published on specified channels > Channel operations: connect, subscribe, unsubscribe, etc. > Multiple transports: polling, long- polling, iframe, flash > Server implementations: Perl, Python, Java™ programming language > Server- side reflector with no server- side application possible
  • 20. 20 Ajax Push HTTP message flow inversion. GET / auctionMonitor/ block/ receive- updates?icefacesID= 1209765435 HTTP/ 1.1 Accept: */ * Cookie: JSESSIONID= 75CF2BF3E03F0F9C6D2E8EFE1A6884F4 Connection: keep- alive Host: vorlon.ice:18080 Chat m essage “Howdy” HTTP/ 1.1 200 OK Content- Type: text/ xml;charset= UTF- 8 Content- Length: 180 Date: Thu, 27 Apr 2006 16:45:25 GMT Server: Apache- Coyote/ 1.1 < updates> < update address= "_id0:_id5:0:chatTex t"> < span id= "_id0:_id5:0:chatTex t"> Howdy< / span> < / update> < / updates>
  • 21. 21 Agenda > Web 2.0 > Multi- user Ajax Demo > Push for enterprise collaboration > Asynchronous HTTP on the Wire > Asynchronous HTTP and the Server > Developing Asynchronous Applications > Conclusion
  • 22. 22 Servlet Thread Catastrophe Strangled by a thread for every client. GET / updates HTTP/ 1.1 GET / updates HTTP/ 1.1 GET / updates HTTP/ 1.1 GET / updates HTTP/ 1.1 Connection: keep- alive Connection: keep- alive Connection: keep- alive Connection: keep- alive HTTP/ 1.1 200 OK < updates> … < / updates>
  • 23. 23 Architecture Challenges The serious effect of blocking threads. (default thread stack size)
  • 24. 24 Server- side Ajax Push: Who supports what The asynchronicity matrix. Container Asynchronous IO Suspendible Delivery Request / Guarant ee Response Jet ty X Tomcat X X GlassFish X X X Resin X WebLogic X
  • 25. 25 Jetty service() will resume shortly. import org.mortbay.util.ajax.Continuation; service(request, response) { Continuation continuation = ContinuationSupport .getContinuation(request, this); ... continuation.suspend(); response.getWriter().write(message); } Asynchronously and elsewhere in t he application ... message.setValue(“Howdy”); continuation.resume();
  • 26. 26 Tomcat 6 Eventful Comet. import org.apache.catalina.CometProcessor; public class Processor implements CometProcessor { public void event(CometEvent event) { request = event.getHttpServletRequest(); response = event.getHttpServletResponse(); if (event.getEventType() == EventType.BEGIN) { ... if (event.getEventType() == EventType.READ) { ... if (event.getEventType() == EventType.END) { ... if (event.getEventType() == EventType.ERROR) { ... } Asynchronously and elsewhere in the application ... message.setValue(“Howdy”); response.getWriter().write(message); event.close();
  • 27. 27 GlassFish Suspend with Grizzly. CometContext context = CometEngine.getEngine().register(contextPath); context.setExpirationDelay(20 * 1000); SuspendableHandler handler = new SuspendableHandler(); handler.attach(response); cometContext.addCometHandler(handler); class SuspendableHandler implements CometHandler { public void onEvent(CometEvent event) { response.getWriter().println(event.attachment()); cometContext.resumeCometHandler(this); } Asynchronously and elsewhere in the application ... message.setValue(“Howdy”); 27 cometContext.notify(message); 03/ 07/ 2008
  • 28. 28 Servlet 3 .0 Future Asynchronous Standard. > Defined by JSR- 315 Ex pert Group > DWR, Jetty, Tomcat, GlassFish project, and ICEfaces participants > Standard asynchronous processing API being defined > Asynchronous I/ O > Suspendible requests > Delivery guarantee not included > Will improve portability of DWR, Cometd, and ICEfaces > (But unless you write Servlets today, this API will be hidden by your chosen Ajax framework.)
  • 29. 29 Agenda > Web 2.0 > Multi- user Ajax Demo > Push for enterprise collaboration > Asynchronous HTTP on the Wire > Asynchronous HTTP and the Server > Developing Asynchronous Applications > Conclusion
  • 30. 30 JavaScript Polling Are we there yet? Are we there yet? Are we there yet? ... function poll() { setTimeout(‘poll()’, 10000); req = new XMLHttpRequest(); req.onreadystatechange = update(); req.open(“POST”, “http://server/getMessage.jsp”); } function update() { chatLog.innerHTML = req.responseText; } poll();
  • 31. 31 Cometd Distributed, loosely coupled, scripting function update(message) { chatLog.innerHTML = message.data.value; JavaScript } ... cometd.subscribe(“chat”, remoteTopics, “update”) cometd.publish(“chat”, message) import dojox.cometd.*; Java Channel channel = Bayeux.getChannel(“chat”, create); channel.subscribe(client); Asynchronously and elsewhere in t he application ... message.setValue(“Howdy”); channel.publish(client, message, “chat text”);
  • 32. 32 DWR JavaScript RPC import org.directwebremoting.proxy.dwr.Util; scriptSessions = webContext.getScriptSessionsByPage(currentPage); util = new Util(scriptSessions); To “Reverse Ajax ” and invoke arbit rary JavaScript : util.addScript(ScriptBuffer script); Asynchronously and elsewhere in the application ... util.setValue(“form:chat:_id3”, “Howdy”);
  • 33. 33 ICEfaces Preserve MVC with Transparent Ajax. PageBean.java Page.x html public class PageBean { <f:view String message; xmlns:f=“http://java.sun.com/jsf/core” xmlns:h="http://java.sun.com/jsf/html“ > public String getMessage() { <html> return message; <body> <h:form> } <h:inputText value=“#{pageBean.message}” /> public void setMessage(String </h:form> message) { </body> this.message = message; </html> } </f:view> } Presentation Model Declarative User Interface A language for Ajax Push that preserves Designer and Developer roles
  • 34. 34 ICEfaces High level push. import org.icefaces.application.SessionRenderer; To updat e all users in t he application: SessionRenderer.render(SessionRenderer.ALL_SESSIONS); Or t o keep t rack of groups of users: SessionRenderer.addCurrentSession(“chat”); Asynchronously and elsewhere in t he application ... message.setValue(“Howdy”); SessionRenderer.render(“chat”); The JSF lifecycle runs and each user’s page is updated from the component tree and current model state.
  • 35. 35 Agenda > Web 2.0 > Multi- user Ajax Demo > Push for enterprise collaboration > Asynchronous HTTP on the Wire > Asynchronous HTTP and the Server > Conclusion
  • 36. 36 Summary The Asynchronous Web Revolution is Now > The Asynchronous Web will revolutionize human interaction > Ajax Push is the key to enterprise collaboration for the Web > Push can scale with Asynchronous Request Processing > ICEfaces and edoras provide the high- level capabilities for enterprise collaboration features in your application > Visit us at the mimacom stand in the ex hibition to talk with the experts and see more demos
  • 37. Thank you! Questions? The Asynchronous Web Revolution is Now Micha Kiener http:/ / www.mimacom.ch mimacom ag micha.kiener@mimacom.ch Ted Goddard http:/ / www.icefaces.org ICEsoft Technologies ted.goddard@icesoft.com