The ABC's of RIA

Frameworks for rich Internet applications can be lightweight or heavyweight, open or closed, and almost anything in between

Rich Internet applications, or RIAs, comprise a spectrum of application types and technologies. The lightweight end of the spectrum is anchored by AJAX (Asynchronous JavaScript and XML) or Web 2.0 applications, which add richness and responsiveness to standard Web sites with asynchronous JavaScript libraries: that's the "AJA" part of "AJAX." The "X" stands for "XML," but these days XML is not the only data format used by such libraries; it's also common to see asynchronous data exchange in JSON, HTML, and plain text formats. At this point, many people have stopped treating "AJAX" as a specific acronym and talk instead about the generic "Ajax" class of applications.

Ajax is powered by several technologies. One key piece is Dynamic HTML, a browser feature that allows JavaScript libraries to manipulate the contents of a page on the client, even after it has been initially displayed. Another key piece is XMLHttpRequest, which is a lightweight back channel to the server that JavaScript can call from the client.

Ajax is used to extend a wide variety of Web server application technologies. You can, of course, use it to enhance otherwise static HTML pages with data-driven content, but it's more customary to couple Ajax on the client with scripted Web servers. Ruby on Rails makes adding Ajax features especially easy. Microsoft ASP.Net AJAX, as the name implies, enhances ASP.Net sites with Ajax features, and includes Visual Studio integration; the Microsoft AJAX Library can also be used with other types of sites. Integrating Ajax libraries with Java/JSEE sites can be done manually with some effort, but tools and libraries such as the Google Web Toolkit, TIBCO General Interface, and ThinkCAP JX make it much simpler.

The heavyweight end of the RIA spectrum is shared by .Net Smart Client applications and Java Applets deployed over the Web. In both cases, the client computer needs to have a fairly large (more than 10MB) runtime engine installed before it can meaningfully download the RIA.

The middle of the RIA spectrum is occupied by runtime engines, development tools, and libraries that do more on the client than simple Ajax, and do it more quickly, but don't have the overhead of the .Net Framework or the Java JRE. Adobe Flash, Flex, and Shockwave are midsized RIA engines. Curl falls in this category, as does OpenLaszlo, although OpenLaszlo can generate both Ajax and Flash applications.

Several technologies are under development in the midrange. Microsoft Silverlight 1.0 incorporates a subset of the .Net Framework and supports JavaScript; Microsoft Silverlight 1.1 incorporates a larger subset of the .Net Framework and supports JIT-compiled C#, Visual Basic .Net, IronPython, and (eventually) IronRuby as well.

Adobe Flex 3.0 promises much faster runtimes than Flex 2.0, and Adobe AIR promises a cross-operating system runtime that allows developers to use their existing Web development skills to build and deploy rich Internet applications to the desktop. Meanwhile, Google Gears gives you a LocalServer, a Database, and a WorkerPool so that you can make Web applications run on the desktop.

InfoWorld has reviewed a number of RIA toolkits and frameworks, including open source AJAX packages Dojo, Google Web Toolkit, Microsoft Axis (now ASP.Net AJAX), OpenRico/Prototype, Yahoo AJAX Library, and Zimbra's Kabuki AJAX Toolkit; enterprise AJAX tools Backbase, Bindows, JackBe, and TIBCO General Interface; Adobe Flex 2.0; and Curl 5.0. Many of these reviews include links to recorded screencast demos that show just what the tools can do. Finally, see InfoWorld RIA TechIndex for additional coverage.

Copyright © 2007 IDG Communications, Inc.

How to choose a low-code development platform