Home > Wiki > JSF
JSF
Especificação JavaServer Faces feita pelo JCP.
O lance do JSF é que ele não é simplesmente mais um framework de visão, nem uma cópia mal feita do Tapestry. Podemos dizer que o JSF é uma infraestrutura sobre a qual podemos criar frameworks de visão. Acho que a analogia mais aproximada é a da API Servlet e frameworks MVC. O JSF define uma estrutura e especifica todo o ciclo de uma requisicao. Mas ele é formado de várias partes, que vêm com implementações default, mas permite que você troque cada uma delas.
Por exemplo, a escolha de JSP como tecnologia padrão para a montagem de templates, por exemplo, foi uma decisão horrível. Mas já existem alternativas, como Clay (Shale) e Facelets, e substituir um pelo outro é questão de uma linha de configuração.
Outras partes que podem ser trocadas incluem:
- a ' fábrica ' de beans: por exemplo, usar beans do Spring ao invés dos managed beans do ' faces-config.xml '
- o mecanismo de resolução da navegação: não sei se algum framework já implementou isso, mas você poderia por exemplo criar um configurador que utiliza Java ou alguma linguagem script, ou mesmo um que utilizasse algum tipo de convenção de nomes
- a renderização dos componentes, isto é, os famosos ' RenderKits ': para isso já existem várias implementações, utilizando por exemplo XUL ou HTML + Ajax
Mas isso só é possível por causa do detalhamento da especificação (provavelmente esse foi o motivo da demora) em relação aos pontos de extensão, ao ciclo de vida e ao relacionamento entre os componentes.
Então, se você olhar para o JSF simplesmente como mais um framework, principamente se você pegar só a implementação de referência, realmente, ele é podre. Mas se você olhar mais profundamente, o JSF abre um leque de possibilidades. Só precisa ser bem aproveitado.
