So JSF offers a
flexible and extensible architecture that makes easy
creating reusable, complex server side UI components without limiting developers to a particular
mark-up language, protocol, or client device by combining the
UI component functionality with custom renderers.
Here extensible means additional functionality can be given on the top of
JSF core i.e. we can customize the functionality and reusable stands for
being able to add and reuse components many times in the page.
In the past many web development frameworks came in to existence founded on servlet and jsp. Struts emerged as a standard web application framework. It became framework of choice because it came early in the market and provided necessary features at the time but competitors continued providing additional features that struts lacks. So it became necessary for java to advent new standard framework with a powerful component model. This was the reason for developing JSF technology. So main purpose of developing JSF was to create a collection of APIs for the UI components with the capacity to manage their states, handle events and validation. So JSF can be think of a combination of two frameworks, Struts and Swing. Struts is a popular open source JSP-based Web application framework and Swing is a standard Java user interface framework for desktop applications. Like Struts, JSF provides Web application lifecycle management through a controller servlet (FacesServlet) and like Swing, JSF provides a rich component model complete with event handling and component rendering. JSF also ensures that applications are well designed with greater maintainability by integrating the well established Model-View-Controller (MVC) design pattern into its architecture. So it clearly separates behavior (Model) and presentation (View) in an application. This separation enables a wide range of users Page authors( web-page designers), Application developers, Component writers, Application architects , Tool vendors and allows members of team to focus on their own work only , resulting in division of labor and shorter development cycle. JSF has been developed by Java Community Process(JCP) that is a community of web application experts from different groups like Jakarta Struts, Oracle, Sun, IBM, ATG etc. They all collectively worked together to take the best from existing technologies and removed problems. So their collective effort brought a new technology named Java Server Faces (JSF).
Facts about JSF can be summarized as below :
Recommend the tutorial