AJAX
- For other uses of the word, see: Ajax
AJAX or Asynchronous JavaScript and XML is a term describing a web development technique for creating interactive web applications using a combination of:
- HTML (or XHTML) and Cascading Style Sheets for presenting information
- Document Object Model, JavaScript to dynamically display and interact with the information presented
- XML, XSLT and the XMLHttpRequest object to interchange and manipulate data asynchronously with the web server (although AJAX applications can use other technologies, including preformatted HTML, plain text, and JSON, as alternatives to XML/XSLT).
Like DHTML or LAMP, AJAX is not a technology in itself, but a term that refers to the use of a group of technologies together.
AJAX applications use web browsers that support the above technologies as a platform to run on. Browsers that support these technologies include Mozilla Firefox, Internet Explorer, Opera, and Safari.
Table of contents |
How AJAX applications differ from traditional web applications
Traditional web applications allow users to fill out forms, and when these forms are submitted, a request is sent to a web server. The web server acts upon whatever was sent by the form, and then responds back by sending a new web page. A lot of bandwidth is wasted since much of the HTML from the first page is present in the second page. Furthermore, this method cannot create highly interactive user interfaces that work like those of native applications.
AJAX applications, on the other hand, can send requests to the web server to retrieve only the data that is needed, usually using SOAP or some other XML-based web services dialect, and using JavaScript in the client to process the web server response. The result is more responsive applications, since the amount of data interchanged between the web browser and web server is vastly reduced. Web server processing time is also saved, since a lot of this is done on the computer from which the request came.
Pros and cons
Like DHTML applications, AJAX applications have to be tested rigorously to deal with the quirks of different browsers. The advantage of using the technology, however, is the speed at which an application runs and responds to user interaction.
Some application developers argue that AJAX ignores a common web development technique of separating presentation markup and code fragments (architectures such as Model-view-controller adhere to this philosophy). Defenders of AJAX state that developers shouldn't be overly strict when using such architectures, and that some code on an HTML page can be beneficial to the usability of a web application, as long as this is not abused.
Adoption of AJAX
Whilst it has existed for some time, in early 2005 a number of seminal events have popularised the technique. Firstly, Google used asynchronous communication as a basis for prominent interactive applications including Google Groups, Google Maps and Gmail. Secondly, the name AJAX was coined in AJAX: A new approach for a new application, which quickly came into popular use and helped raise consciousness of the technique.
There are now a rapidly growing group of applications which use AJAX as a method for improving web page interactivity, in part due to the increasing number of application toolkits (e.g. Ruby on Rails) that allow programmers to easily implement it.
Criticism of AJAX
There have been some critics of the term AJAX, claiming that the Adaptive Path consultancy who created it [1] are using it as a marketing vehicle (and as a meme) for previously used techniques [2] [3] [4].
It has been pointed out the AJAX technologies did not have a common name before, and that some welcome a unifying term for the process. However it is also reported that the Google engineers who have created the most prominent applications using this technique consider their technologies as 'Javascript' [5].
AJAX is not a new approach of building software. From a higher perspective the presentation layer is like a form and a programming layer behind handling the events. This kind of programming is very well known in older programming environments like Delphi, MFC, Visual Basic, and Windows Forms, just to name a few. Applications using this model of programming have been around for years: Microsoft Outlook Web Access using WebDAV and the Web based ERP system P2plus [6] using web services directly from the browser. However, because there are no standards available for the communication model behind previous implementations, all use proprietary extensions.
A new aspect to AJAX is that there are now multiple browsers that can be used to realize this type of application, as opposed to earlier technologies which were frequently limited only to Microsoft's Internet Explorer.
AJAX and accessibility
For some uses of AJAX it's hard or impossible to create fallback for browsers that do not support AJAX technologies. This limits use of AJAX to desktop, graphical browsers and is against accessibility guidlines (WAI).
In other cases, web developers use AJAX to simply replace portions of a web page instead of performing heavier manipulation in the web browser. Non-AJAX users load the whole page, but AJAX users only load fragments of pages. This allows the developers to preserve the experience of users in non-AJAX environments, including all accessibility concerns, while giving those with capable browsers a much more responsive experience without full page reloads .
External links
- AJAX + J2EE in Action An article on how JavaRSS.com is taking advantage of AJAX architecture.
- Ajax errors An interesting article by Joshua Gitlin about AJAX and how it can be utilized
- Ajax: A New Approach to Web Applications, by Jesse James Garrett. The original article which coined the term
- AJaX: Two steps forward... Two steps back? by John Reynolds.
- Ajax, promise or hype? by Peter-Paul Koch.
- Is AJAX worth adopting? by Harshad Oak.
- AJAX Matters an informational site (portal) about AJAX
- Case study of using AJAX in a CRM system by Espen Antonsen.
- Using AJAX with J2EE presented by the Java BluePrints Team.
- AJAX Design Patterns In-progress work to capture patterns for designing AJAX applications by Michael Mahemoff.
Categories: Web development software | Software architecture