A rewrite of the Rich Internet Application (RIA) article (snapshot) is my latest contribution to Wikipedia following last year’s full rewrite of the Cloud Computing article (which is now finally fairly stable and one of the main authorative sources on the topic; according to the article statistics I’ve just done my 500th edit, or one every eight hours on average so it’s about as up-to-date as you’ll find).
Needless to say I agree wholeheartedly with Mozilla’s Mark Finkle in saying RIA is Dead! Long Live Web Applications. There’s still some niches (eg online gaming, video capture) but with HTML 5 bringing goodies like the VIDEO tag (even if commercial interests prevented standardisation on open standards like Theora) and next-generation browsers (eg Google Chrome) treating plugins like second-class citizens, it’s only a matter of time before Rich Internet application Frameworks (yes there’s a new Wikipedia category too) are relegated to specific use cases and enterprises with controlled client configurations.
Proliferation of mobile and alternative devices (eg Netbooks using Linux and/or ARM processors) is making it increasingly difficult for vendors who were already struggling to maintain penetration rates and having wildly successful devices like the iPhone totally off limits can’t be helping (especially if Apple branch out into the Netbook space as they almost certainly will this year).
Just quickly on that topic, this will be true whether they enter the market with an embedded device (eg iPhone’s stripped back OS X on ARM) or go for a full-blown thick client (eg OS X on Atom) as either way it would surprise me if the AppStore (with all its restrictions) didn’t make an appearance. Unlike Microsoft, while Apple make virtually nothing on software sales to traditional thick clients the AppStore is a license to print money.
The rest of us will be able to enjoy what I call “Native Web Applications” (NWAs for those who insist on TLAs) from the device of our choice with nothing more than a recent, standards-compliant browse like Chrome, Firefox, IE 8 or WebKit. For now I define it as follows:
You don’t have to use this term if you don’t want to (I can’t think of a better one), but please make an effort to avoid referring to such applications as ‘Rich Internet applications’ irrespective of how ‘rich’ the interface appears. And no, using Ajax (which is based on existing web standards) does not make for an RIA, nor does releasing components of an RIA Framework as open source and/or open standards make for an NWA. It’s becoming increasingly important to differentiate and while RIA need not be considered dirty words, the only way to reach everyone will be by going native.
Rich Internet application
Rich Internet applications (RIAs) are web applications that have some of the characteristics of desktop applications, typically delivered by way of proprietary web browser plug-ins or independently via sandboxes or virtual machines. Examples of RIA frameworks include Adobe Flash, Java/JavaFX and Microsoft Silverlight.
The term was introduced in the 1990’s by vendors like Macromedia who were addressing limitations at the time in the “richness of the application interfaces, media and content, and the overall sophistication of the solutions” by introducing proprietary extensions.
As web standards (such as Ajax and HTML 5) have developed and web browsers‘ compliance has improved there is less need for such extensions. HTML 5 delivers a full-fledged application platform; “a level playing field where video, sound, images, animations, and full interactivity with your computer are all standardized”.
With very few exceptions (most notably YouTube which currently relies on Adobe Flash for video playback) the vast majority of the most popular web sites are native web applications. Online gaming is one area where RIAs are prevalent and applications (such as DimDim) which require access to video capture also tend to use RIAs (with the notable exception of Gmail which uses its own task-specific browser plug-in).
- Accessibility of data to search engines and web accessibility can be impaired. For example it took over a decade from release for Adobe Flash to be universally searchable.
- Advanced communications with supporting servers can improve the user experience, for example by using optimised network protocols, asynchronous I/O and pre-fetching data (eg Google Maps). Accordingly, reliable broadband connections are often required.
- Complexity of advanced solutions can make them more difficult to design, develop, deploy and debug than traditional web applications (but typically less so than application software).
- Consistency of user interface and experience can be controlled across operating systems. Performance monitoring and fault diagnosis can be particularly difficult.
- Installation and Maintenance of plug-ins, sandboxes or virtual machines is required (but applications are smaller than their predecessors and updates are typically automated). Installation is typically faster than that of application software but slower than that of native web applications and automation may not be possible.
- Offline use may be supported by retaining state locally on the client machine, but developments in web standards (prototyped in Google Gears) have also enabled this for native web applications.
- Security can improve over that of application software (for example through use of sandboxes and automatic updates) but the extensions themselves are subject to vulnerabilities and access possible is often much greater than that of native web applications.
- Performance can improve depending on the application and network characteristics. In particular, applications which can avoid the latency of round-trips to the server by processing locally on the client are often a lot faster. Offloading work to the clients can also improve server performance. Conversely the resource requirements can be prohibitive for small, embedded and mobile devices.
- Richness by way of features not supported natively by the web browser such as video capture (eg Adobe Flash).
An appropriate Rich Internet application framework is usually required to run an RIA, and needs to be installed using the computer’s operating system before launching the application. The software framework is typically responsible for downloading, updating, verifying and executing the RIA.