I spoke recently with Ed Burns, who is a Consulting Member of the Technical Staff at Oracle and specification lead for JavaServer Faces, the standard Web Application Framework for Java EE.
Q: JSF is more than six years old now -- is it still relevant?
A: Yes, for two reasons: first, because of the new features introduced in JSF 2.0, and second, because of the sensible design choices in the original architecture. My personal minimal goal with JSF 2.0 was to ensure that it was good enough to convince people who had tried JSF 1.2 and not liked it to give it a second chance. Based on blogs, tweets, and first-person accounts, I think we succeeded. Facelets is now built into the spec. I can confidently say that no other server-side Java framework has as simple and powerful Ajax integration as JSF 2.0. The composite component feature enables true UI abstraction for the first time in the Java EE platform. These and other features make JSF a very compelling choice for the UI of rich Internet applications.
Even though user expectations have changed since JSF was first released, the essential challenges of building a UI for a distributed application remain the same. Specifically, all web apps must address data conversion and validation, page flow, persistence, localization and internationalization, and UI layout and composition. JSF has been called a "kitchen sink framework". This characterization is only fair when you consider JSF in the context of the entire Java EE stack. It's kinder to say that Java EE is a "full stack solution". The JSF part of the Java EE full stack solution addresses everything one must consider when developing a web-based UI for a distributed application, with sensible defaults for everything. JSF can play a useful role even in "native" HTML5 applications that heavily leverage the client data store, WebSockets, the Canvas and other features designed to let the UI logic reside entirely in the browser. In this case, the data binding, conversion and validation portion of JSF can be used to simplify the task of integrating data from the client into the back end.
Q: What do you see as JSF's competition?
A: We need to distinguish direct from indirect competitors. UI technologies divide into two broad areas: desktop and mobile. Desktop is further broken down into apps with an installer, and browser-based apps. Browser-based apps are broken down into apps that require a plugin (such as Flash or JavaFX) and those that do not. Here, JSF is one entry in a crowded field. Other entries include Wicket, Vaadin, Spring MVC, Spring Web Flow, and Struts2.
While JSF is in direct competition with these other technologies, it's also in competition with entries in other areas.
Q: In a world of many different client device types, where does JSF fit?
A: Client device independence has been a part of JSF since day one. There are several JSF component libraries that are designed to let you author JSF pages targeted at smartphones and other handheld devices. Oracle's ADF Mobile product, from Fusion Middleware 11g, and Touchfaces, from Prime software, are two solid examples.
Q: What's the outlook for JSF in the coming year?
A: We just finished JSF 2.1 and we're now drafting the JSR for JSF 2.2. This will be a full JSR, not a maintenance release, which will enable us to do more. Some things we are considering include page actions, full HTML5 forms support, first class browser detection, and inclusion of JSR-276 metadata in the standard components.