Get Started

JavaServer™ Faces (JSF) is the standard component-oriented user interface (UI) framework for the Java EE platform. In terms which may sound more familiar, it's a Java-based web framework.

JSF is included in the Java EE platform, so you can create applications that use JSF without adding any extra libraries in your project. JSF works equally as well as a standalone web framework, able to hook into bean containers such as Spring. How you use JSF is up to you.

To fastest way to get started with JSF is to create a project using a Maven archetype. Instructions are provided on the Get Started page.

Key Links


Beyond just a web framework, JSF offers an ecosystem of portable UI component libraries and extensions. This means you can take a UI component from a library, such as a tree or scrollable table, and use it on any JSF implementation.

Most of the UI component libraries focus on providing rich UI components, and "rich" often involves Ajax. JSF 2.0 provides a common JavaScript API that UI components can use to help promote interoperability.

Finding UI components

You can start your search for UI components in the following places:

  • Ajax JSF Matrix - a comprehensive (but not official) matrix of rich component libraries
  • JSF Central - features a product catalog of component libraries

JSF in production

Want to see examples of JSF in Action?

The future of JSF

How does JSF get improved?  JSF improves by improving the specification. JSF is designed to be very extensible, so what typically happens is that another project will come along (see Libraries and Extensions) that builds extra functionality on top of the specification. The expert group (EG) reviews these add-ons and incorporates commonly needed features back into the specification.

Be sure to vote on proposed changes or submit your own!

What's important is that enhancements to JSF are proven and contributed by the community. That way, the specification is solid, reliable and useful. That's the goal, anyway.

Here are some of the improvements in the pipeline.
There were also some changes to the Unified EL in Java EE 6 that improved JSF indirectly. But we can do more! (The Unified EL is currently governed by JSR-245, which is the specification for JavaServer Pages (JSP) 2.1).

JSF in a nutshell

JSF has two main functions. The first is to generate a user interface, typically an HTML response that is served to a browser and viewed as a web page. This user interface is represented on the server by a component tree. There is a 1-to-1 mapping between elements in the component tree and elements in the user interface. The actual user interface is generated when the component tree is encoded (or rendered). This separation between component tree and user interface allows JSF to support different markup languages (HTML vs XUL) or alternative browser environments (desktop vs smartphones).

The second function of JSF is to respond to user-generated events in the page by invoking server-side listeners, followed by the generation of another user interface (e.g., web page) or an update to the user interface already displayed (possibly through Ajax). In this regard, JSF is said to be an event-driven web framework.

It's important to mention that JSF is part of the standard Java EE platform, which means it's built-in to any compliant Java EE application server, such as Oracle's WebLogic, GlassFish Open Source Edition, or JBoss AS. But it can also be used as a standalone library in servlet containers such as Tomcat and Jetty.

Of course, there's much more to JSF than what's described here. You can read more about JSF in the specification document (choose "for evaluation") or the myriad of resources that have been published about it, ranging from books, to articles, to blog entries. The purpose of this page is to make you more familiar with the JSF framework itself: how it is developed, where it lives, and what it has to do with a specification. Basically, what sets it apart from other web frameworks.