rdana">

JSF: Presente e Futuro

As versões mais recentes e perspectivas para a tecnologia

Analisando mudanças entre as versões 1.1 e 1.2 do JSF, e discutindo o futuro da tecnologia – com uma entrevista com Ed Burns, líder da especificação JSF 2.0

Lançada há pouco mais de cinco anos, a tecnologia JSF é hoje uma realidade, sendo adotada por grandes empresas e contando com discussões cada vez mais maduras. Mas tecnologias geralmente evoluem mais rapidamente que o mercado, e isso não é diferente com JSF. A JSR-252, que especifica a versão 1.2, foi finalizada há mais de um ano, em maio de 2006, porém só agora vários dos principais servidores de aplicações estão oferecendo suporte completo a esta versão.

Com o JSF 1.2 entrando para o uso corrente nas aplicações web, estamos em um bom momento para discutir as principais mudanças entre a versão 1.1 e a 1.2. Também é a hora de olharmos adiante. Para identificar o que está por vir, fizemos uma entrevista exclusiva com Ed Burns, líder das especificações de JSF – da versão inicial até a novíssima JSR-314 (JSF 2.0). Burns nos fala sobre o futuro (e o presente) do JSF e de seu ecossistema. Complementando a entrevista, adicionamos informações sobre o JSF 2.0 e criamos quadros onde discutimos tecnologias relacionadas.

JSF 1.2

Começamos lembrando que o JSF 1.2 (JSR-252) é parte do Java EE 5, o que significa que qualquer servidor Java EE 5 certificado possui as classes e interfaces necessárias para o uso dessa versão do JSF, dispensando a instalação de bibliotecas adicionais.

Uma mudança importante no JSF 1.2 é o uso de XML Schemas em vez de DTDs para validação do descritor do JSF, o arquivo faces-config.xml. Outras mudanças fundamentais são discutidas a seguir.

 

Melhor integração com a tecnologia JSP

O principal problema de integração entre JSF e JSP está relacionado à diferença entre os mecanismos de renderização usados por essas tecnologias. Com JSP, é feita imediatamente a escrita do conteúdo na resposta gerada (o código HTML a ser devolvido ao navegador), à medida que a página é processada. Já com JSF esta escrita depende de todo o ciclo de vida da requisição, que é composto de várias fases; assim o componente não é necessariamente escrito na resposta no instante em que é processado.

Essa diferença faz com que, em muitos casos, os componentes apareçam fora de ordem quando incluímos código JSP aninhado em tags JSF. Para evitar isso com JSF 1.1, era necessário usar o tag <f:verbatim>. O seguinte trecho, por exemplo, monta um link com JSF 1.1:

 

<h:outputLink value=”index.jsp”>
  

 <f:verbatim> Link para página inicial </f:verbatim>

</h:outputLink>

 

Para solucionar o problema, foram necessárias mudanças não somente na especificação de JSF, mas também na de JSP. Essas alterações foram implementadas no JSP 2.1 e JSF 1.2 (as versões incluídas no Java EE 5). Veja o equivalente ao código anterior, usando JSF 1.2:

 

<h:outputLink value=”index.jsp”>
  

Link para página inicial

</h:outputLink>

Observe que com JSF 1.2 não foi necessário utilizar o tag para que o link seja exibido corretamente. Parece um pequeno detalhe, mas uma das principais reclamações de desenvolvedores com o uso de JSF 1.1 diz respeito à necessidade do uso deste tag para permitir que as páginas exibam de forma correta o conteúdo escrito no corpo dos componentes JSF. Pior ainda, alguns desenvolvedores rejeitavam a tecnologia por desconhecer esse problema e a sua solução, concluindo que não seria possível renderizar as páginas corretamente.

A melhor integração entre JSP e JSF implementada no Java EE 5 deixa as páginas mais enxutas e previsíveis e torna o seu desenvolvimento mais simples.

Unificação da Expression Language de JSP e JSF

Com JSP 2.0 e JSF 1.1 temos duas linguagens de expressão (EL) distintas, que são interpretadas de maneira diferente pelo servidor. A EL do JSP 2.0 utiliza a sintaxe “${expressão}” e permite somente a leitura de dados e a invocação de métodos estáticos. Já a EL do JSF 1.1 utiliza a sintaxe “#{expressão}” e permite a leitura e escrita de dados, assim como a invocação de métodos nos Managed Beans.

Com as novas versões de JSP e JSF incluídas no Java EE 5, foi feita a unificação das Expression Languages levando à criação da Unified EL. Isso permite ao container tratar de forma única as duas sintaxes. (Mas note que o suporte às sintaxes anteriores foi mantido para permitir a compatibilidade com páginas já escritas).

Suporte ao uso de com componentes JSF

O tradicional tag JSTL é muito útil para iterar sobre coleções de objetos, sendo usado por exemplo para criar páginas com listagens de elementos. Porém, o seu uso em conjunto com componentes JSF 1.1 aninhados não é possível. Em seu lugar, devemos utilizar um componente JSF . Isso obriga o autor de página a conhecer duas maneiras de montar listas dinamicamente: uma com JSTL (para uso em projetos que não utilizem JSF) e outra com JSF.

Com JSF 1.2, no entanto, é necessário conhecer somente a versão com JSTL, podendo ...

Quer ler esse conteúdo completo? Tenha acesso completo