O documento discute técnicas para acelerar o desenvolvimento e reduzir bugs em aplicações web Java, incluindo: 1) manipulação efetiva das fases do JSF; 2) uso efetivo de Ajax; 3) uso efetivo de escopos do JSF; 4) reuso de componentes prontos; e 5) uso do Facelets. Ele também discute as vantagens e desvantagens do JSF e exemplos de implementações e extensões populares.
4. Desvantagens do JSF
• Usa um pouco mais de recursos de performance
• Impossibilita reuso de protótipo
• Abstrai muito a parte Web
• Mantém muito retro compatibilidade
• Não é tão flexível quanto outros frameworks
• Ignora paradigma REST
4
5. Vantagens do JSF
• Produtividade alta
• Faz parte da especificação Java EE
• Existem muitos profissionais que conhecem o JSF
• É muito parecido com HTML na parte da view
• Não é tão lento como pensam se usado da forma certa
• Documentação rica
• Muitas implementações da especificação JSF
• Muitas extensões como por exemplo o Primefaces, Trinidad, Richfaces..
• Fácil integração com os frameworks mais utilizados como Spring, especificações JPA, EJB,
etc...
• Está em segundo lugar dos frameworks mais usados no mundo perdendo somente para o
Spring MVC
5
6. Component Based X Action Based
Component Based:
JSF
Tapestry
Wicket
Action Based:
Spring MVC
Apache Struts
Vraptor
Grails
6
7. Implementações do JSF
• Mojarra que é a implementação da SUN (GlassFish),
também (mais) conhecida como JSF RI.
• Myfaces como a implementação open source da Apache
• ADF Faces da Oracle
• A implementação da BEA (já vem embutido WebLogic)
• A implementação da IBM (já vem embutido WebSphere)
• Backbase
• NetAdvantage
7
10. Restore View Phase
Essa fase começa quando uma requisição de uma página JSF é
feita através de um link ou botão clicado.
Durante esta fase, a implementação JSF constrói a “view” da
página em manipulações de eventos, validadores que são salvos
na instância do FacesContext. É permitido resgatar todas as
informações necessárias para processar uma simples requisição.
Podemos ter acesso aos componentes do XHTML através da
classe UIViewRoot, também temos as classes HtmlForm,
HtmlOutputText, HtmlCommandButton, etc..
10
11. Apply Request Values Phase
Nessa fase, a árvore de componentes da página é restaurada
com os valores que foram enviados na requisição. Esses valores
são obtidos através da requisição, que é aplicada ao componente
em memória e não à propriedade da classe Bean para a qual o
componente aponta.
Existe um cenário em que quando um componente estiver
configurado com o atributo immediate=”true”, o valor dele será
diretamente ligado à propriedade na classe Bean. Esse atributo
tem a característica de tornar a aplicação imediata dos valores na
classe Bean para o componente.
11
12. Process Validations Phase
Durante essa fase, o JSF executa todos os validadores e valores
registrados que possuem a configuração do campo com o
atributo required=”true”, validators..
12
13. Update Model Values Phase
13
Nessa fase, os valores já estão validados e registrados nos
componentes que serão atribuídos à respectiva propriedade
na classe Bean. Esse processo envolve conversores dos tipos
de dados, como por exemplo, conversores personalizados
ou data e número.
14. Invoke Application Phase
14
Nessa fase, o JSF manipula qualquer nível de evento da
aplicação, desde o envio de um formulário ou chamada
para outra página através de um link. Depois que todos os
valores já estarem validados, convertidos e atribuídos para
as propriedades da classe Bean, se for o caso, o JSF
adicionará o método da classe Bean que adicionou a
requisição. Geralmente são eventos que retornam uma
String, que está associada a uma navegação de uma
página dentro da aplicação.
15. Render Response Phase
15
Por ser a fase final, é exigida que quando a
página for construída e devolvida para o browser,
o JSF solicite que cada componente de tela que
têm suas propriedades, comportamentos e forma,
faça a geração do próprio HTML.
16. Quais são as 5 técnicas?
16
1. Manipulação efetiva das fases do JSF
2. Uso efetivo de Ajax nas telas JSF
3. Uso efetivo de escopos do JSF
4. Reusar componentes prontos
5. Usar Facelets