What’s an RIA?
An RIA, or rich internet application, is a web application that behaves like a desktop application. Before RIAs began popping up, most web applications were composed of static pages.
Unlike desktop applications, any interaction with a web page usually resulted in reloading a whole new page. Desktop applications, on the other hand, had much better user interactivity because all of the processing was being done natively on the user’s machine, resulting in a more seamless user experience.
As a result, software developers began to ask themselves, “Should my product be a desktop application or a web application?” It has always been a fair question, because both types of applications have very strong pros and cons. Desktop applications have smoother user interactivity, but require distribution and dealing with software updates when the software has shipped. Web applications, on the other hand, are easily accessible from the web, freeing it from the problems related to software distribution and updates, but were very lacking in user interactivity.
So how can we have the best of both worlds? RIAs are the best of both worlds. RIAs are distributed through the web, and have very rich user interactivity.
Some of the most popular ones today are jQuery (especially with jQuery UI), MooTools, YUI (Yahoo! User Interface library), and ExtJS. All these libraries include RIA components like grids, graphs, and complex form elements, as well as utilities to handle Ajax.
ICEfaces is good to use if your team is made up mostly of Java developers, if your web application doesn’t require other complex components that ICEfaces doesn’t offer, or if your web application is event-driven. If your app is event-driven, make sure that you understand that ICEfaces doesn’t offer true “server pushes” in the sense that HTML5, Flash Builder 4, and Silverlight can. Instead, it uses a long polling method to simulate server push.
Sites using ICEfaces include Boeing, NASA, Union Pacific, T-Mobile, and Bank of America.
Adobe Flash Builder 4
Flash Builder 4 applications can do this because they are embedded into HTML pages, meaning that the browser itself has no effect on the application’s performance. This means that you can run even the most complex web applications correctly in IE6 if you wanted to (this is of course a simplification because the Flash plugin/engine regularly gets updated, so it would slightly depend on the user’s version of the plugin). These applications are usually accompanied by server-side processing like a Java backend and need the Flash Builder 4 IDE for development.
Adobe Flash Builder 4 is good to use if your web application requires complex graphics, if your team is made primarily of Java developers (because it works well with Java), or if your application uses an event-driven architecture. Sites using Flash for web applications include Mint.com, Flickr, and Hyundai.
Silverlight is basically Microsoft’s version of Adobe Flex/Adobe Flash. It has been gaining some traction, but doesn’t seem to be catching up to Adobe Flash in terms of popularity. Silverlight applications are obviously bound to have a .NET backend because it’s a Microsoft product.
This means, though, that you’ll have tighter Silverlight/.NET integration versus Adobe Flex/[some server-side scripting language like PHP]. Silverlight is a good option if your web application requires complex graphics, if your team is made primarily of .NET developers, or if your application uses an event-driven architecture. Sites that use Silverlight include Netflix.
Since HTML5 specifications is not yet complete, and IE9 has not yet been released (read about new IE9 features), you’ll need to wait a little bit before building a production-ready HTML5 web app. Currently, all major browsers support HTML5 except for IE8 (go figure). Since IE8 has a major portion of the browser market, HTML5 really won’t go mainstream until IE9 is released.
The Future of RIAs
Are HTML5 apps the future of the internet? Not exclusively. As long as there are creative and innovative web developers out there who are driven to create something special, there will always be new technologies that can provide amazing things that HTML5 or any other web technology won’t be able to offer.