Desde o surgimento de Servlets e JSPs, muitas tecnologias Java e frameworks foram surgindo com o objetivo de aumentar a produtividade e prover mais recursos ao desenvolvimento de aplicações web. Entretanto como se pode observar na figura abaixo os Servlets continuam sendo a base de todas as aplicações Java para a web. Assim como as outras tecnologias o JavaServer Faces cria apenas um nível de abstração sobre os Servlets, tornando o desenvolvimento de aplicações mais fácil, escalável e robusto. Outro ponto positivo disso tudo está em possibilitar o uso de tags JSP, JSTL ou mesmo Servlets dentro de aplicações JSF.

A Arquitetura do JavaServer Faces

Fonte: ORACLE, 2010

Nesse sentido o JSF é um framework para o desenvolvimento de aplicações web MVC e oferece uma separação clara entre a lógica da aplicação e a de apresentação (ORACLE, 2010).  Ele permite o desenvolvimento de aplicações web com uma separação mais refinada entre a lógica e a apresentação do que é tradicionalmente oferecido por outras tecnologias. Esta separação também permite que cada membro de uma equipe de desenvolvimento possa se concentrar em uma única parte do processo de desenvolvimento. Além de possibilitar uma maior facilidade de integração entre os componentes.

A partir da versão 2.0 do JSF houve a introdução do Facelets que permite uma maior “componentização” das páginas JSF. Dentre as vantagens oferecidas pelo Facelets pode se destacar que:

  • O Código pode ser reutilizado e estendido para os componentes através  de templates e composições;
  • Possibilita a utilização de @annotations para registrar automáticamente os mannaged beans, backing beans, validators e outros;
  • As regras de navegação implícitas permitem aos desenvolvedores configurar rapidamente a navegação entre as páginas. Esses recursos reduzem consideravelmente a necessidade de fazer configurações em arquivos XML;
  • Por fim, o JSF oferece uma rica arquitetura para o gerenciamento de estado dos componentes, processamento de dados, validação de entrada do usuário e manipulação de eventos.

Uma aplicação JSF típica é composta de páginas web, managed beans, backing beans, validadores, conversores e regras de navegação. Há uma certa confusão na definição entre os managed beans e backing beans. Para a ORACLE (2010) managed beans são todos os beans de suporte a aplicação, já Mann(2005), por sua vez, afirma que os beans de suporte são backing beans. Nesse trabalho foi considerada a definição dada por Geary & Horstmann(2010). Para eles managed beans diferenciam-se de backing beans considerando suas características no suporte a aplicação. Todos aqueles que encapsulam regras de negócio e efetuam algum, processamento de informações são denominados managed beans. Aqueles que oferecem apenas suporte a página são considerados backing beans.

O próprio JSF possui seus conversores e validadores entretanto algumas vezes é necessário a criação de conversores e validadores específicos para a aplicação. Eles servem para verificar por exemplo se um campo de senha é igual a outro campo de confirmação de senha antes de cadastrar um usuário. Já os conversores são responsáveis por efetuar conversão de tipos. As regras de navegação, por sua vez, servem para definir o fluxo de navegação do usuário dentro da aplicação. Até a versão 1.2 as regras de navegação e o mapeamento de managed beans eram feitos via XML no arquivo “faces-config.xml” a partir da versão 2.0 é possível configurá-las dentro dos próprios managed beans. Outro ponto relevante do JSF é o ciclo de vida das requisições que será tema do próximo tópico.

Referências:

ORACLE. The Java EE 6 Tutorial. Redwood City: ORACLE, 2010

MANN, Kito D. JavaServer Faces In action. 1ed. Greenwich: Manning, 2005.

GEARY, David; HORSTMANN, Cay. Core JavaServer faces. 3ed. Redwood Shores: Prentice Hall, 2010.

Tags: , , , , , , ,