Ajax Code Libraries
No single company or vendor has a monopoly on Ajax. Instead, there are many code libraries from which you can power your Ajax components. Some of the most popular choices are described below. Others are discussed in the Wikipedia's Ajax article. If you are skilled in programming and have ambitions to create your own Ajax library, Jeremy Keith's book entitled Bulletproof Ajax provides a good conceptual approach to writing code that is accessible and well structured.
Spry is the name of Adobe's Ajax framework. Due to the integration of Spry with Dreamweaver, which now has a Spry toolbar, the Spry code library is the logical choice for someone authoring a Web site with Dreamweaver. This Web site, for example, was created with Dreamweaver, and the Spry tools were used to create the collapsing panels that the navigation sidebar comprises.
Yahoo User Interface (YUI) Library
True to its name, the Yahoo User Interface (YUI) library contains a fascinating array of Ajax widgets you can put on a Web page to enhance the user interface. Researchers at Yahoo are working to codify the design patterns that are appearing in these widgets. The design pattern library is at developer.yahoo.com/ypatterns.
Google is one of the most agressive companies creating Ajax code. The Google Ajax library contains Google's AJAX Search API, the Google Calendar, Google Maps, Google Chart, Google Checkout, and the Google YouTube API. The following Search, for example, is powered by Google's search API. If you try this example to perform a search, notice how the search results appear in the midst of this page without requiring the rest of the page to refresh. Behind the scenes, the Ajax code uses the XMLhttpRequest object to perform the search asynchronously. Notice how the footer at the bottom of this page slides down when you perform a search. Prior to Ajax, these kinds of client/server interactions would have required the total page to refresh. With Ajax, you can power a page from multiple servers at once. The term mashup refers to the act of placing on a single Web page components interacting asynchronously with multiple servers or data sources.