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.
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.
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
- Java API Documentation (JavaDoc)
- Tag Library Documentation - VDL / Facelets (TLDDoc)
- ...or see the complete archive of JSF API Specifications
- Java EE 6 API Documentation (JavaDoc for all of Java EE 6)
- Issue Tracker (For the JSF Specification, not the implementation)
- Community Forums
- Official Expert Group Home Page
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.
- Proposed Change Log for the JSF 2.0 maintenance release (Rev a)
- Issues scheduled to be resolved in JSF 2.0 Rev a
- Issues to be addressed for JSF 2.next (i.e., the future)
- Red Hat's proposed enhancements for JSF 2.1