Wednesday, May 23, 2012

View Technologies & Rich User Interfaces

The original Web UI was envisioned as hypertext, cross referencing, static web pages (sometimes called Web 1.0).

But things quickly progressed beyond that to give highly interactive, dynamically generated web pages with cool animation effects (sometimes called Web 2.0).

The technology which enabled this transition is javascript, which was a simple scripting language originally developed for small dynamic web page modifications, but people pushed it to its limits and beyond.

Such web interfaces are often called "Rich UI" and "Rich Application" because they display all kinds of special effects like collapsible Window Panels, Drag-n-Drop lists, interactive Charts, Dynamic Trees, Color themes, etc.

The components which display such complex dynamic effects are called "Rich components", and sometimes "Widgets".

Developing a Rich UI comes with a new set of challenges:

1. Developing complex javascript is not easy. It requires a lot of experience, it is not easy to debug and can result in unexpected behaviors in different browsers.

2. Rich components typically need to use AJAX to communicate with servers, which makes things more tricky.

3. In addition to application state, there is an additional need to maintain state of the Rich components (sometimes called View state)

4. There is always the browser "back" button which messes the view.

5. Finding an easy, seamless way for rich components to interact smoothly with Java objects on the application server is not trivial.

6. In the absence of ordinary hyperlinks, defining navigation between pages becomes a job in itself.

All these challenges led to the development of new frameworks for developing the front-end. These are often called "View Technologies".


In the coming posts, we will look at 3 of the most prominent view technologies:

 * JSF - Java Server Faces, is a Sun standard, and more widely used.

* Apache Tapestry, is the easiest to use and more elegant than JSF.

* GWT - Google Web Toolkit, is the most scalable.

No comments: