Aguardando o JSF 2.0 - PowerPoint PPT Presentation

1 / 43
About This Presentation
Title:

Aguardando o JSF 2.0

Description:

Aguardando o JSF 2.0 Vin cius Rodrigues Nunes Agenda O que JSF hoje? Por que JSF deu certo? O que vir de novo na vers o 2? O que j pode ser feito? – PowerPoint PPT presentation

Number of Views:245
Avg rating:3.0/5.0
Slides: 44
Provided by: Vini154
Category:
Tags: jsf | aguardando

less

Transcript and Presenter's Notes

Title: Aguardando o JSF 2.0


1
Aguardando o JSF 2.0
  • Vinícius Rodrigues Nunes

2
Agenda
  • O que é JSF hoje?
  • Por que JSF deu certo?
  • O que virá de novo na versão 2?
  • O que já pode ser feito?
  • Onde encontrar mais informações?
  • Como contribuir?

3
Agenda
  • O que é JSF hoje?
  • Por que JSF deu certo?
  • O que virá de novo na versão 2?
  • O que já pode ser feito?
  • Onde encontrar mais informações?
  • Como contribuir?

4
O que é o JSF hoje? características
  • Java Server Faces
  • framework baseado em componentes não em tags
  • simplifica o desenvolvimento de aplicações web
  • considera as ferramentas de desenvolvimento
  • se adequa a diversos tipos de desenvolvedores
  • utiliza boas práticas e padrões de projeto já
    estabelecidos
  • preparado para multi-renderização
  • Falando javanês
  • especificação da comunidade Java com 7 anos de
    idade
  • dependente da API de Servlets
  • parte da especificação guarda-chuva EE 5
    (versão 1.0)

5
O que é o JSF hoje? Versões 1.0 e 1.1
  • JSR127 2001 a 2004
  • Liderada por Ed Burns e Craig R. McClanahan
  • Especialistas Sun, Oracle, IBM, BEA, outros
  • Principais recursos
  • ciclo de vida em fases
  • data, method e component binding (JSF Expression
    Language)
  • propriedades e beans gerenciados (ManagedBean,
    managed properties)
  • árvores de componentes
  • biblioteca de componentes básicos com
    renderização HTML
  • criação de componentes, renderizadores,
    conversores e validadores
  • mais fácil de entender e estender
  • padronização do desenvolvimento web em torno de
    uma proposta unificada
  • http//www.jcp.org/en/jsr/detail?id127

6
O que é o JSF hoje? Versão 1.2
  • JSR 252 - 2004 a 2006, 2008 MDR
  • Liderada por Ed Burns e Roger Kitain
  • Especialistas Felipe Leme, Matt Raible, Hookom,
    ILOG, ...
  • Principais recursos
  • Unified Expression Language (MethodExpression,
    ValueExpression)
  • Solução do convívio tags JSF e tags HTML
    (Content Interweaving)
  • Mensagens de validação e conversão direto no
    componente
  • Melhoramentos na inclusão dinâmica
  • Integração com JSTL
  • Melhoramentos para portlets e client state
  • Tag fsetPropertyActionListener
  • http//www.jcp.org/en/jsr/detail?id252

7
O que é o JSF hoje? Versão 2.0
  • JSR314 - 2007 a 2009?
  • Liderada por Ed Burns e Roger Kitain
  • Especialistas Apache, Ericsson, IBM, Jason Lee,
    Vinícius Senger, SpringSource, BEA Systems,
    Exadel, IceSoft, Oracle, Red Hat, Sun, ILOG, Kito
    Mann, SAP, ...
  • Principais Recursos
  • vários, apresentados nas próximas páginas
  • http//www.jcp.org/en/jsr/detail?id314

8
Agenda
  • O que é JSF hoje?
  • Por que JSF deu certo?
  • O que virá de novo na versão 2?
  • O que já pode ser feito?
  • Onde encontrar mais informações?
  • Como contribuir?

9
Por que JSF deu certo? motivos
  • partiu de uma infra-estrutura bem sucedida a fim
    de resolver novas necessidades
  • incorpora soluções comprovadas a cada nova
    versão
  • busca a participação da comunidade
  • principais servidores de aplicação do mercado
    com suporte a implementação de referência escrita
    pela Sun
  • principais ferramentas de desenvolvimento
    possuem suporte respeitável aos recursos do JSF
  • preocupação com as novas tendências e soluções
  • entregas antecipadas de código para
    aculturamento e feedback
  • objetivos da especificação de encontro atendem
    às expectativas dos ouvidos

10
Por que JSF deu certo? motivos
  • API amadurecida para extensões. Possível
  • usar outras linguagens de descrição de página
    além de JSP e XHTML
  • definir outras linguagens para definição das
    regras de navegação
  • acrescentar capacidades comuns a componentes de
    comando
  • criar conversores e validadores além do já
    oferecidos
  • criar outras formas de renderização além do HTML
    e tecnologias associadas
  • customizar o ciclo de vida de processamento das
    requisições
  • criar componentes de entrada, saída, seleção,
    comando, ... além dos já oferecidos
  • criar eventos customizados além dos vários já
    disponíveis
  • manter características e recursos importantes
    dos componentes com a implementação de interfaces
    comportamentais
  • resolver expressões EL particulares além
    daquelas já resolvidas

11
Por que JSF deu certo? motivos
  • Dezenas de bibliotecas de componentes que
    ampliam a lista padrão e oferecem suporte a AJAX
    sem escrita de javascript ou escrita mínima
  • JBoss Richfaces
  • Apache MyFaces, Trinidad e Tobago
  • IceSoft IceFaces
  • Oracle ADF Faces
  • Sun Woodstock, JSFTemplating
  • e muito mais
  • http//www.jsfmatrix.net/

12
Agenda
  • O que é JSF hoje?
  • Por que JSF deu certo?
  • O que virá de novo na versão 2?
  • O que já pode ser feito?
  • Onde encontrar mais informações?
  • Como contribuir?

13
Demonstração projeto exemplo
  • Ferramenta de apoio ao gerenciamento com Scrum
  • Protótipo de interface de usuário

14
.. novo na versão 2.0 ? objetivos
  • Principais Objetivos
  • componentes customizados mais fáceis de
    desenvolver
  • suporte a AJAX
  • linguagem de descrição de páginas (PDL)
  • mínimo de configuração
  • melhor compatibilidade entre bibliotecas de
    diferentes fornecedores
  • Outros objetivos
  • reescrita do gerenciamento de estado
  • páginas guardáveis em favoritos
  • tempo de expedição minimizado
  • processamento e atualização parcial da árvore de
    componentes
  • novos escopos
  • melhoramento das mensagens de erro

Early Draft Review 2 pode e deve mudar pra
melhor até a Final Release
15
.. novo na versão 2.0 ? ProjectStage
  • Características
  • configuração inspirada no RAILS_ENV
  • opções Production, Development, UnitTest,
    SystemTest, Extension
  • opção padrão Production
  • configurada como parâmetro de contexto no
    web.xml
  • consultada a partir de ApplicationgetProjectStat
    e
  • valores que não sejam da enumeração são tratados
    como extensão
  • alternativa de consulta via JNDI
  • Principal Benefício
  • mudança de comportamento da aplicação de acordo
    com o valor definido
  • exemplos ausência de componente de mensagens,
    ausência de action em componentes de comando,
    biblioteca não encontrada, ...

16
.. novo na versão 2.0 ? ProjectStage
ltcontext-paramgt ltparam-namegtjavax.faces.PROJECT
_STAGElt/param-namegt ltparam-valuegtDevelopmentlt/pa
ram-valuegt lt/context-paramgt
Várias facilidades são oferecidas ao
desenvolvedor. O desenvolvedor também pode tomar
decisões de acordo com este parâmetro.
17
.. novo na versão 2.0 ? Escopo view
  • Características
  • inspirado em soluções como tsaveState do
    Tomahawk, escopo Page do Seam
  • e a4jkeepAlive do Richfaces
  • não é tão poderoso como o conceito de
    conversação do Seam
  • gera eventos de criação do mapa de atributos e
    zeramento do mesmo
  • deve ser usado em managed beans serializados
  • atributos estão disponíveis enquanto o usuário
    não navega para outra página
  • acessível via EL
  • Principal Benefício
  • mais uma opção de escopo para beans gerenciados
  • minimiza a necessidade do escopo de sessão

18
.. novo na versão 2.0 ? Escopo view
  • web.xml
  • ...
  • ltmanaged-beangt
  • ltmanaged-bean-namegtdashboardMBlt/managed-bean-nam
    egt
  • ltmanaged-bean-classgtjsf.mb.DashboardMBlt/managed-
    bean-classgt
  • ltmanaged-bean-scopegtviewlt/managed-bean-scopegt
  • lt/managed-beangt
  • dashboardMB.java
  • _at_ManagedBean(name"dashboard2MB", scope"view")
  • public class DashboardMB implements Serializable
  • ...

19
.. novo na versão 2.0 ? Component, FacesContext
  • Atributos de componente
  • Características acessíveis via EL
    (component) e via método UIComponentgetCurren
    tComponent
  • Principal Benefício criação de componentes de
    composição e identificação do componente em
    processamento durante o ciclo de vida da
    requisição.
  • Atributos do FacesContext
  • Características métodos de busca e definição
    similares aos de outros escopos
  • Principal Benefício melhora o desempenho ao
    minimizar a geração de eventos de request
    enviados ao assinar ServletRequestListener

20
.. novo na versão 2.0 ? PDL
  • Características
  • confirma a competência da classe ViewHandler ao
    permitir
  • mais uma linguagem de declaração
  • Facelets não precisa mais ser configurado no
    faces-config.xml nem no web.xml
  • Principal Benefício
  • encoraja o uso de outras PDL, ou seja, outros
    modos de se criar visões e,
  • incorpora a PDL mais aceita no mercado XHTML
    com Facelets

21
.. novo na versão 2.0 ? PDL
  • dashboard.xhtml

lt?xml version"1.0" encoding"ISO-8859-1"
?gt lthtml xmlns"http//www.w3.org/1999/xhtml"
xmlnsui"http//java.sun.com/jsf/facelets"
xmlnsh"http//java.sun.com/jsf/html"
xmlnsfhttp//java.sun.com/jsf/coregt ... lt/htmlgt
22
.. novo na versão 2.0 ? Eventos
  • Características
  • sistema de eventos renovado
  • possível assinar eventos em componentes
  • possível assinar eventos na aplicação
  • métodos subscribeToEvent e unsubscribeFromEvent
  • Alguns eventos
  • AfterAddToParentEvent durante a criação da
    árvore de componentes
  • BeforeRenderEvent durante a renderização da
    árvore de componentes
  • ViewMapCreatedEvent e ViewMapDestroyedEvent
    eventos do novo escopo view
  • Principal Benefício
  • mais facilidade para acrescentar recursos aos
    componentes e renderizadores sem a necessidade
    customizações

23
.. novo na versão 2.0 ? recursos
  • Características
  • recurso artefato que o componente utiliza para
    se renderiza no user-agent
  • publicados por convenção na pasta resources no
    webroot ou pasta meta-inf /resources de um jar
  • suporte a localização, biblioteca e respectivas
    versões, versões do componente
  • possível atualizar a versão do componente sem
    realizar redeploy da aplicação
  • possível registrar dependência de recursos via
    anotação _at_ResourceDependency e
    _at_ResourceDependencies
  • possível recuperar recurso via EL ou
    ExternalContextgetResource ou ClassLoadergetReso
    urce
  • possível realocar recursos no cabeçalho, corpo
    ou formulário (atributo target)
  • novas tags hhead, hbody, houtputScript,
    houtputStyle
  • Principal Benefício
  • simplificação do uso de recursos em páginas e
    componentes

24
...lthheadgt lttitlegtdashboard2MB.namelt/titl
egt lthoutputStylesheet library"css/1_1"
name"app.css"/gt lthoutputScript
library"javax.faces" name"ajax.js"
target"head"/gtlt/hheadgtlthbodygt... lthform
id"frmDashboard"gt ltimg src"resource'images/
tdc2008.jpg'" width"50px"/gt...
.. novo na versão 2.0 ? recursos
  • formato do identificador

resourceIdentifier localePrefix/libraryName
/libraryVersion/resourceName/resourceVersion
  • dashboard.xhtml

25
.. novo na versão 2.0 ? Suporte a AJAX
  • Características
  • inspirado no DynaFaces, Weblets, jMaki, Shale
    Remoting entre outros
  • biblioteca ajax.js
  • tags equivalentes a jsfExtajaxZone,
    a4jsupport, ...
  • Principal Benefício
  • uso de AJAX com pouca ou nenhuma escrita de
    javascript nativo na implementação de referência

26
.. novo na versão 2.0 ? Suporte a AJAX
Exemplo Iniciar Dashboard
lthcommandButton idbtnIniciar" valueIniciar"
onclick"javax.faces.Ajax.ajaxRequest(this,
event, execute this.id, render otStatus')
return false"/gt
Exemplo Adicionar Impedimento
   lthinputText value"dashboardMB.newImpediment
"     titleNew Impediment"        iditNewIm
pediment"        required"true"
actionListener"dashboardMB.addImp"       onke
yup"javax.faces.Ajax.ajaxRequest(this, event,
execute itNewImpediment', render
impedimentList')"/gt
27
.. novo na versão 2.0 ? EzComp
  • Características
  • localizados, por convenção, na pasta de recursos
  • baseados na proposta do Facelets
  • turbinados com a biblioteca composite
  • publicam eventos e valores para interessados
  • reconhecem conteúdo do corpo, facets e tipo do
    atributo
  • inspirado no Tag Files
  • convenção para reconhecimento de arquivo I18N
  • Principal Benefício
  • criação de componentes de composição sem criação
    de classes ou necessidade de configuração

28
.. novo na versão 2.0 ? EzComp
  • resources/components/titulo.xhtml
  • lt?xml version"1.0" encoding"ISO-8859-1" ?gt
  • ...
  • xmlnsuihttp//java.sun.com/jsf/facelets
  • xmlnscompositehttp//java.sun.com/jsf/composite
    gt
  • ltuicompositiongt
  • ltcompositeinterfacegt
  • ...
  • lt/compositeinterfacegt
  • ltcompositeimplementationgt
  • ...
  • lt/compositeimplementationgt
  • ...

29
.. novo na versão 2.0 ? EzComp
  • dashboard.xhtml
  • lthtml xmlns"http//www.w3.org/1999/xhtml"
  • xmlnsui"http//java.sun.com/jsf/facelets"
  • xmlnsh"http//java.sun.com/jsf/html"
  • xmlnsfhttp//java.sun.com/jsf/core
  • xmlnsappez"http//java.sun.com/jsf/composite/com
    ponentsgt
  • ...
  • ltappeztitulo id"tituloDashboard"
    textoDoTitulo"dashboard2MB.name"gt
  • lthpanelGroupgt
  • lthoutputLabel value"Objetivo" for""
    style"font-weight bold" /gt
  • lthoutputText value"dashboardMB.goals" /gt
  • lt/hpanelGroupgt
  • lt/appeztitulogt

30
Agenda
  • O que é JSF hoje?
  • Por que JSF deu certo?
  • O que virá de novo na versão 2?
  • O que já pode ser feito?
  • Onde encontrar mais informações?
  • Como contribuir?

31
O que já pode ser feito? Adoção
  • uso de uma das bibliotecas de componente com
    suporte a AJAX e a temas
  • Richfaces
  • Woodstock
  • IceFaces
  • ADF Faces
  • MyFaces Trinidad / Tobago
  • uso de Facelets para criação de templates e
    composite components
  • uso de uma ferramenta de desenvolvimento com bom
    suporte a JSF
  • testes automatizados com JUnit , HttpUnit e
    JSFUnit
  • uso minimizado do escopo de sessão
  • aprendizado e uso JBoss Seam aprendizado
  • aprendizado e uso Spring Web

32
O que já pode ser feito? Dicas
  • usar mais de um faces-config.xml na mesma
    aplicação
  • criar páginas compostas
  • registrar as categorias de logging da RI,
    Facelets e biblioteca de componentes
  • utilizar jQuery para pequenas manipulações
    cliente
  • usar validadores clientes das bibliotecas
  • usar bibliotecas JS prontas para máscaras e
    validações sintáticas
  • turbinar processamento parcial enviando poucos
    valores e atualizando poucos componentes
  • preferir tags do Facelets às do JSTL
  • criar componentes completos apenas se a
    customização de um dos seguintes não é
    suficiente conversor, validador e renderizador

33
O que já pode ser feito? Dicas
  • cuidar com fverbatim e com o atributo
    rendered. Preferir hpanelGroup, a4joutputPanel
    ou equivalente
  • usar atributos primitivos em Managed Bean como
    wrappers, facilitando a manipulação de valores
    nulos
  • customizar conversão de data para o formato e
    fuso horário do usuário, se aplicável
  • usar anotações _at_PostConstruct e _at_PreDestroy
  • usar ltfview beforePhase /gt para inicializações
    com postback e TagHandler do Facelets sem
    postback
  • customizar mensagens de conversão, validação
    entre outras

34
Agenda
  • O que é JSF hoje?
  • Por que JSF deu certo?
  • O que virá de novo na versão 2?
  • O que já pode ser feito?
  • Onde encontrar mais informações?
  • Como contribuir?

35
Onde encontrar mais informações?
  • Minicursos Globalcode
  • MC 17 - Introdução ao Java Server Faces
  • MC 31 - Desenvolvendo um aplicativo completo
    com JSF, Facelets, ...
  • MC 46 - JBoss Seam e Spring
  • MC 45 - JSF e Facelets
  • http//www.globalcode.com.br/site/gratuitos/miniCu
    rsos.seam
  • Livros
  • JSF in Action - ISBN 1932394125
  • Core JSF ISBN 131463055
  • The Complete Reference JSF ISBN 0072262400

36
Onde encontrar mais informações?
  • Blogs, sítios e materiais online
  • Mojarra team
  • Ed Burns http//weblogs.java.net/blog/edburns/
  • Jason Lee http//blogs.steeplesoft.com/
  • Ryan Lubke http//blogs.sun.com/rlubke/
  • Roger Kitain http//weblogs.java.net/blog/rogerk/
  • Jacob Hookom http//weblogs.java.net/blog/jhook/
  • Mais Venkat Sadasivam, Jim Driscoll, Ken
    Paulsen, Max Katz, Rafael Ponte
  • JSF Central
  • JSF Tutorials
  • Java Server Faces Internacional Group
  • Sítios das bibliotecas de componente
  • Revistas
  • Java Magazine
  • Mundo Java

37
Agenda
  • O que é JSF hoje?
  • Por que JSF deu certo?
  • O que virá de novo na versão 2?
  • O que já pode ser feito?
  • Onde encontrar mais informações?
  • Como contribuir?

38
Como contribuir? motivação
  • JSF é uma das habilidades técnicas mais pedidas
    hoje no mundo Java
  • JSF tem workaround para várias necessidades
    ainda não disponíveis nas implementações de
    referências
  • JSF é suportado pelas ferramentas de
    desenvolvimento e apoiado pelos principais
    players da área Oracle, Sun, IBM, ILog,SAP, ...
  • JSF integra com linguagens de script
  • Portanto é uma alternativa atualizada
  • criada pela comunidade e
  • para a comunidade

39
Como contribuir? várias formas
  • Pode ser ainda melhor !
  • Estamos todos convidados a
  • acessar regularmente o site da especificação JSR
    314
  • ler os blogs dos membros da equipe do Sun
    Mojarra JSF RI
  • usar as versões draft em seus projetos de estudo
  • ler as mudanças na especificação
  • identificar bugs
  • sugerir melhorias e ajustes
  • jsr-314-comments_at_jcp.org

40
Perguntas e Respostas
?
41
Como configurar ? mudanças
http//server.dzone.com/blogs/arungupta/2008/10/15
/totd-48-converting-a-jsf-12-ap
  • faces-config.xml
  • ltfaces-config xmlns"http//java.sun.com/xml/ns/ja
    vaee"
  • xmlnsxsi"http//www.w3.org/2001/XMLSchema-instan
    ce"
  • xsischemaLocation"http//java.sun.com/xml/ns/jav
    aee http//java.sun.com/xml/ns/javaee/web-facescon
    fig_2_0.xsd" version"2.0"gt
  • JARs alterados
  • jsf-api.jar e jsf-ri.jar
  • JARs mantidos
  • jsf-facelets.jar, jstl.jar, standard.jar,
  • commons-beansutils.jar, commons-digester.jar,
    commons-collections.jar, commons-logging.jar

42
Quem é o palestrante ?
  • Vinícius Rodrigues Nunes (vinny_at_voffice.com.br)
  • Instrutor dos cursos de Java da VOffice a 3 anos
  • Técnico em Processamento de Dados, Bacharelado em
    Ciências da Computação e Pós-Graduação em
    Engenharia de Software OO
  • Trabalha com desenvolvimento de software web com
    Java desde 1999
  • Certificações SCJP e SCWCD
  • Preferências Torcedor das equipes de basquete
    de Joinville e do Flamengo, fã de Lost e Heroes,
    usuário de Windows Vista e Eclipse
  • Afeições técnicas uso diário idéias simples mais
    muito úteis como RSS , classificação por Tags,
    podcasts e videocasts

43
Feedback
  • Quem já usa JSF 1.x em produção?
  • Quem usa Richfaces, IceFaces, MyFaces, ADF,
    Woodstock, RI pura, outro?
  • Quem já usa Facelets em produção?
  • Quem pretende usar JSF nos próximos 3 meses?
  • Quem já baixou a EDR 2 e executou os exemplos ?
  • Quem já leu a especificação JSF 2 ?
  • Quem acompanha algum dos blogs JSF 2 citados?
Write a Comment
User Comments (0)
About PowerShow.com