AJAX: Dawn of a new developer
The latest tools and technologies for AJAX developers
By Dave Johnson, JavaWorld.com, 10/17/05
- Digg
- Reddit
- SlashDot
- Stumble
- del.icio.us
- Technorati
- dzone
Asynchronous JavaScript with XML, or AJAX, is the crown jewel in the current Web evolution that has been dubbed Web 2.0. Thanks
to the technologies that make up the AJAX acronym, the interactivity of Web applications, such as Flickr, Backpack, and Google,
has jumped by leaps and bounds over the past year. The term was originally coined by James Jesses Garrett of Adaptive Path to describe the shift in development from Webpage-based Web applications to data-based applications. In
data-centric applications, the data requested by a user, such as a list of emails or contacts, can be retrieved from the server
behind the scenes independently of the actual Webpage and can be dynamically inserted into the Webpage, rendering the once
slow and painful Web application experience as one more similar to that of desktop applications.
Although most developers have dabbled with XMLHttp in the past or used Iframes to load data behind the scenes, only now are we seeing conventional developers and companies
adopting these techniques. As with any new programming language or model comes some growing pains as developers learn new
skills and how to best leverage new technologies. This article examines the tools and technologies developers need to get
up to speed with AJAX.
AJAX patterns
Many of the important techniques and AJAX development patterns can be cannibalized from existing knowledge. For example, in applications that send many requests to a server, mechanisms
must track the request order, precedence, timeouts, error handling, and callbacks, much of which has already been considered
in the realm of Web services and, more recently, service-oriented architectures. AJAX developers have a wealth of systems
architecture knowledge at their finger tips. At the same time, a lot of room is available for innovation as the technology
matures, particularly in the field of user interface usability.
Many factors differentiate AJAX development from traditional client-server programming. These differences introduce many new
programming issues, the most notable of which is usability. Due to the dependence of AJAX on JavaScript and XML in the browser,
cross-browser compatibility and adherence to standards is also becoming increasingly important as is JavaScript's runtime performance. Many of these issues seem unique to AJAX due to the menagerie of Web browsers, servers, and technologies that must be understood
to best leverage the technique.
As a result of such varied technologies and the highly coupled client and server environments, AJAX demands a new type of
developer. AJAX developers must understand the traditional Model-View-Controller (MVC) architecture, where strict boundaries
exist between application layers. At the same time, these developers must continue to think outside the client-server box
and use AJAX techniques to reshape MVC boundaries to their will. Most importantly, AJAX developers must stop thinking about
Web applications as collections of pages and rather as a single page. The once obvious sharp and marked distinction between
user interface designers and server architects has been blurred by AJAX; developers with new and varied skill sets are required.
- Digg
- Reddit
- SlashDot
- Stumble
- del.icio.us
- Technorati
- dzone
Resources
- Wiki compilation of patterns for AJAX developers
http://www.ajaxpatterns.org
- XMLHttpRequest tutorial"Very Dynamic Web Interfaces," Drew McLellan (XML.com February 2005)
http://www.xml.com/pub/a/2005/02/09/xml-http-request.html
- JavaScript performance benchmarking
http://blogs.ebusiness-apps.com/dave/?p=14
- AJAX resources
http://www.ajaxmatters.com
- JavaScript specification
http://www.ecma-international.org/publications/standards/Ecma-262.htm
- Introducing JavaScript Object Notation (JSON)
http://www.crockford.com/JSON/index.html
- Venkman JavaScript debugger for Mozilla
http://www.mozilla.org/projects/venkman/
- Microsoft XML DOM reference
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/
xmlsdk/html/e9da2722-7879-4e48-869c-7f16714e2824.asp
- Microsoft Dynamic HTML reference
http://msdn.microsoft.com/library/default.asp?url=/
workshop/author/dhtml/reference/dhtml_reference_entry.asp
- Gecko DOM Reference
http://www.mozilla.org/docs/dom/domref/
- "Migrate Apps from Internet Explorer to Mozilla," Doron Rosenberg (IBM developerWorks, July 2005)
http://www-128.ibm.com/developerworks/web/library/wa-ie2mozgd/
- Mozilla XUL reference
http://www.xulplanet.com/
- Microsoft XAML reference
http://windowssdk.msdn.microsoft.com/library/default.asp?url=/library/
en-us/wcp_conceptual/html/0ff5f36e-dd84-44d1-aa3e-5bb4f147b169.asp?frame=true
- James Jesses Garret introduced the term AJAX in his article "AJAXA New Approach to Web Applications," (Adaptive Path, February
2005)
http://www.adaptivepath.com/publications/essays/archives/000385.php
- JetBrains IntelliJ IDEA
http://www.jetbrains.com/
- Microsoft Visual Studio
http://msdn.microsoft.com/vstudio/
- JSEditor
http://jseditor.sourceforge.net/
- JSEclipse
http://www.interaktonline.com/Products/Eclipse/JSEclipse/Overview/
- ActiveState Komodo
http://www.activestate.com/Products/Komodo/
- XHTML
http://www.w3.org/TR/xhtml1/
- Document Object Model
http://www.w3.org/DOM/
- Cascading Style Sheets
http://www.w3.org/Style/CSS/
- Extensible Stylesheet Language
http://www.w3.org/Style/XSL/
- XForms
http://www.w3.org/MarkUp/Forms/
- Scaling Vector Graphics
http://www.w3.org/Graphics/SVG/
- XPath
http://www.w3.org/TR/xpath
- AJAX.Net
http://ajax.schwarz-interactive.de/csharpsample/default.aspx
- Backbase
http://www.backbase.com
- Bitkraft
http://www.tiggrbitz.com/
- Django
http://www.djangoproject.com/
- Dojo
http://www.dojotoolkit.org/
- DWR (Direct Web Reporting)
http://getahead.ltd.uk/dwr/
- MochiKit
http://mochikit.com/
- Prototype
http://prototype.conio.net/
- Rico
http://openrico.org/rico/home.page
- Sajax
http://www.modernmethod.com/sajax/
- Sarissa
http://sarissa.sourceforge.net/doc/
- Script.aculo.us
http://script.aculo.us/
- Ruby on Rails
http://www.rubyonrails.org/
- For more on AJAX and DWR, read "AJAX Made Simple with DWR," Cloves Carneiro Jr. (JavaWorld, June 2005)
http://www.javaworld.com/javaworld/jw-06-2005/jw-0620-dwr.html
- For more articles on Java development tools, browse the Development Tools section of JavaWorld's Topical Index
http://www.javaworld.com/channel_content/jw-tools-index.shtml
- For more articles on XML, browse the Java and XML section of JavaWorld's Topical Index
http://www.javaworld.com/channel_content/jw-xml-index.shtml
- For more articles on UI design, browse the User Interface Design section of JavaWorld's Topical Index
http://www.javaworld.com/channel_content/jw-ui-index.shtml
Archived Discussions (Read only)