What makes a Rich Internet Application (RIA)

Recently I had a discussion on LinkedIn that was spurred by the question ‘How Do I learn JavaScript’.  The conversation took place in the RIA group so the context of the question was learning JavaScript to level to build RIA’s.  During the conversation thread there were a lot of individuals making the argument about Flash/Flex, Silverlight and Java applets are the only true platforms that support the creation of RIAs.  While this may have been the case several years ago in today’s world JavaScript frameworks have been making huge inroads into RIAs.  According to Wikipedia an RIA can be defined as:

Rich Internet Applications (RIAs) are web applications that have many of the characteristics of desktop applications, typically delivered either by way of a site-specific browser, via a browser plug-in, or independently via sandboxes or virtual machines.[1] Adobe Flash, Java and Microsoft Silverlight are currently the three top frameworks, with penetration rates around 95%, 80% and 45% respectively.

Wikipedia goes on to say that the introduction in the past few years of JavaScript frameworks is also now considered by most to be supportive of the development of RIA’s.  What I find of interest is Wikipedia and other sites go on to speak of the expected functionality of RIA’s but none appear to delve into the development benefits in conjunction with the available JS frameworks and other more traditional implementations.

This is the context that I will cover in the below pasted comment from the afore mentioned thread on LinkedIn.

As for comments about client side vs. server side let’s remember the context of this group, Rich Internet Applications. I disagree with the viewpoint that JS is simply a handy tool, it, flash, Silverlight and Java are presently the only tools that meet the requirement to create RIA’s. I say this because in my view an RIA not only provides for a rich user experience but more importantly for the first time on the web as a delivery mechanism, we are actually able to support a pure 3 tier model.

RIA’s as a 3 tier implementation provide for segmentation of layers allowing for parallel development of each tier where the only interconnection is data. It is unfortunate that development platforms such as .NET and Java(JSP) for example are far too tied to the front end by making the business decisions on what to serve up. This is not a 3 tier model but in essence a two tier model where the interfaces of the server side objects just happen to be disconnected. I cannot count the number of times I have seen .NET developers make a simple hyper-link a server side component, this to me is bizarre.

In developing an RIA the segmentation of each layer into its own distinct project with specialists in each area allows for a more robust application and greater reuse. ‘Smart’ front ends written in JS or Flash that communicate over the cloud with JSON or XML or even basic asynchronous methods allow for this. As the web has developed we are now starting to see this level of segmentation reflected in the workforce where we have front end specialists who now work in tandem with designers and clients.

From a business perspective a pure RIA 3 tier model allows for a smaller investment on the initial design by allowing the front end to be truly vetted by the client. This can be accomplished by using static xml or json files that drive the front end. When the client is satisfied with the results, the middle tier can then be completed in the prescribed language and a database added if necessary. This type of development is in essence top down where as historically we did bottom up. This type of model also allows for geographical segmentation of the application and in so doing so can also reduce cost. Font ends can even be compiled into desktop apps, see Javaline and business tiers and databases can be distributed. Again this can provide for cost savings and greater distribution of workload amongst each tier.

So to say the JS is only a small part is in my view incorrect. In order to meet the definition of a RIA it IS the language of choice. I expect it will not be long before libraries become browser based and JS becomes a compiled deliverable package. This is bound to happen as a simple result of how ‘we’ the community are driving the development of RIA’s.

As with anything you write I have to comment on my own comments from the thread.  I am not prescribing the radical concept of dropping fundamental design principles, far from it.  What I am doing however, is pointing out that RIA’s allow for a more top down development implementation.  This style of development allows us to focus on the most important aspect of a RIA, the interface.  I know many developers will say that the database design is most import or the server side OO design is most important but the fact is they are not.  Neither of these tiers, however important and they certainly are, do NOT sell product either to the client or the clients prospective clients.  It is the interface that is consumed by the viewer, tiers 2 and 3 are simply supporting that consumption.  It’s analogous to buying a good steak, you don’t consider for a moment how it was shipped or raised when you’re eating it.  Only how it was presented to you at the restaurant and how darn good it is  to eat.

In summary RIA’s provide for top down development that allow for better vetting of functionality directly with client.  This in turn helps to ensure reduced iterative development cycles through all three tiers.  This in turn reduces cost, improves client buy in and allows development shops to do incremental fixed price bidding on projects.  Imagine bidding on a project with the model of 4 stages of contract such as:

  1. Requirements gathering and analysis
  2. ‘Functional’ Interface development, presentation and vetting.
  3. Server Side and Database development
  4. Deployment

Notice another aspect of building contracts in this nature.  The client is free to take the results of each stage and put out further requests for proposals.  Now this may be counter intuitive to development shops but how often have we seen a 100% buy in on the whole plan only to result in cost overruns and therefore reduced profit.

3 Tier RIAs allow us this type of contractual model which if adhered to is too everyone’s benefit!


2 responses to “What makes a Rich Internet Application (RIA)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s