Wednesday, March 14, 2007

AJAX and different RIA technologies

Ajax has been the winner of technology of the year for 2 consecutive years defeating many strong contenders like Ruby On Rails etc. It is now seen as the technology that can change the way user experiences the internet.

The basic of ajaxs is in place from early 90s but the interest started growing only in early 2000s. The main reason for this kick start was the adoption of this technology by Google. Google now uses Ajax in almost all products. The most revolutionary being google maps.

But why? Why every one is so inclined to use it ( one must say overuse it). The answer lies in the difference between the desktop application and web based appliactions.

Take a look at a typical desktop application
(Spreadsheet app, etc.)
* The program responses intuitively and quickly
* The program gives a user meaningful feedback's
* A cell in a spreadsheet changes color when you hover your
mouse over it
* Icons light up as mouse hovers them.

In contrast take a look at the coventional internet application. They are repeated cycle of click, wait and refresh. In desktop application things happen naturally. There is no need to click a button or a link to trigger an event

The developers saw Ajax as the ultimate weapon that can help them bridge the gap between what the web application provides and the desktop application. And there comes the term Rich Internet Application. This is a dream that wants to give web application the look and feel of the
desktop based application.

Its not that the Ajax is the first which aspires to get that. There are many. And it is the purpose of the blog to get readers aquainted with these technologies and there diffrences.

To start with we will name the technologies. They are

* Applet
* Macromedia Flash
* Java WebStart
* DHTML with Hidden IFrame.

Now we will go through each of them one by one and look at the pros and cons of each of them.


* Can use full Java APIs. This is one of the important pros of using Applet. Java has so much to offer and if we can embed them all in a web application, nothing like it.
* Custom data streaming, graphic manipulation, threading, and
advanced GUIs. This is again what the Java offers.
* Well-established scheme. With a big established team to do the development for it. this was bound to happen.

* Code downloading time could be significant. This is what we experince in a typical applet application on web. we wait endlessly for the application to load.
* Security is also one aspect that needs to be addressed in Applet environment. The directory that downloads applet is free to applet application. This can be a major security threat in this malacious world.

Applet can be handy in the case when downloading time is not a major concern( but it never happens :( )

Macromedia Flash
* Good for displaying vector graphics. Excellent graphics can be drawn. infact the purpose of developing this was to get interactive games online and is very strong for that purpose.
Browser needs a Flash plug-in.
ActionScript that is required for developing flash based application is proprietary

Java WebStart

Still to read about it.
The name itself suggests that it is JRE dependent.

DHTML (Dynamic HTML)
DHTML is the combination of JavaScript, DOM and CSS. This was the technology that the world was seeing when Ajax hit. And Ajax took over where DHTML left.

Still it is widely used for creating interactive applications. But the concept of asynchronous communication, was not there. Full page refresh was required. and this was the reason why it has only a limited success.

Ajax combined the power of DHTML with xmlHttpRequest() and made the asychonous coomunication possible.

DHTML with Hidden IFrame

IFrame was introduced as a programmable layout to a web page

An IFrame is represented as an element of a DOM tree. One can move it, resize it, even hide it while the page is visible. In this way one can say that nn invisible IFrame can add asynchronous behavior.
The visible user experience is uninterrupted and – operational context is not lost.

But the purpose of developing this was altogether different. So it presents a lot of problem during the time of application development.

A good description on Ajax can be found out on