We thought we had found the Holy Grail of software development when we started building
Web applications several years ago. Previously we had been developing thick client applications
that required a lengthy installation process every time a new version of the company’s
application was released. The application was deployed to several hundred users scattered
across the country, and much to our dismay we had to watch as the complex and error-prone
installation process continually caused headaches and angst for developers and users alike.
Deploying an application through a browser seemed like a much more palatable option
because it would eliminate the need to install software on the client computer. So, like many
others, our organization moved swiftly to deploying applications on the Web.
Despite the relative ease of deployment, Web applications still had their share of issues.
Most notable from a user’s perspective was the significant loss of rich interactivity provided
by the user interface. Web applications were constrained to the basic set of widgets provided
by HTML. Worse yet, interacting with the server required a complete refresh of the page,
which was disconcerting to users who were familiar with rich client-server applications.
We always considered this constant need to refresh the page a serious liability of Web
applications and often experimented with ways to avoid a page refresh whenever possible;
at one point, we even considered writing a Java applet that would handle the communication
between the browser and the server. However, it soon became apparent that as more Web
applications were deployed, users simply got used to the constant page refreshes, and our
zeal for finding alternatives slowly faded.
Fast-forward five years. Even before the term Ajax was coined, asynchronous communication
between the browser and server using the XMLHttpRequest object was creating a buzz
within the developer community thanks to applications such as Google Suggest and Gmail.
The XMLHttpRequest object has been available in Internet Explorer for several years, but now
that it was being supported by other browsers, it was poised for a breakthrough. We added
Ajax functionality to an existing application we happened to be working on at the time, and
we were so impressed with the results that we thought, “Hey, somebody should write a book
about this.” Thus, the seeds for this book were sown.