Artigo Java Magazine 48 - JSF: Presente e Futuro

Artigo publicado pela Java Magazine 48.

Esse artigo faz parte da revista Java Magazine edição 48. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler esse artigo em PDF.

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 “" [...] continue lendo...

Artigos relacionados