I originally published this article on the Developer.com in December of 2006, hence the holiday twist in the name and the content. AJAX is the one of the latest buzz acronyms. It stands for "Asynchronous JavaScript and XML" and actually does not define a single new technology, but a group of mature technologies used in conjunction with one another. In this article, I will look at AJAX and the most popular frameworks for AJAX currently on the market, from the ten-thousand foot view.

Another similar acronym, which also defines a combination of established technologies, is DHTML. DHTML, or Dynamic HTML, is a client-side scripting of the Document Object Model (DOM), and the manipulation of Cascading Style Sheets (CSS) to achieve new functionality or effects in the UI. AJAX is much more in the spotlight right now than DHTML, and greatly overlaps with the DHTML in its functionality, with the exception of one feature that separates it from the DHTML and rightfully makes it a separate entity. This feature is a nice and easy way to make asynchronous requests back to the server, in the background and without interrupting the current UI on the screen.

Notice that I said a "nice and easy" way, because the ability to make asynchronous requests (or "hack" a way to make asynchronous requests) existed long before Jesse James Garrett coined the term AJAX in February 2005* (wikipedia) or before modern AJAX methods existed. What is relatively new is a widespread support in the modem browsers of a new XMLHttpRequest scripting object, which acts as a getaway for the behind-the-scenes communication with the server and that is the cornerstone for this unique feature that makes AJAX work.

The evolution of the Internet browser applications-Internet Explorer, Netscape, Mozilla, and now Firefox-and not the enhancements of the current web technology standards for the HTML, CSS, or XML fueled the development of AJAX technology. As developers of web applications tried to hack a way to emulate desktop UI behavior, such as automatic updates based on the user’s actions, the clear need for this functionality resulted in the introduction and support of the XMLHttpRequest JavaScript object in browsers.

AJAX also picked up a lot of momentum because of the whole Web 2.0 movement and a few very clever web applications developed by the good folks at Google-such as Google Maps, Google Suggest, Google Gmail, and so forth-that served as a fantastic advertisement of how much richer the UI can now be inside of the old browser. (Who said you can’t teach an old dog new tricks?)

The fact that very clever user interface effects can be done without a page refresh even created a new methodology, or a way of thinking, and designing entire web applications within one page. Numerous articles, books, and frameworks sprang up around AJAX and its methodology.

I thought of listing the AJAX frameworks and technologies I will look at in this article, with a holiday twist. The full version was too long to write, but here is the ending of this article’s theme:

On the twelfth day of AJAX,

my browser sent to me

Twelve Dojo samples,

Eleven Google Web Toolkits,

Ten Backbase widgets,

Nine SAJAX functions,

Eight SmartClient pages,

Seven Yahoo! YUIs,

Six DWR methods,

Five Script.aculo.us interfaces,

Four Spry effects,

Three Bindows windows,

Two IceFaces faces,

And a partridge encoded in a JSON-RPC!

There are many more frameworks and I will mention some of them at the end of the article, but these have the most momentum to gain market share. All of the frameworks, toolkits, or SDKs are based on the asynchronous communication methodology, and many also offer extra features to make them more marketable.

Framework Server Language Commercial, Open Source, or Other Special Features
Dojo Open source Charting engine, custom widgets
Backbase Java Commercial Custom widgets
IceFaces Java Commercial Direct-to-DOM rendering technology, server push, JSF tags
Google Web Toolkit Java Open source Browser history management and the auto Browser compatibility
Script.aculo.us Open source DHTML effects
Bindows 2.0 Commercial Windows look and feel
DWR Java Open source RPC emulation in Java and JavaScript over HTTP
SmartClient Commercial Works with XML and has declarative binding to WSDL
JSON-RPC Protocol Standard XML protocol
Spry framework for AJAX Open source Custom controls and look and feel, HTML-centric design
Yahoo! User Interface Library (YUI) Open source Event class, custom widgets, CSS recourses