June 20, 2011 by huionn
Recently I had a few discussions with my colleagues about rich client application. It is common sense that cool user interface and iPhone or Android support can much more easily impress potential customer than rich features & functionalities in first 5 minutes. The first impression will have long lasting impact on closing the deal.
Nowadays, many modern web applications have advanced user interfaces built from Rich Internet Application (RIA) frameworks. Many are based on AJAX/JS and the others run on native browser plugins (Flex/flash, Silverlight and JavaFX). There are a few frameworks (Vaadin and OpenLaszlo) using its own scripting languages that are compiled at server-side.
I have not heard of half of those frameworks. But for the remaining, I found that they provide fancy and rich user interfaces.
Although Java EE 5 has simplified server side development, its web component – JavaServer Faces (JSF) 2 is still inferior in term of look and feel. Although JSF can be enriched with third-party component libraries (RichFaces and IceFaces), it still unable to achieve responsiveness and usability of native application.
Seeing the low acceptance rate in JavaFX, I think Oracle is smart to re-engineer JavaFX 2.0 as Java runtime library. So, all Java developers can leverage existing skill to design appealing UI. From reading the source codes of sample applications bundled with JavaFX SDK, the programming model of JavaFX is same as Swing. In my personal opinion, JavaFX can be considered as Swing extension library.
On deeper thought, it is more than just look and feel for complicated application. It requires a lot of effort to develop feature rich client application. If I am going to develop a product from scratch, what platform will I choose to develop the client application?
JSF + JavaFX for web application and Eclipse RCP for rich client. Why desktop client? After trying a few Eclipse RCP based clients, I believe that desktop application can provide better user experience – responsiveness, usability, offline support and customizability – hence higher productivity.
There is a good article Web vs. Smart Client – How to sell Eclipse RCP Technology? explaining so well the pros (and cons) of Eclipse RCP. Its poster (available on http://www.remus-software.org/upload/other/SCA-Entscheidungs-Prozess_poster_eng_ohne_beschnitt.pdf) guides the decision making on choosing the platforms.