JSF – JavaServerFaces

Java Server Face is four year old technology which bring component based development to JSP-Java Server Pages. Here is how the Wiki summarizes JSF capabilities:
JavaServer Faces (JSF) is a Java-based Web application framework intended to simplify development of user interfaces for Java EE applications. Unlike other traditional request-driven MVC web frameworks, JSF uses a component-based approach. The state of UI components is saved when the client requests a new page and then is restored when the request is returned. Out of the box, JSF uses JavaServer Pages (JSP) for its display technology, but JSF can also accommodate other display technologies (such as XUL). JSF includes:

* A set of APIs for representing user interface (UI) components and managing their state, handling events and input validation, converting values, defining page navigation, and supporting internationalization and accessibility
* A default set of UI components
* Two JavaServer Pages (JSP) custom tag libraries for expressing a JavaServer Faces interface within a JSP page.
* A server-side event model
* State management
* Managed Beans (JavaBeans created with dependency injection# )
* Unified Expression Language for both JSP 2.0 and JSF 1.2

So JSF is the logical extension of JSP to give the user more control of Web pages with better than JSP state management and better than Struts or JSP components and functionality. JSF has adapted in the past few yaers and with tools like the very good ICEFaces has incorporated even more component technologies including AJAX features to improve response time and reduce Web Page refreshes.

The Problem with JSF

JSF is really Suns response to Microsofts nastiness. The nastiness was the breaking of its contract with Sun and the refusal to update the JVM in IE beyond the first edition. Redmond had no intention of letting Java reach its full potential. As a consequence Microsoft had to pay $2B for this nastiness and the price was cheap, cheap, cheap because it has allowed Microsoft and Windows to keep their $10B per year(and still marginally growing) monopoly on desktop OS for many more years than if Java had become a major player on the desktop and Web.
So JSF was invented to get around the desktop pollution by having the JVM back on the Server and to offer GUI component support from the server. Sun had another vision here => the emergence of thin client computing in which JSF would be the icing on the Sun-baked cake of Java Services. It didnt happen because roughly at the sametime as JSF was emerging so was AJAX with Google and Flickr led JavaScript-based desktop-like GUI apps that ran in a browser. These AJAX apps provided much improved Web response time and better than desktop GUI operations and features(it had stagnated until AJAX appeared). And so Web 2.0 was born and though JSF survived (by incorporating AJAX capabilities as in the very aggressive capailities of such JSF implementations as ICEFaces ) – it had a tragic flaw.

JSF is tethered like ASP, JSP, PHP and all server based Web applications to not just a server; but one server that has all the code, backup and support services required by the JSF application
. True a lot can be spawned out to the desktop using AJAX tricks; but eventually the GUI has to comeback to the one server. Just great for offline operations – NOT. Yet its our argument that RAIA- Rich Anywhere Interface Applications is the wave of the future. Users and developers alike dont want their apps to be online or desktop only – they want to run in any computing environ, desktop, Web, mobile, embedded device – literally GUI ease of data manipulated offline or online – wherever they are working.

Client Server Ping Pong

Ever since the days of Batch Processing mainframes, the locus of presentation and later GUI operations has been ping -ponging back and forth between some sort of client and some sort of server. It happened again in Timesharing, it happened three times in the LAN and PC World, and its happening again as online applications seek to become offline capable and vice versa. And with more users going to any PC (or mobile)with Java, AIR, and other apps on them – the desire is to be able to run anywhere. So maybe Apps will settle down finally and run on the device it reside on be it as simple as a Flash Memory stick – offline or online, user choice. This leads us to JavaFX … more later.