DLG Software


Rich Internet Applications,

  Flex, and maybe a little SAS



This is a very high-level intro to RIAs and Flex (basically it assumes you can spell RIA but not much more). It provides some definitions, a little history, a look forward, and links to in-depth information.

The basics

Since this overview assumes you're a total RIA newbie it's probably best to start with a definition of terms:
  • An RIA is a Rich Internet Application, a browser-based application with functionality similar to a traditional desktop application.
  • Flex is a RIA development environment from Adobe. Flex apps execute within the Adobe Flash Player, which is installed on nearly all web-connected computers.
Let's flesh out that RIA definition. There's no hard and fast list of RIA features, but some generally agreed upon traits include:
  • Offer a high degree of interactivity similar to desktop applications
  • Client-based execution with ability to offload work from the web server, reducing net traffic and improving performance
  • Data access can be asynchronous, with app state stored on the client as well as the server
  • Execute/render consistently across browsers and platforms
  • Provide tight, seamless integration for their components
All in all, this adds up to greater interactivity, richer functionality, better performance.

On the other hand, there is one major problem with RIAs — their "visiblity" to search engines. Unlike HTML text-based apps, RIA content isn't generally indexable by search engines. In the age of Google this is a serious drawback, but it's just a matter of time before this is resolved.

The old

Now a quick look back to where we came from. Not that long ago most web page interactions required constant page refreshes — you filled in some fields, submitted the form, and the browser was refreshed with a new page in response to your selections. Interactivity without refresh was limited, and the functionality of desktop applications was simply not possible with basic HTML. All in all, not a great user experience.

The new

Then asynchronous JavaScript and XML (Ajax) was introduced and the situation changed dramatically. Ajax allowed a web page to incoporate components that could fetch information from a server and update themselves without performing a full page refresh. As a result, they could provide a better user experience, with much more interactivity and "intelligence" (for example, autocomplete input fields). There are now many Ajax libraries that provide remarkable functionality (e.g., telerik).

However, while Ajax web apps met the low end of the RIA definition, they still had a lot of cross-browser and cross-platform issues to deal with. These could be addressed by creating libraries of functions/components that operate consistently in the different environments, but (in my opinion, at least) the embedding of Ajax components is still to a large degree an ad hoc solution, and you can find variations in your application in the different environments. And, of course, if the user doesn't have Javascript enabled you are totally out of luck.

The future

Enter RIA products like Flex and Silverlight. These products are designed from the ground up to provide optimized RIA development and execution environments. One reason for their greater functionality and cross-platform/browser consistency is their execution environment — while RIAs are browser-based, in fact they run in a 'player' (a virtual machine, or VM) that is downloaded and installed onto the client computer (a one-time install process). For example, Flex runs in Adobe's Flash player.

Use of a VM provides many benefits, including consistency across disparate browsers and operating systems. It allows saving state on the client, and it supports both complex user functionality and fast/consistent/sophisticated screen rendering capabilities (generally translating into fewer trips to the server). All this while avoiding some of the pitfalls inherent in traditional desktop apps, such as deployment/update issues. And, of course, since the apps are web-based they have the potential of being accessed from any computer. All in all, something that users, developers, and IT managers can love.

The Major Players

This just lists a few of the more popular RIA development products.

I've already talked about Flex, so here I'll just mention that Flex version 3 is stable and mature, with a rich set of controls and functionality. It has a nice Eclipse-based IDE and many third-party development tools and component libraries. And, of course, its VM (the Flash player) is ubiquitous, which gives it a big advantage out of the starting gate. Flex 4 has just been released, and is covered (well, sort of covered) in a separate section below.

Microsoft's RIA entry is called Silverlight, which is currently at version 3. Like most early versions of Microsoft software, Silverlight 1 and 2 were limited in features and rather painful to work with. However, Silverlight 3 is a significant improvement, and it's likely to mature into a strong competitor to Flex (MS has a history of eventually getting it right).

Sun/Java's entry into the RIA sweepstakes is JavaFX. The concensus in the RIA world is that JavaFX is a very disappointing entry into the race and is far back in the pack.

It's worth mentioning Ajax again here, since despite some inherent drawbacks Ajax will continue to play in the RIA marketspace. There's a lot of Javascript knowledge out there, and lots of really amazing Ajax libraries and toolsets now available, so it's likely that many companies will quite happily continue on down the Ajax road, especially corporate clients who can impose standard client configurations (e.g., only support IE on MS Win).

The Flex future - Flex4, Catalyst, and more

Ok, right now this is basically a placeholder, since I'm not letting myself get distracted by playing with the new stuff Adobe has released this year. For now, I'll just direct you to Adobe's site for info on the recently released Flex 4 and related products. I'd also recommend you visit Adobe TV where there are several quite long videos where these new products are described in-depth. I'll begin adding content here before the end of the year as I have time to begin exploring Adobe's newest releases.

Some useful RIA/Flex links:

General information on RIAs: More technical information on RIAs: Information on Adobe Flex: For dozens of good links for Flex developers see the page Flex Developer Sites.