Introduction
In the last few weeks, quite a few RIA framework announcements and/or rebrandings were announced:
- Apollo from Adobe, which is a runtime to be able to enable richer RIA applications on your desktop.
- Silverlight from Microsoft, which is a browser plugin to provide a richer RIA browser experience.
- JavaFX from Sun, which is also a a runtime to enable richer RIA applications on your desktop.
These three frameworks are all in some way also related to Flash/Flex from Adobe.
In this article, I'll be making a first stab at comparing these four frameworks. It should help you to get some perspective and initial understanding on the differences and the similarities.
The goal of all these frameworks is be able to build Rich Internet Applications more easily and to make the user experience as rich as possible. Currently a lot of this kind of functionality is being built with AJAX (asynchronous Javascript, CSS, DOM manipulation and XML) and Flash/Flex. Manual construction of applications with the four AJAX components is quite a pain, and thus companies are trying to create the silver bullet for easy creation of RIA applications. Creating applications with Flash/Flex is relatively easy and makes the applications really rich, but it is vendor-specific (Adobe). Note that recently Adobe made Flex open source (note that this is not the same as the Flash runtime, which stays closed source). Some of the newly announced frameworks are more open source (JavaFX) than others (Silverlight).
To make the comparison easier, I've created a table that lists different aspects of the frameworks I found interesting to have detailed out, and for each of those aspects, how the four frameworks fit in.
|
Apollo
|
Silverlight
|
JavaFX
|
Flash/Flex
|
---|
Definition
|
"Apollo is the code name for a cross-operating system runtime being developed by Adobe that allows developers to leverage their existing web development skills (Flash, Flex, HTML, JavaScript, Ajax) to build and deploy rich Internet applications (RIAs) to the desktop."
"[Apollo is] a runtime complementary to the browser, to bring webapps to the desktop, so richer and more interactive RIAs"
|
"Silverlight is a cross-browser, cross-platform plug-in for delivering the next generation of Microsoft .NET–based media experiences and rich interactive applications for the Web"
|
“JavaFX Script takes advantage of the Java Runtime Environment's (JRE) ubiquity across devices and enables creative professionals to begin building applications based on their current knowledge base. It also uses Java technology's "write once, run anywhere" capability to help realize a future where consumers can access content whenever and wherever on any Java-powered device.”
|
Flash: "[...] is software for creating rich, interactive content for digital, web, and mobile platforms." “[...] it provides the tools you need to deliver an engaging user experience.”
Flex: “[...] it is an application development solution for creating and delivering cross-platform rich Internet applications (RIAs) within the enterprise and across the web.” It has a client-runtime which is based upon the Flash Player.
How is Flex different from Flash: “Flex and Flash have complementary strengths. Flash is the leading authoring tool for web developers, multimedia professionals, animators, and videographers who want to create rich interactive content. Flex 2 products enable more application developers to leverage the powerful Flash runtime to create data-driven RIAs. In addition, developers can use Flash and Flex Builder together to add rich interactive elements to a structured, Flex based application.”
|
Status
|
Alpha, public beta in US summer, v1.0 early winter 2007
|
1.0 beta
|
Super alpha
|
Flash: version CS3
Flex: version 2
|
Runtime
|
6MB
|
About 2-4MB
|
2-4MB maybe
|
Flash: client-runtime uses Adobe Flash Player 9: 1.1MB.
Flex: client-runtime uses Adobe Flash Player 9, 1.1MB.
|
Technologies
|
Runtime outside browser
|
Plugin for browser + based upon existing WPF/E (.NET based) platform for Windows and Mac
|
New language F3+runtime outside browser+java webstart/applets+Swing+Java2D
|
Flash: IDE to build Flash applications with ActionScript.
Flex: "The Flex [UI] application framework consists of MXML, ActionScript 3.0, and the Flex class library. Developers use MXML to declaratively define the application user interface elements and use ActionScript for client logic and procedural control. Developers write MXML and ActionScript source code using the Adobe Flex Builder™ IDE or a standard text editor."
|
Platform
|
Windows + Linux + Mac
|
Windows browser + Mac browser
|
Windows + Linux + Mac
|
Flash/Flex player client-runtime: Windows + linux + mac
|
Licensing
|
Licensed (not opensource)
|
Licensed
|
OSS (GPL)
|
Flash: closed, Flex: OSS
|
Interesting
links
|
Sample Apollo apps: Apollohunter
|
|
Open source JavaFX wiki: wiki
|
|
Conclusions
Since Silverlight is meant to be running in the browser, it should be seen much more as a competitor to Flash/Flex than to the Adobe and Sun solutions, which are runtimes running outside the browser. Currently Flash/Flex has of course a large installed base already. Silverlight has the advantage it can easily be put on every Windows computer by letting it piggy-back with some automatic Windows update. The Apollo and JavaFX solutions are a very interesting new development where much richer internet applications can be built, because they run outside the browser, thus giving much more freedom to build richer GUIs. Some interesting questions that remain for these runtimes are:
Finally, here are a few other interesting developments in this area:
The Mono project is going to try to
port Silverlight to Linux.
MS just
announced a new Silverlight app Popfly that allows users to create mashups (like Y! Pipes).
A lightweight JRE for Java 6 is indeed
not a rumor and thus the amount of runtime to download is significantly reduced.
Sources
Sources for this article were:
Other Resources
For more detailed information see:
Update 02 June 2007:
This week of course Google Gears came out.
Here's shortly how it relates to Apollo and Dojo offline. Google is working with Adobe to get it integrated with Apollo. Together with Adobe and Mozilla it is also trying to make Gears an industry standard. Note that you can use each of the 3 components also seperately, you don't need to only use it for writing synchronzation software.
Here's another overview of these three and how they relate: Apollo, Silverlight, Gears.
Here's a good
landscape overview of RIA tools and why Flex could be a good way of building user interfaces, even to Java developers.
As John said in the comments, don't forget Java
Applets (aren't they
extinct? ;-) and
XUL.