En su mayor�a, las aplicaciones JavaServer Faces son como cualquier otra aplicaci�n Web Java. Se ejecutan en un contenedor Servlet Java, y t�picamente contienen:
- Componentes JavaBeans (llamados objetos del modelo en tecnolog�a JavaServer Faces) conteniendo datos y funcionalidades espec�ficas de la aplicaci�n.
- Oyentes de Eventos.
- P�ginas, c�mo p�ginas JSP.
- Clases de utilidad del lado del servidor, como beans para acceder a las bases de datos.
Adem�s de estos �tems, una aplicaci�n JavaServer Faces tambi�n tiene:
- Una librer�a de etiquetas personalizadas para dibujar componentes UI en una p�gina.
- Una librer�a de etiquetas personalizadas para representar manejadores de eventos, validadores, y otras acciones.
- Componentes UI representados como objetos con estado en el servidor.
- Validadores, manejadores de eventos y manejadores de navegaci�n.
Toda aplicaci�n JavaServer Faces debe incluir una librer�a de etiquetas personalizadas que define las etiquetas que representan componentes UI y una librer�a de etiquetas para representar otras acciones importantes, como validadores y manejadores de eventos. La implementaci�n de JavaServer Faces proporciona estas dos librer�as.
La librer�a de etiquetas de componentes elimina la necesidad de codificar componentes UI en HTML u otro lenguaje de marcas, resultando en componentes completamente reutilizables. Y, la librer�a "core" hace f�cil registrar eventos, validadores y otras acciones de los componentes.
La librer�a de etiquetas de componentes puede se la librer�a html_basic incluida con la implementaci�n de referencia de la tecnolog�a JavaServer Faces, o podemos definir nuestra propia librer�a de etiquetas que dibuje componentes personalizados o que dibuje una salida distinta a HTML.
Otra ventaja importante de las aplicaciones JavaServer Faces es que los componentes UI de la p�gina est�n representados en el servidor como objetos con estado. Esto permite a la aplicaci�n manipular el estado del componente y conectar los eventos generados por el cliente a c�digo en el lado del servidor.
Finalmente, la tecnolog�a JavaServer Faces nos permite convertir y validar datos sobre componentes individuales y reportar cualquier error antes de que se actualicen los datos en el lado del servidor.