A comparison of Rich Internet Applications (RIA) frameworks
Tuesday 26th of February 2013 02:22:17 PM
Last modification date: May 23, 2010
- Adobe Flex
- Adobe AIR
- Microsoft Silverlight
- Laszlo Systems OpenLaszlo
- Moonlight (Mono's port of Silverlight)
Adobe Flex is probably the most well-known RIA framework, it was launched back in 2004 and is already in its fourth version which was released on March 21, 2010 (if I remember correctly).
Flex 4 and its accompanying IDE, Flash Builder 4 make for an extremely compelling Rich Internet Application platform. Improvements and additions to Flex 4 include:
- The new skinning and component architecture, Spark. The most important improvement of the new architecture as compared to the previous one, is the complete separation of a component’s visual elements from its logic making it much easier for independent development of both the logic and the visual appearance of a component.
- Improved state management (states let you vary the content and appearance of a component or application, typically in response to a user action).
- FXG, which is a declarative syntax for defining static (vector-based) graphics.
Advantages: I would say that the principal advantage of Flex for RIA development is the omnipresent Flash Player, that is, according to Adobe the penetration rate for Flash 9 is at least 98.1%. I would think that no other run-time comes close to that figure. Furthermore, as RIA platforms go, Flex is mature and hence has a thriving (open source) community around it.
An additional consideration with regards to RIA platforms is the possibility (or impossibility, in the case of Apple's iPhone, iPad, and iPod touch devices) to develop applications for the latest generation of mobile phones. For example, Google's Android OS version 2.2 (Froyo) supports Flash 10.1 making it possible to develop application for said OS with Flex (and with Adobe AIR 2.0, as well).
Disadvantages: ActionScript 3, although a decent language (it's based on ECMAScript) misses things like private constructors (bye-bye to a straightforward implementation of the Singleton pattern), generics, enums, and method overloading. A serious drawback of both Adobe Flex and Adobe AIR is their lack of support for multi-threading; however, Flex provides an asynchronous programming model that mitigates this issue somewhat.
Adobe AIR is the logical continuation of Flex in that it allows Rich Internet Applications to be developed for the desktop, basically adding off-line capabilities to Rich Internet Applications. Adobe AIR applications can both access the file system and persist data to the embedded SQLite database engine.
Advantages: Adobe AIR applications run (almost identically) on all three major operating systems: Microsoft Windows, Mac OS X and Linux. Hence, if you are looking to reach as large a market as possible (or at least not be limited by the non-availability of the run-time for any given OS), Adobe AIR makes a lot of sense.
Disadvantages: A serious drawback of both Adobe Flex and Adobe AIR is their lack of support for multi-threading; however, both Flex and AIR provide an asynchronous programming model that mitigates this issue somewhat.
Silverlight seems to be Microsoft's response to the dominance that Adobe's Flash has in the market with regards to sites that are heavily focused on multi-media (that is, video). For example, YouTube.com uses the Flash Player to enable viewing of videos (in the Flash Video format - FLV). And, it's not only YouTube, literally every other video site out there uses FLV.
Advantages: Having support for multiple (programming) languages is definitely an advantage for Silverlight. That is, being able to implement your RIA application in either C#, (Iron)Python, (Iron)Ruby, VB.NET or any of the other .NET-supported languages is fantastic.
Disadvantages: It is unclear what proportion of computers currently have the Silverlight run-time installed. Microsoft mentioned something in the region of 25%. Obviously, Microsoft (with system updates and service packs, and what not) will actively continue to push the Silverlight run-time and eventually, it will reach the so-called tipping point (when one can assume that the majority of users have a version of Silverlight installed). Furthermore, it makes sense for Microsoft to include Silverlight as part of Windows 7. However, at the moment, Silverlight does not have the same ubiqtuous presence that Adobe's Flash Player has forcing you to include the run-time as part of the download.
OpenLaszlo is interesting in that it supports multiple run-times, that is, you can compile your application to execute in either the Flash Player (8, 9 and 10) or straight in the browser as a DHTML application.
Moonlight is a port of Silverlight to the Mono platform.
As far as I can make out, Curl is actually quite popular in Japan and has been used (and is currently being used) by some moderately heavy-weight Japanese companies.
Disadvantages: It is arguable that those platforms that have not attracted a large number of developers are less attractive. However, if a technology is sufficient for your needs and you can find a developer or developers to develop with it, the absolute size of its developer community is probably of secondary importance, that is, it is the quality of its developer community that counts. However, saying that, Curl does seem to be a minor player (at least the majority of developers I have spoken to, confess to never having heard of it before) and you might want to factor that in to the equation.
JavaFX is Sun's RIA platform. Sun is definitely trying to target the mobile (phone) market as much as the desktop market with JavaFX. JavaFX is a relative late-comer to the RIA scene, but should not be discarded out of hand in favour of either AIR/Flex or Silverlight.
Advantages: Obviously, a strong selling point for JavaFX would be its tight integration with Java and the massive eco-system that Java has around it.
Disadvantages: JavaFX's lack of maturity is, at the moment, its weak point. For example, it is lacking a lot of JavaFX-native controls (for example, a tree control). Now, it is quite straight-forward to wrap Swing controls and subsequently use them in a JavaFX-project but it's obvious that that is a bit of a temporary measure. Sun has mentioned that they will address this issue in future versions.