It was a pleasure to work with the folks at Infoworld on adding a counterpoint to the AJAX application development package they released this week. After all, AJAX is still pull, and the push technology to make the Web work more interactively is still only just emerging…

“What’s Next After AJAX?”
InfoWorld (05/23/05); Khare, Rohit

New Web applications that leverage AJAX (asynchronous JavaScript and XML) are boosting prospects of more viable Web UIs by providing smoother scrolling, incremental updates, and more interactive input forms. However, fat-client UIs still have the advantage in terms of being able to receive real-time event notification such as instant messaging, stock tickers, and other forms of push data streaming. AJAX allows small download transactions to occur so that the Web UI is more fluid. But asynchrony as defined by AJAX is different than in the middleware community, where the formal definition refers to messages sent in both directions rather than only upstream, as in the case of AJAX.

However, developers have come up with a way to keep response connections open in
http using hidden frames and JavaScript tags, allowing streamed data into the browser. The open-source ARSC (A Really Simple Chat) program leverages this type of interactivity but requires a modified HTTP server to rebroadcast chat streams to other users. But the broader implication of new Web UI capabilities is application integration, such as with the open-source Nevow and Pushlets for Python and Java, respectively, which allow Web interfaces to fully interact with enterprise applications and Web services. Web UIs will still be limited by slower response times, strained interactivity, and graphical modesty, but new push data streaming capabilities for AJAX bring Web UIs much closer to being a robust platform for application development.

What’s next after AJAX?
There are some capabilities that Web-based apps can’t handle — yet
By Rohit Khare
May 23, 2005

The rapid spread of the term AJAX (asynchronous JavaScript and XML) — from Weblog to Wall Street Journal within weeks! — might lead developers to assume it’s a breakthrough that heralds the death of desktop applications. There’s certainly a kernel of truth in that: The recent spate of new Web applications under the AJAX banner have redefined end-users’ expectation of what’s even possible within a Web browser by offering smooth scrolling, incremental updates, and more responsive input forms.

Nevertheless, so-called fat-client UIs still retain one fundamental advantage over Web UIs: real-time event notification. AJAX alone does not address IM, stock tickers, and other collaborative applications that require “push” data streaming.

The key goal of AJAX-style applications is to decompose jarring transitions that download an entire new Web page into a series of smaller, more frequent transactions. Developers consider AJAX to be “asynchronous” because data can be updated without interrupting the user. For example, Google (Profile, Products, Articles) Maps dramatically reduces the perceived latency of scrolling a map by only downloading the newly visible tiles and moving the rest.

In the middleware community, however, the formal definition of asynchrony refers to the capability of sending a message at any time, in either direction. AJAX provides the upstream direction, but HTTP would appear to make server-initiated transmission impossible.

Fortunately, clever developers have exploited a loophole in HTML to address this. Browsers are designed to display pages incrementally while downloading pages from slow Web sites. Using hidden frames and JavaScript tags, HTTP can be used to hold open a long-lived response connection, allowing an application to stream data into the browser.

The simplest way to exploit this is to turn the browser into a 21st-century “green screen” dumb terminal. Manuel Kiessling’s open-source ARSC (A Really Simple Chat) uses AJAX techniques to send input lines upstream, whereas a modified HTTP server that holds open thousands of simultaneous connections rebroadcasts the chat stream to other users. Another example is KnowNow’s (Profile, Products, Articles) SpeedReader product, which is useful for alerting employees to relevant RSS news items.

The subtler and broader implication of combining AJAX with asynchronous event notification is to extend publish-and-subscribe application integration across the Internet.

Several open-source platforms provide powerful abstractions for connecting fully interactive Web UIs to enterprise applications and Web services. Nevow (née Woven LivePage) and Pushlets extend the event loop familiar from model-view-controller GUIs for Python and Java, respectively. Mod_PubSub is designed as an event bus that uses URL path names as topics to implicitly invoke programs written in a wide range of languages. Commercially, KnowNow’s LiveServer provides enterprise-class scalability (and even connects to and from Excel spreadsheets).

The clear benefits of migrating desktop applications to the Web in terms of maintenance, security, and scalability must be weighed against the costs of slower response times, limited interactivity, and less-than-beautiful graphical interfaces. With AJAX, push technology, and the ubiquitous plug-ins for PDF and Flash, the Web is closer than ever to becoming a viable default platform for application development.

Rohit Khare is director of CommerceNet Labs.