Menu

Is AJAX Here to Stay?

October 5, 2005

Jordan Frank

Web development in general recently emerged from a long period of stagnation. While the web browser has become a de facto operating system for the enterprise application, there used to be only two realistic options for developing them:

  1. Build simple web apps that work in any web browser on any operating system.
  2. Take advantage of browser-specific "bells and whistles" to make more advanced web applications. These applications would generally be limited to a single browser on a single operating system or require a special plugin like Flash or Java.

There was no way to create intelligent, interactive web applications without programming for a very specific environment, which led to very poor quality internet applications, or to vendor lock-in. Consequently, many organizations have been reluctant to commit resources towards applications that would only work in very specific, controlled environments, and for good reason.

All of this is changing. Web browsers have reached a critical common threshold that allows powerful web applications to be written in much the same way across platforms, using mature techniques, and without any proprietary plugins. The building blocks of these applications are (X) HTML, CSS, JavaScript, and XML. These work in conjunction with a component that allows the browser to communicate with the server programmatically (XMLHttpRequest), and we have what is now being referred to as AJAX, or Asynchronous JavaScript and XML.

What Is Asynchronous JavaScript?

One of the most frequently discussed aspects of AJAX is the XMLHttpRequest object, which is the component that the browser uses to create this asynchronous interactivity. It's asynchronous because the user can communicate with the server without the page refresh that is usually required. With AJAX, we only get the data from the server that we absolutely need, not the whole page. More importantly, data can be posted to and retrieved from the server after the entire page is loaded. This can be leveraged in creative and powerful ways to create a more fluid browsing experience.

Traditional Web Architectures

AJAX-Based Web Architectures

(Thanks to Jesse James Garrett of Adaptive Path for these illustrations.)

More than Just Hype

There is an enormous amount of hype surrounding AJAX, as well as criticism. It's only natural that there is a great amount of skepticism about whether AJAX will be just another passing fad, but some very big names in software are jumping on the bandwagon, and it seems likely that AJAX is here to stay. Google is generally thought of as an AJAX pioneer, with applications such as Google Suggest, GMail, and Google Maps all making extensive use of the underlying techniques. Microsoft has also announced that it will be releasing an AJAX toolkit called Atlas that will ease the development of rich web applications in ASP.Net. In the last six months, the number of AJAX-based libraries and tools has flourished in both the commercial and open source sectors, creating many options for developers who want to use AJAX with minimal effort. Web-based resources like AjaxInfo (www.ajaxinfo.com) and Ajaxian (www.ajaxian.com) popularize new AJAX tools and techniques with incredible speed.

Other technologies that could be used to develop rich internet applications include XUL, XAML, Java, Flash, and SVG. XUL is a high-performance markup language for creating rich, dynamic user interfaces. It's part of the Mozilla browser and related applications, and is available in Mozilla browsers (like Firefox). XAML is a high-performance markup language for creating rich, dynamic user interfaces. It's part of the Windows Presentation Framework, Microsoft's next generation UI technology, and will be supported in future versions of the Internet Explorer browser. A Java Applet is a program written in JAVA that can be included on a web page. Applets are programs that require the proprietary JAVA plugin from Sun in order to run. Macromedia Flash is a powerful presentation-layer framework that comes preinstalled on most PCs and Macs. It's possible to use Flash to build web-based user interface components that are highly configurable. SVG is an XML-based graphics language that describes images with vector shapes, text, and embedded raster graphics. It can be integrated with XML data sources or SMIL (Synchronized Multimedia Integration Language). It has good interoperability with CSS and JavaScript. Therefore SVG will not compete with AJAX but complement it nicely once it matures.

When compared to competing UI technologies like XUL, XAML, Java, Flash, and SVG, we begin to see why Ajax is such a big deal. Many of these alternatives offer opportunities for similar functionality with as-good-if-not-better UI capabilities, but either force the user to install plugins, as is the case with Flash, Java Applets, and SVG, or limit her to a specific browser or operating system, as is the case with XUL and XAML. In fact there are many examples of Flash and SVG being used in conjunction with AJAX to provide an even more immersive user experience. Ajax offers the chance for developers to start writing rich applications without learning new skills.

AJAX in the Enterprise

Is AJAX ready for the Enterprise? The answer to this question may lie in its relationship to open standards, vendor lock-in, conformity to popular skill sets, and web services and service-oriented architectures.

  1. Open standards are preferred by corporations who do not want to be tied to a specific vendor or plugin for their mission-critical systems. The building blocks of AJAX, (X)HTML, CSS, JavaScript, and XML, are all open standards supported widely across different browsers and platforms. Some alternatives to AJAX do not enjoy the same level of ubiquity. For example, XUL and XAML are both browser dependent, while Java, Flash, and SVG all require proprietary plugins.
  2. Vendor lock-in has always been an issue for IT investment, and continues to be on the web. By avoiding proprietary technologies on which to build large-scale enterprise applications, firms are mitigating some long-term financial risk. AJAX is a set of technologies that are based on open standards and partially avoids the issue of vendor lock-in.
  3. Another big selling point for AJAX is the way web developers who are familiar with the underlying technologies can begin developing with AJAX relatively quickly, while the learning curve for alternative technologies is comparatively steep. By leveraging the synergies of skill transference, firms do not have to invest in significant retraining of their developers.
  4. Service-oriented architectures (SOA) have been gaining popularity in major enterprises around the world for several years now. SOA is an approach to building large distributed systems on a composite set of loosely coupled business services. Just about every major enterprise software vendor has an SOA strategy and product suite match. In many SOA models, business services are exposed through XML web services, and AJAX clients are ideal consumers of these services.

The question then becomes, is the AJAX platform powerful enough to build enterprise-quality Rich Internet Applications (RIA). This issue is highly debated in the web development community (http://blogs.ebusiness-apps.com/dave/?p=32). Here are some of the arguments against AJAX for RIA:

  1. There is a stigma attached to using JavaScript to accomplish any intensive processing tasks since JavaScript is an interpreted scripting language, and quite inefficient. That said, the average desktop computer is becoming more powerful. In the past, most JavaScript applications only performed very simple tasks where efficiency is not a concern, and so techniques for writing efficient JavaScript are not widely known. As AJAX matures, coding standards will improve and push the language to its limit. As this happens, the efficiency argument against using AJAX for Smart Client implementations will weaken.
  2. As an interpreted language, JavaScript must be sent up to the client as source code. This causes problems for protecting intellectual property, since the source code must be distributed to anyone using the application. There are techniques for obfuscating the JavaScript, but like all copy protection they just make it a bit harder to steal, not impossible. This argument fails for a number of reasons, though.

First of all, Java suffers from a similar problem, with source code weakly protected in its distributed form. This, however, has not stopped businesses from deploying large Java-based applications. Another reason this argument fails in an SOA environment is that the AJAX application doesn't need to possess all the business secrets required for the program; they just need to orchestrate the business services that perform these activities.

This broad argument against using AJAX in the RIA realm may be somewhat short sighted. Within an enterprise, the need for interoperability may outweigh more fine-grained standards centering around performance, IP, and code inefficiencies. Consequently, looking into the future, approaches like AJAX which focus on platform independence and RIA will become important in the realm of enterprise applications.

Conclusion

The trend in web application development is towards open standards and vendor neutrality. Current HTML web applications don't provide the user experience users have come to expect, so the development community has long needed a viable technology suite to develop rich internet applications. AJAX fits all of these requirements and has experienced significant uptake by developers and enterprises over the last year. It's always challenging to predict technology trends, but if we look back at Java's evolution we can see that there are a number of similarities.

A decade ago, Java was going to revolutionize the way that developers built applications. Instead of building different versions of an application in order for them to run on different operating systems, developers could target the Java Virtual Machine, and then their software would run on Macs, Windows, and Unix-based platforms without any further customization. Huge corporate information systems are being built on the Java platform, and a number of large client applications are also built using Java. Java also suffered from performance and usability issues related to poor user-interface libraries, but overall it was quite successful.

As internet applications became more prevalent, we ran into the same problems of being forced to either write software to target a specific environment, or be very limited in the quality of the user experience. Technologies like HTML, CSS, and JavaScript gradually evolved with the promise of providing a platform on which very powerful applications could be based, but that promise was unfulfilled until now. Now that all the major web browsers have relatively consistent support for the technologies AJAX requires, AJAX will become a crucial piece in the RIA puzzle and will offer the potential for dramatically more powerful and user-friendly web applications.