JavaServer Faces

(Redirecionado de JSF)

JavaServer Faces (JSF) é uma especificação Java para a construção de interfaces de usuário baseadas em componentes para aplicações web. Possui um modelo de programação dirigido a eventos, abstraindo os detalhes da manipulação dos eventos e organização dos componentes, permitindo que o programador se concentre na lógica da aplicação.

JavaServer Faces
Versão estável 2.3.0 (Mojarra) (28 de março de 2017; há 7 anos)
Escrito em Java
Gênero(s) Framework de aplicação web
Página oficial javaserverfaces.java.net

Foi formalizada como um padrão através do Java Community Process e faz parte da Java Platform, Enterprise Edition.

JSF 2 utiliza Facelets como seu sistema de template padrão. Outras tecnologias da camada de visão, como XUL também podem ser empregadas. Em contraste, JSF 1.x utiliza JavaServer Pages (JSP) como seu sistema de template padrão.

Características editar

JavaServer Faces é baseada em um modelo de desenho de IU (interface de usuário) baseada em componentes, usando arquivos XML chamados de modelos de visão ou Facelets views. Os pedidos são processados pelo FacesServlet, que carrega o modelo de visão adequado, constrói uma árvore de componentes, processa os eventos e apresenta a resposta, normalmente na linguagem HTML, para o cliente. O estado de componentes de interface do usuário e outros objetos de interesse de escopo, é salvo no final de cada pedido em um processo chamado stateSaving (nota: transiente true) e restaurado na próxima criação desta visão. Objetos e estados podem ser salvos ou no cliente ou no servidor.

  • Permite que o desenvolvedor crie UIs através de um conjunto de componentes UIs pré-definidos;
  • Fornece um conjunto de tags JSP para acessar os componentes;
  • Reutiliza componentes da página;
  • Associa os eventos do lado cliente com os manipuladores dos eventos do lado do servidor (os componentes de entrada possuem um valor local representando o estado no lado servidor);
  • Fornece separação de funções que envolvem a construção de aplicações Web.
  • Utiliza Ajax em alguns de seus componentes tornando alguns processos mais rápidos e eficientes.

Ciclo de vida editar

 
Diagrama mostrando o fluxo do ciclo de vida do JSF

Ciclo de vida do JSF é o nome dado à sequência de processamento realizada na implementação JSF para a geração das visões. O JSF, diferente de outros frameworks, possui um processamento de requisição dividido em seis fases:

  1. Restauração da visão - o objetivo principal desta fase é construir a árvores de componentes.[1] Ela utiliza o template e cria a árvore inicial através da análise da requisição. Após isto, ela salva o estado da árvore no objeto FacesContext. Nas requisições subsequentes, ela cria a árvore do estado e procede a execução do resto do ciclo de vida.
  2. Aplicação dos valores de requisição - o JSF pega cada componente da árvore começando com a raiz e a cria ou recupera do objeto FacesContext. Cada componente na árvore gerencia seus próprios valores e toma-os dos parâmetros, cookies e cabeçalhos da requisição HTTP.
  3. Validações de processo - o JSF realiza a conversão e validação sobre todos os componentes começando com o raiz. O valor submetido de cada componente é convertido em um objeto e validado chamando-se o validador registrado. O JSF salva o valor submetido. Se ocorrer um erro durante a conversão ou validação, o ciclo de vida escapa diretamente para a fase de "apresentação da resposta".
  4. Atualização de valores de modelo - durante esta fase, o valor do componente é passado para o modelo através da atualização das propriedades dos backing beans.
  5. Invocação da aplicação - a manipulação de evento para cada ação e ouvidor de ação é executada começando com o(s) ouvidor(es) de ação e então a chamada do método de ação.
  6. Apresentação da resposta

Recursos visuais editar

O framework JSF permite a inserção, via IDE, de:

  • Folhas de estilo (CSS);
  • Comandos em JavaScript;
  • Metodologia Ajax;

JSF inclui editar

  • Suporte a internacionalização e acessibilidade;
  • Um conjunto padrão de componentes de interface de usuário que possibilitam validação padronizada;
  • Duas bibliotecas de etiqueta ("tag libraries") especiais do JavaServer Pages (JSP) para expressar a interface do JavaServer Faces dentro de uma página JSP;
  • Um modelo de eventos do lado servidor ("server-side event model");
  • Gerência de estados;
  • Managed Beans;
  • Linguagem de Expressão Unificada ("Unified Expression Language") para JSP 2.0 e JSF 1.2.

Ferramentas de desenvolvimento editar

Histórico editar

O JavaServer Faces ganhou expressão na versão 1.1 quando implementado pela comunidade utilizando a especificação 127[2] do Java Community Process,[3] evidenciando maturidade e segurança.

Hoje ele está na versão 2.0 da especificação 252[4] do JCP. A fundação Apache vem realizando esforços na implementação da especificação através do projeto MyFaces. O reconhecimento do trabalho é visto por diversas empresas, tanto é que a Oracle doou os fontes do ADF Faces, conjunto de mais de 100 componentes JSF, para o projeto MyFaces que o denominará de Trinidad.

O JSF é atualmente considerado pela comunidade Java como a última palavra em termos de desenvolvimento de aplicações Web utilizando Java, resultado da experiência e maturidade adquiridas com o JSP/Servlet (Model1), Model2 (MVC) e Struts.

Versões da JSF editar

Versão Data Características
1.0 11 de março de 2004 Especificação inicial liberada.
1.1 27 de maio de 2004 Versão de correção de bugs. Não há mudanças de especificação.
1.2 11 de maio de 2006 Muitas melhorias nos sistemas centrais e API. Coincide com Java EE 5. Adoção inicial em Java EE.
2.0 28 de junho de 2009 Maior versão para facilidade de uso, funcionalidade melhorada e desempenho. Coincide com Java EE 6.
2.1 22 de outubro de 2010 Versão de correção da versão 2.0. Apenas uma quantidade muito menor de mudanças de especificação.[5][6]
2.2 21 de maio de 2013 Introduziu novos conceitos como visões sem estado, o fluxo de página e a capacidade de criar contratos de recursos portáteis.[7]
2.3 28 de março de 2017 Introduziu expressões de busca, URLS sem extensão, validação de beans para classes completas, comunicação via push usando WebSocket, e maior integração com CDI.

Críticas editar

Em sua publicação "Technology Radar" de janeiro de 2014, a ThoughtWorks escreveu:[8]

Num artigo publicado em novembro de 2014 no DZone, intitulado "Por Que Você Deveria Evitar JSF", Jens Schauder escreveu:[9]

O The Server Side, site da comunidade Java Enterprise, não recomenda o uso do JSF e cita cinco problemas principais:[10]

  • tarefas simples se tornam complicadas;
  • falta de flexibilidade;
  • difícil aprendizado;
  • incompatibilidade com outras tecnologias que são padrão no Java; e
  • primitivo suporte ao AJAX.

Referências

  1. Eclipse documentation - Árvore de componentes
  2. Java127
  3. JCP
  4. Java252
  5. http://blog.oio.de/2010/11/24/jsr-000314-javaservertm-faces-2-1/
  6. Bosch, Andy (29 de novembro de 2010). «Was ist neu in JSF 2.1» (em alemão). it-republik.de. Consultado em 19 de fevereiro de 2013 
  7. «JSF 2.2 (JSR-344) is final» (em inglês). OIO's Developer Blog. 16 de abril de 2013. Consultado em 30 de novembro de 2017 
  8. «Technology Radar» (PDF) (em inglês). ThoughtWorks. Janeiro de 2014. Consultado em 26 de outubro de 2017. Arquivado do original (PDF) em 7 de abril de 2016 
  9. «Why You Should Avoid JSF» (em inglês). DZone. 3 de novembro de 2014. Consultado em 26 de outubro de 2017 
  10. «Five drawbacks to choosing JSF as your web application framework» (em inglês). The Server Side. 2016. Consultado em 29 de novembro de 2017 

Bibliografia editar

Ligações externas editar

  Este artigo sobre programação de computadores é um esboço. Você pode ajudar a Wikipédia expandindo-o.