Duvidas JSF

Pessoal estou começando esse Ano em Java WEB e tenho estudado e aprendido muita coisa, Hibernate, Struts, JDBC, JSTL, um poko mais de JEE, Display TagLibrary, CSS, um poko mais de HTML entre outros.

Estou atualmente desenvolvendo uma ferrando com Hibernate + Struts.

Tenho visto que tem se falado muito de JSF, por isso tenho algumas duvidas a respeito antes de começar a estudar.

1 - O que é e para que serve?
2 - Como posso utilizar isso na aplicação?
3 - Ele trabalha em que camada? Visão?
4 - Qual a vantagem dele em relação a tecnologia anterior?
5 - E oque posso fazer com ele??

Resumindo gostaria de conhecer mais a respeito antes de começar a estudar.

Obrigado a todos

JSF é um dos concorrentes do Struts (ou seria melhor dizer o contrario?), só que menos intrusivo.

Quer saber mais?

E qual a vantagem dele em relação ao Struts? Porque tem sido mais utilizado atualmente?