JavaServer Faces (JSF) is a framework for building web-based user interfaces in Java. Like Swing, it
provides a set of standard widgets (buttons, hyperlinks, checkboxes, and so
on), a model for creating custom widgets, a way to process client-generated
events (like changing the value of a text box or clicking on a button), and
excellent tool support.
Since web-based applications, unlike their Swing
cousins, must often appease multiple clients (desktop browsers, phones, PDAs,
and so on), JSF has a powerful architecture for displaying components in
different ways. However, most JSF applications are built for desktop browsers, and
JSF widgets (commonly called user interface components, or UI components) can
JSF also has extensible facilities for validating input (like
the length of a field) and converting objects to and from strings for display.
The framework can also automatically keep your user interface components in sync
with your business model objects, and has basic dependency injection facilities for
creating and initializing objects.