When JSF technology was hit in market, developers are using technologies like servlets and JSP to develop rousted & scalable browser-based user interfaces(UI) for countless applications with great success, but as day pass web application become more complex and demands traditional graphical user interface (GUI) frameworks with rich, powerful user interface widgets and event-driven development models. Servlets and JSP have served us well, but problem arise with Http's stateless nature and simple, coarse-grained request/response model forces application.
JavaServer Faces (JSF) simplifies development of sophisticated web application user interfaces, primarily by defining a user interface component model tied to a well-defined request processing lifecycle. JSF contains all the necessary code for component organization, event handling and database. Most importantly, JSF provide lots of flexibility in web application because it allow JSP custom action elements( also known as custom tags ), however, it is enough flexible to support other presentation technologies besides JSP. JSF divide into these parts:
- A set of prefabricated UI components.
- An event-driven programming model
- A component model that enables third-party developers to supply additional components or plug-in.
- Java programmers to develop the application backend without worrying about HTTP details and integrate it with the user interface through a familiar event-driven model with type-safe interfaces.
- Page Authors without programming knowledge to work with the user interface "look and feel" aspects by assembling components that encapsulate all user interaction logic—thereby minimizing the need for program logic embedded directly in the user interface pages.
- Vendors to develop powerful tools for both frontend and backend development.
- JSF version 2.0 is used for Facelets, by default Facelets is a more simple, efficient, and yet more powerful view description language (VDL).