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.
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.