Rich Internet Application Platform Shoot-out

I’ve been tracking the Rich Internet Application (RIA) framework technology scene lately.

That’s a broad category. As the technology is put to use, its applicability grows into other domains. Mobile or otherwise-embedded devices, set-top boxes or game consoles, tables, and stand-alone or kiosk applications are all targets now. Web applications are still the largest niche for RIA platforms, so I’ve compiled a list of the web-oriented technologies for comparison. Since I most enjoy writing web applications in Ruby, I’m tracking the way each platform supports Ruby integration—specifically Ruby on Rails.

Here are the contenders, in order of fitness for web application development, according to my own opinion:

1. OpenLaszlo

  • Development tools are few but seldom needed. Flash 8 and a good editor suffice.
  • They beat everyone else to the punch: OL3 has been stable since mid-2006; OL4 has been stable for a few months
  • Language is LZX, an XML + EcmaScript variant.
  • Clear XML syntax (no messy namespaces, doesn’t rely on XSLT)
  • 3.3.3 release only works with Flash plugin, which is not slated to become open-source
  • Also runs in browser alone with DHTML engine (in OL4)
  • Open source everything else, including free tools, ease of contribution, available community
  • Strong cross-platform support. I’ve used it on Windows, Linux and OS X.
  • No way to run Ruby in-place, although it can be a front-end for Rails
  • Widget toolkit is custom “LPS” widgets

2. Silverlight

  • Seems farther ahead than Apollo with respect to tools and availability
  • Tools are good but proprietary (Expression, Visual Studio)
  • XAML + DLR means you can use C#, which I always prefer over JavaScript
  • No Linux support until the Mono project writes it
  • May eventually become somewhat open-source. Maybe. My guess is the runtime will never be open.
  • May eventually run Ruby, but can probably integrate with Rails as a front-end currently
  • Browser plugin only, although the code is “portable” to other CLR runtimes
  • No widget toolkit yet, although it’s reportedly in development

3. Apollo

  • Tools are lagging behind, except for FlexBuilder, which is proprietary
  • Still only an “alpha” release
  • MXML/Actionscript language – looks like a mess compared to LZX, in my opinion
  • Open-source tools. Claims an open-source runtime by the end of the year.
  • Windows and OS X support now with Linux coming soon
  • Includes a built-in WebKit browser component
  • Can’t run Ruby, but demos of it as a Rails front-end exist
  • Desktop-app-like integration with file choosers and native installers
  • Flex widgets

4. JavaFX

  • Almost no tools yet, except those for Java which would be unfair to count here.
  • JavaFXScript, which is not Java nor JavaScript. New language, some interesting features, but no public libraries yet.
  • Open-source
  • Runs on JVM, which is also open-source
  • Can run Ruby via JRuby via Java, although there is no direct JavaFXScript<->Ruby integration yet that I’m aware of
  • Could certainly be a Rails front-end
  • Cross-platform, can use Java for filesystem access(?)
  • Browser or WebStart, which is semi-desktop
  • Swing widgets
  • Can use any Java library
  • Worst product name of the lot

There are a few items missing; I’m not considering every facet of these technologies (commercial support, accessibility features, ease of deployment, etc., spring to mind). I skipped XUL because I see Firefox-only as a serious limitation, although things like Songbird are quite impressive. I didn’t include Flex itself as Apollo seems to be Adobe’s strongest entry in this arena.

I like the article that Tech Team Lead News has on the same topic. Ryan Stewart has a good post that looks at Apollo and Silverlight from different web developer roles. They both missed OpenLaszlo, which seems to be common in the midst of the marketing blitzes from Microsoft and Adobe.

I’m interested in what the community thinks about my assessments. What features are the most important to your consideration? What experiences have you had with these platforms that would rearrange my “best-liked” ordering?