SlideShare uma empresa Scribd logo
1 de 39
Novidades do JSF
  Um tour completo no JSF 2.2

      Alberto Lemos (Dr. Spock)
         Senior Software Architect
                SpockNET
Agenda

•   Sobre o JSF 2.2

•   Roadmap

•   Novas funcionalidades

•   Ajudando a evoluir o JSF

•   O projeto ScrumToys
Sobre o JSF 2.2

•   Especificação em
    desenvolvimento para o
    Java EE 7

•   JSR-344

•   Arquitetura de componentes
    visuais para aplicações Web

•   Lógica de UI principalmente
    no lado do servidor
Sobre o JSF 2.2

•   Estabelece separação entre
    definição de componentes da
    respectiva renderização

•   Permite os componentes ter
    o próprio “patch” da UI

•   Ciclo de vida bem definido:
    Inversão de controle
Objetivo
   “Prover uma tecnologia Java padrão para
construir aplicações Web rapidamente, fácil de
     manter, localizável, acessível, segura,
independente do dispositivo, boa apresentação
                e legal de usar!”
Linha do tempo JSF/JSR
•   JSR 127 (struts)            •   JSR 314 (Java EE 6)
    •   JSF 1.0 Março 2004
                                    •  JSF 2.0 Julho 2009
    •   JSF 1.1 Maio 2004
                                    •  JSF 2.1 Julho 2010
•   JSR 252 (Java EE 5)
                                    •  JSF 2.1 Manutenção R2
    •   JSF 1.2
                                       Novembro 2010
        May 2006
    •   JSF 1.2 Manutenção R1   •   JSR 344

    •
        Dezembro 2006
        JSF 1.2 Manutenção R2
                                    •  Iniciado em Abril 2011
        Junho 2008                  •  Early Draft review
    •   JSF 1.2 Manutenção R3          Dezembro 2011
        Agosto 2008
                                    •   JSF 2.2 Public Draft review
                                       Dezembro 2012
Roadmap
• Java EE 7 Roadmap
  • Previsto para finalizar no Outono 2013
  • https://blogs.oracle.com/theaquarium/entry/
    java_ee_7_roadmap
• JSF 2.2
  • Será finalizado junto com o Java EE 7
  • Executará em contêiners Java EE 6
Novas funcionalidades
Novas funcionalidades
•   Agrupados em três grupos por
    tamanho/importância:

    •   Large (6)
        http://bit.ly/JCP_20120911_BIG_TICKET


    •   Medium (28)
        http://bit.ly/JCP_20120911_MEDIUM


    •   Small (44)
        http://bit.ly/JCP_20120911_BUG_FIXES
Large Sized
 Features
Six Big Tickets
•   HTML5 Friendly Markup

•   Faces Flows

•   Cross Site Request Forgery
    Protection

•   Componente de Upload

•   Carga de Facelets via
    ResourceHandler

•   Multi-templating
HTML 5 Friendly Markup
•   Telas JSF são escritos numa VDL (View
    Declaration Language)
•   VDL Facelets é um arquivo XML com dois tipos
    de elementos:
    •   HTML
    •   Componentes JSF
•   HTML é repassado para o Navegador
•   Componentes JSF são interpretados no servidor
HTML 5 Friendly Markup
•   Antes do JSF 2.2:
    •   Tags JSF escondem HTML / JS / CSS / Img
    •   Renderizadores: Geram HTML e processam
        parâmetros recebidos do navegador
<html>...
     <p:colorPicker value=“#{colorBean.color2}” />
        <p:calendar value=“#{calendarBean.date1}” />
</html>

•   Não suporta uma funcionalidade do Navegador?
    Escreve um novo componente!
HTML 5 Friendly Markup
   •   Com o JSF 2.2:
       •   HTML puro com JS / CSS / Img
       •   Renderizadores: processam parâmetros
           recebidos do navegador
<html>...
    <input type=“color” jsf:value=“#{colorBean.color2}” />
    <input type=“date” jsf:value=“#{calendarBean.date1}” />
</html>

   •   Não suporta uma funcionalidade do Navegador?
       Use “pass through elements!
Faces Flows
•   Define o conceito de um “Flow”
•   Padroniza tecnologias presentes em:
    •   ADF Task Flows
    •   Spring Web Flow
    •   Apache MyFaces CODI
    •   Seam Framework Flows
•   Dica: Um Flow é análogo a um método Java!
Faces Flows
• Pode ser “chamado” de qualquer ponto da
  aplicação
• Único ponto de entrada
• Aceita parâmetros de entrada e saída
• Define um novo escopo: facesFlowScope
• Nova anotação CDI: @FlowScoped
Faces Flows
•   Navegação não é mais entre páginas
•   Navegação agora é entre nós de “flows”
•   Define tipos de nós:
    •   View - Representa uma página
    •   Method Call - Invoca método via EL desacoplado de UI
    •   Switch - Representa pontos de decisão num “flow”
    •   Flow Call - Representa uma invocação de outro “flow”
    •   Flow Return - Representa o retorno um “flow”
Faces Flows
•         Flow Navigation
    Durante execução, um “Flow”
    é representado por uma instância de
    javax.faces.flow.Flow
                   !  Flow represented at

•            runtime by instance of
    A linguagem para construção
             javax.faces.flow.Flow
    de “flows” ainda está em
          !  JSF 2.2 authoring
    discussão:
             experience for flow still

    •   XML
                         under discussion
                              –  XML

    •   Builder Builder
              – 
                              –  Fluent API

    •   API Fluente
         32   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Definindo um Flow
Empacotando um Flow
•   Estrutura de empacotamento num JAR:
    • META-INF/beans.xml
    • META-INF/flows/{flowName}/{flowName}-flow.xml
    • META-INF/flows/{flowName}/{viewNode}.xhtml
    • {javaPackagePath}/{javaClassName}.class
•   JAR é adicionado no Classpath (/WEB-INF/lib)

•   Fragmentos reusáveis de aplicação podem ser construídos, testados e
    distribuídos.
Cross-Site Request Forgery
• O que é “Cross-Site Request Forgery”?
  (CSRF pronuncia “see-surf”)
  http://en.wikipedia.org/wiki/Cross-site_request_forgery




• Ataque que força o usuário final executar
  ações indesejadas numa aplicação Web no
  qual está devidamente autenticado.
Cross-Site Request Forgery
• JSF 2.2 encripta, por default, o “view state”
• A cada requisição verifica:
 • Se é uma tela “protegida”, ou
 • Se é uma requisição de uma tela
     “protegida”, ou
   • Se o “referrer” da requisição é originária
     da aplicação Web
Upload de Arquivos
  • Implementação atual não tem suporte a Ajax
  • A versão final da especificação suportará Ajax
<h:inputFile id="file" value="#{fileUploadBean.uploadedFile}">
  <f:validator validatorId="FileValidator" />
</h:inputFile>
Upload de Arquivos
@ManagedBean
@RequestScoped
public class FileUploadBean {
    private Part uploadedFile; // getter/setter
    public String getFileText() {
        String text = "";
        if (null != uploadedFile) {
            try {
              InputStream is = uploadedFile.getInputStream();
              text = new Scanner( is ).useDelimiter("A").next();
            } catch (IOException ex) {}
        }
        return text;
    }
}
Upload de Arquivos
@FacesValidator(value="FileValidator")
public class FileValidator implements Validator {
    @Override
    public void validate(FacesContext context, UIComponent component,
                         Object value) throws ValidatorException {
       Part file = (Part) value;
      try {
          InputStream is = file.getInputStream();
          text = new Scanner( is ).useDelimiter("A").next();
       } catch (Exception ex) {
           throw new ValidatorException(“”, ex);
       }
       if (!text.contains("JSR-344")) {
           throw new ValidatorException(
                      new FacesMessage("Invalid file”);
       }
}
Carga de Facelets via
 ResourceHandler
•   JSF 2.0 Adicionou:

    •   Facelets

    •   ResourceHandler

•   Estes conceitos não eram
    unificados

•   Agora são unificados!

•   Tudo é carregado via
    ResourceHandler!
Multi-templating
•   Facelets permite padronizar elementos
    de página

•   Multi-templating permite padronizar
    elementos de site:
    •   sidebar

    •   menu de navegação

    •   área de conteúdo

•   Permite definir um contrato e suportar
    “skinnability”

•   Multi-templates podem ser
    empacotados em JARs
Multi-templating
1. <html xmlns="http://www.w3.org/1999/xhtml"
2.     xmlns:h="http://java.sun.com/jsf/html"
3.     xmlns:ui="http://java.sun.com/jsf/facelets">
4.
5. <body>
6.
7.     <ui:composition template="#{template}">
8.
9.
10.    </ui:composition>
11.
12. </body>
13.
14.</html>
Multi-templating
1. <?xml version="1.0" encoding="UTF-8"?>
2. <web-app>
3.
4.
5. <context-param>
6.         <param-name>javax.faces.view.TEMPLATE</param-name>
7.         <param-value>mybusiness</param-value>
8. </context-param>
9.
10.
11.</web-app>
Medium Sized
  Features
28 novas
        funcionalidades
•   Facelets:
    •   Default HTML5 DOCTYPE

    •   Criação programática de componentes
        compostos

    •   FaceletFactory API
•   Managed Beans

    •   Tudo são beans injetáveis
    •   ViewScoped

•   Recursos

    •   Relative ResourceHandler
Small Sized
 Features
44 correções de
        defeitos
•   Ajax

•   EL

•   Facelets

•   Lifecycle

•   Especificação de erros

•   Componentes/Renderizadores

•   Recursos
Contribuindo com a
    evolução do JSF 2.2
•   JSR-344 está sobre o JCP 2.8

•   Transparência e acesso da comunidade

•   1o. Passo: Listas de email
    - users@javaserverfaces-spec-public.java.net
    - jsr344-experts@javaserverfaces-spec-
    public.java.net


•   2o. Passo: Estudar a especificação e
    testar a implementação
    - http://jsf-spec.java.net/
    - http://jsf.java.net/
Contribuindo com a
    evolução do JSF 2.2


•   3o. Passo: Iniciativa adote uma JSR
    - http://soujava.org.br/servicos/adopt-a-jsr/

•   4o. Passo: Participar do projeto
    ScrumToys
    - scrumtoys@spock.com.br
O projeto ScrumToys
Perguntas
Mais informações
•   What’s New in JSF: A Complete Tour of JSF 2.2
    http://bit.ly/VCo88k
•   What’s new in JSF 2.2?
    http://jdevelopment.nl/jsf-22/
•   JavaServer Faces Community
    http://javaserverfaces.java.net/
•   JSR-344: JavaServer Faces 2.2
    http://bit.ly/jsr344
Obrigado!

• Contato:
  Dr. Spock
  javaone@spock.com.br

• Twitter:
  @drspockbr

• About me:
  http://about.me/drspockbr

Mais conteúdo relacionado

Mais procurados

Spring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webelliando dias
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring FrameworkNatanael Fonseca
 
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvemEvitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvemDr. Spock
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Anderson Araújo
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com PrimefacesFabio Noth
 
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesJSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesEder Magalhães
 
JavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeJavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeRafael Ponte
 
Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0Paulo Neto
 
Migrando de Applets para JavaFX, e Modelos de Distribuição de Apps
Migrando de Applets para JavaFX, e Modelos de Distribuição de AppsMigrando de Applets para JavaFX, e Modelos de Distribuição de Apps
Migrando de Applets para JavaFX, e Modelos de Distribuição de AppsBruno Borges
 
Spring: uma introdução prática
Spring: uma introdução práticaSpring: uma introdução prática
Spring: uma introdução práticaJosé Barros
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Helder da Rocha
 
O framework spring
O framework springO framework spring
O framework springBruno Catão
 

Mais procurados (20)

Spring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento web
 
As novidades da nova versão do Java 9
As novidades da nova versão do Java 9As novidades da nova versão do Java 9
As novidades da nova versão do Java 9
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring Framework
 
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvemEvitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?
 
Jsf 2 slideshare
Jsf 2 slideshareJsf 2 slideshare
Jsf 2 slideshare
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com Primefaces
 
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesJSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
 
JavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeJavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividade
 
Introdução Play framework
Introdução Play frameworkIntrodução Play framework
Introdução Play framework
 
GUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EEGUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EE
 
Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0
 
Migrando de Applets para JavaFX, e Modelos de Distribuição de Apps
Migrando de Applets para JavaFX, e Modelos de Distribuição de AppsMigrando de Applets para JavaFX, e Modelos de Distribuição de Apps
Migrando de Applets para JavaFX, e Modelos de Distribuição de Apps
 
Frameworks em Java
Frameworks em JavaFrameworks em Java
Frameworks em Java
 
Infrastructure Testing
Infrastructure TestingInfrastructure Testing
Infrastructure Testing
 
Spring: uma introdução prática
Spring: uma introdução práticaSpring: uma introdução prática
Spring: uma introdução prática
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
O framework spring
O framework springO framework spring
O framework spring
 
Java v1.1
Java v1.1Java v1.1
Java v1.1
 

Semelhante a Novidades do JSF 2.2

Anatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer FacesAnatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer Facescejug
 
JSF 2 Components JustJava2011
JSF 2 Components JustJava2011JSF 2 Components JustJava2011
JSF 2 Components JustJava2011Eder Magalhães
 
Java EE 6 e JBoss 6.0
Java EE 6 e JBoss 6.0Java EE 6 e JBoss 6.0
Java EE 6 e JBoss 6.0Edgar Silva
 
Richfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoRichfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoEder Magalhães
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeRafael Benevides
 
Minicurso Java Server Faces
Minicurso Java Server FacesMinicurso Java Server Faces
Minicurso Java Server FacesJoão Longo
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysDr. Spock
 
Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaMariana de Azevedo Santos
 
TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.Rogério Napoleão Jr.
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesRafael Ponte
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesRodrigo Cândido da Silva
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysDr. Spock
 
Inovações Na Plataforma Java
Inovações Na Plataforma JavaInovações Na Plataforma Java
Inovações Na Plataforma JavaFilipe Portes
 

Semelhante a Novidades do JSF 2.2 (20)

Anatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer FacesAnatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer Faces
 
Introdução a jsf
Introdução a jsfIntrodução a jsf
Introdução a jsf
 
JSF 2 Components JustJava2011
JSF 2 Components JustJava2011JSF 2 Components JustJava2011
JSF 2 Components JustJava2011
 
Java EE 6 e JBoss 6.0
Java EE 6 e JBoss 6.0Java EE 6 e JBoss 6.0
Java EE 6 e JBoss 6.0
 
Tutorial JSF 2.0 (2012)
Tutorial JSF 2.0 (2012)Tutorial JSF 2.0 (2012)
Tutorial JSF 2.0 (2012)
 
Richfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoRichfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais rico
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpike
 
Minicurso Java Server Faces
Minicurso Java Server FacesMinicurso Java Server Faces
Minicurso Java Server Faces
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em Java
 
TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer Faces
 
GUJavaSC - Java EE 7 In Action
GUJavaSC - Java EE 7 In ActionGUJavaSC - Java EE 7 In Action
GUJavaSC - Java EE 7 In Action
 
Aula parte 2 de JSF 2.2
Aula parte 2 de JSF 2.2Aula parte 2 de JSF 2.2
Aula parte 2 de JSF 2.2
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
 
JBoss TRE - Aula1
JBoss TRE - Aula1JBoss TRE - Aula1
JBoss TRE - Aula1
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Inovações Na Plataforma Java
Inovações Na Plataforma JavaInovações Na Plataforma Java
Inovações Na Plataforma Java
 

Mais de Dr. Spock

Improving Batch-Process Testing Techniques with a Domain-Specific Language
Improving Batch-Process Testing Techniques with a Domain-Specific LanguageImproving Batch-Process Testing Techniques with a Domain-Specific Language
Improving Batch-Process Testing Techniques with a Domain-Specific LanguageDr. Spock
 
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...Dr. Spock
 
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6Dr. Spock
 
TDC2011: Spring Mobile
TDC2011: Spring MobileTDC2011: Spring Mobile
TDC2011: Spring MobileDr. Spock
 
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvens
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvensTDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvens
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvensDr. Spock
 
TDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software EnterpriseTDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software EnterpriseDr. Spock
 
TDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & AzureTDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & AzureDr. Spock
 
Spring Framework no desenvolvimento móvel
Spring Framework no desenvolvimento móvelSpring Framework no desenvolvimento móvel
Spring Framework no desenvolvimento móvelDr. Spock
 
Desafios no deploy de aplicações Java EE 6 no Microsoft Azure
Desafios no deploy de aplicações Java EE 6 no Microsoft AzureDesafios no deploy de aplicações Java EE 6 no Microsoft Azure
Desafios no deploy de aplicações Java EE 6 no Microsoft AzureDr. Spock
 
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer Faces
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer FacesPerformance Tips and Tricks: Java EE, Java Persistence API and JavaServer Faces
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer FacesDr. Spock
 
Dicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSFDicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSFDr. Spock
 
Computação Física com Arduino, Program-ME e Java
Computação Física com Arduino, Program-ME e JavaComputação Física com Arduino, Program-ME e Java
Computação Física com Arduino, Program-ME e JavaDr. Spock
 
Spring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do FrameworkSpring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do FrameworkDr. Spock
 
Produtividade com Spring Roo no Google App Engine
Produtividade com Spring Roo no Google App EngineProdutividade com Spring Roo no Google App Engine
Produtividade com Spring Roo no Google App EngineDr. Spock
 
Criando uma Aplicação Web com Spring Roo em 5 minutos!
Criando uma Aplicação Web com Spring Roo em 5 minutos!Criando uma Aplicação Web com Spring Roo em 5 minutos!
Criando uma Aplicação Web com Spring Roo em 5 minutos!Dr. Spock
 
Spring Framework 3: Um 'brainstorm' de novas funcionalidades
Spring Framework 3: Um 'brainstorm' de novas funcionalidadesSpring Framework 3: Um 'brainstorm' de novas funcionalidades
Spring Framework 3: Um 'brainstorm' de novas funcionalidadesDr. Spock
 
Dicas e Truques sobre Performance em Java EE, JPA e JSF
Dicas e Truques sobre Performance em Java EE, JPA e JSFDicas e Truques sobre Performance em Java EE, JPA e JSF
Dicas e Truques sobre Performance em Java EE, JPA e JSFDr. Spock
 
Computação Física com Arduino/Program-ME e a Plataforma Java
Computação Física com Arduino/Program-ME e a Plataforma JavaComputação Física com Arduino/Program-ME e a Plataforma Java
Computação Física com Arduino/Program-ME e a Plataforma JavaDr. Spock
 
Os 5 Níveis de Reuso
Os 5 Níveis de ReusoOs 5 Níveis de Reuso
Os 5 Níveis de ReusoDr. Spock
 
JSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaJSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaDr. Spock
 

Mais de Dr. Spock (20)

Improving Batch-Process Testing Techniques with a Domain-Specific Language
Improving Batch-Process Testing Techniques with a Domain-Specific LanguageImproving Batch-Process Testing Techniques with a Domain-Specific Language
Improving Batch-Process Testing Techniques with a Domain-Specific Language
 
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
 
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6
 
TDC2011: Spring Mobile
TDC2011: Spring MobileTDC2011: Spring Mobile
TDC2011: Spring Mobile
 
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvens
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvensTDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvens
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvens
 
TDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software EnterpriseTDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software Enterprise
 
TDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & AzureTDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & Azure
 
Spring Framework no desenvolvimento móvel
Spring Framework no desenvolvimento móvelSpring Framework no desenvolvimento móvel
Spring Framework no desenvolvimento móvel
 
Desafios no deploy de aplicações Java EE 6 no Microsoft Azure
Desafios no deploy de aplicações Java EE 6 no Microsoft AzureDesafios no deploy de aplicações Java EE 6 no Microsoft Azure
Desafios no deploy de aplicações Java EE 6 no Microsoft Azure
 
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer Faces
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer FacesPerformance Tips and Tricks: Java EE, Java Persistence API and JavaServer Faces
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer Faces
 
Dicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSFDicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSF
 
Computação Física com Arduino, Program-ME e Java
Computação Física com Arduino, Program-ME e JavaComputação Física com Arduino, Program-ME e Java
Computação Física com Arduino, Program-ME e Java
 
Spring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do FrameworkSpring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do Framework
 
Produtividade com Spring Roo no Google App Engine
Produtividade com Spring Roo no Google App EngineProdutividade com Spring Roo no Google App Engine
Produtividade com Spring Roo no Google App Engine
 
Criando uma Aplicação Web com Spring Roo em 5 minutos!
Criando uma Aplicação Web com Spring Roo em 5 minutos!Criando uma Aplicação Web com Spring Roo em 5 minutos!
Criando uma Aplicação Web com Spring Roo em 5 minutos!
 
Spring Framework 3: Um 'brainstorm' de novas funcionalidades
Spring Framework 3: Um 'brainstorm' de novas funcionalidadesSpring Framework 3: Um 'brainstorm' de novas funcionalidades
Spring Framework 3: Um 'brainstorm' de novas funcionalidades
 
Dicas e Truques sobre Performance em Java EE, JPA e JSF
Dicas e Truques sobre Performance em Java EE, JPA e JSFDicas e Truques sobre Performance em Java EE, JPA e JSF
Dicas e Truques sobre Performance em Java EE, JPA e JSF
 
Computação Física com Arduino/Program-ME e a Plataforma Java
Computação Física com Arduino/Program-ME e a Plataforma JavaComputação Física com Arduino/Program-ME e a Plataforma Java
Computação Física com Arduino/Program-ME e a Plataforma Java
 
Os 5 Níveis de Reuso
Os 5 Níveis de ReusoOs 5 Níveis de Reuso
Os 5 Níveis de Reuso
 
JSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaJSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com Java
 

Novidades do JSF 2.2

  • 1. Novidades do JSF Um tour completo no JSF 2.2 Alberto Lemos (Dr. Spock) Senior Software Architect SpockNET
  • 2. Agenda • Sobre o JSF 2.2 • Roadmap • Novas funcionalidades • Ajudando a evoluir o JSF • O projeto ScrumToys
  • 3. Sobre o JSF 2.2 • Especificação em desenvolvimento para o Java EE 7 • JSR-344 • Arquitetura de componentes visuais para aplicações Web • Lógica de UI principalmente no lado do servidor
  • 4. Sobre o JSF 2.2 • Estabelece separação entre definição de componentes da respectiva renderização • Permite os componentes ter o próprio “patch” da UI • Ciclo de vida bem definido: Inversão de controle
  • 5. Objetivo “Prover uma tecnologia Java padrão para construir aplicações Web rapidamente, fácil de manter, localizável, acessível, segura, independente do dispositivo, boa apresentação e legal de usar!”
  • 6. Linha do tempo JSF/JSR • JSR 127 (struts) • JSR 314 (Java EE 6) • JSF 1.0 Março 2004 • JSF 2.0 Julho 2009 • JSF 1.1 Maio 2004 • JSF 2.1 Julho 2010 • JSR 252 (Java EE 5) • JSF 2.1 Manutenção R2 • JSF 1.2 Novembro 2010 May 2006 • JSF 1.2 Manutenção R1 • JSR 344 • Dezembro 2006 JSF 1.2 Manutenção R2 • Iniciado em Abril 2011 Junho 2008 • Early Draft review • JSF 1.2 Manutenção R3 Dezembro 2011 Agosto 2008 • JSF 2.2 Public Draft review Dezembro 2012
  • 7. Roadmap • Java EE 7 Roadmap • Previsto para finalizar no Outono 2013 • https://blogs.oracle.com/theaquarium/entry/ java_ee_7_roadmap • JSF 2.2 • Será finalizado junto com o Java EE 7 • Executará em contêiners Java EE 6
  • 9. Novas funcionalidades • Agrupados em três grupos por tamanho/importância: • Large (6) http://bit.ly/JCP_20120911_BIG_TICKET • Medium (28) http://bit.ly/JCP_20120911_MEDIUM • Small (44) http://bit.ly/JCP_20120911_BUG_FIXES
  • 11. Six Big Tickets • HTML5 Friendly Markup • Faces Flows • Cross Site Request Forgery Protection • Componente de Upload • Carga de Facelets via ResourceHandler • Multi-templating
  • 12. HTML 5 Friendly Markup • Telas JSF são escritos numa VDL (View Declaration Language) • VDL Facelets é um arquivo XML com dois tipos de elementos: • HTML • Componentes JSF • HTML é repassado para o Navegador • Componentes JSF são interpretados no servidor
  • 13. HTML 5 Friendly Markup • Antes do JSF 2.2: • Tags JSF escondem HTML / JS / CSS / Img • Renderizadores: Geram HTML e processam parâmetros recebidos do navegador <html>... <p:colorPicker value=“#{colorBean.color2}” /> <p:calendar value=“#{calendarBean.date1}” /> </html> • Não suporta uma funcionalidade do Navegador? Escreve um novo componente!
  • 14. HTML 5 Friendly Markup • Com o JSF 2.2: • HTML puro com JS / CSS / Img • Renderizadores: processam parâmetros recebidos do navegador <html>... <input type=“color” jsf:value=“#{colorBean.color2}” /> <input type=“date” jsf:value=“#{calendarBean.date1}” /> </html> • Não suporta uma funcionalidade do Navegador? Use “pass through elements!
  • 15. Faces Flows • Define o conceito de um “Flow” • Padroniza tecnologias presentes em: • ADF Task Flows • Spring Web Flow • Apache MyFaces CODI • Seam Framework Flows • Dica: Um Flow é análogo a um método Java!
  • 16. Faces Flows • Pode ser “chamado” de qualquer ponto da aplicação • Único ponto de entrada • Aceita parâmetros de entrada e saída • Define um novo escopo: facesFlowScope • Nova anotação CDI: @FlowScoped
  • 17. Faces Flows • Navegação não é mais entre páginas • Navegação agora é entre nós de “flows” • Define tipos de nós: • View - Representa uma página • Method Call - Invoca método via EL desacoplado de UI • Switch - Representa pontos de decisão num “flow” • Flow Call - Representa uma invocação de outro “flow” • Flow Return - Representa o retorno um “flow”
  • 18. Faces Flows • Flow Navigation Durante execução, um “Flow” é representado por uma instância de javax.faces.flow.Flow !  Flow represented at • runtime by instance of A linguagem para construção javax.faces.flow.Flow de “flows” ainda está em !  JSF 2.2 authoring discussão: experience for flow still • XML under discussion –  XML • Builder Builder –  –  Fluent API • API Fluente 32 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 20. Empacotando um Flow • Estrutura de empacotamento num JAR: • META-INF/beans.xml • META-INF/flows/{flowName}/{flowName}-flow.xml • META-INF/flows/{flowName}/{viewNode}.xhtml • {javaPackagePath}/{javaClassName}.class • JAR é adicionado no Classpath (/WEB-INF/lib) • Fragmentos reusáveis de aplicação podem ser construídos, testados e distribuídos.
  • 21. Cross-Site Request Forgery • O que é “Cross-Site Request Forgery”? (CSRF pronuncia “see-surf”) http://en.wikipedia.org/wiki/Cross-site_request_forgery • Ataque que força o usuário final executar ações indesejadas numa aplicação Web no qual está devidamente autenticado.
  • 22. Cross-Site Request Forgery • JSF 2.2 encripta, por default, o “view state” • A cada requisição verifica: • Se é uma tela “protegida”, ou • Se é uma requisição de uma tela “protegida”, ou • Se o “referrer” da requisição é originária da aplicação Web
  • 23. Upload de Arquivos • Implementação atual não tem suporte a Ajax • A versão final da especificação suportará Ajax <h:inputFile id="file" value="#{fileUploadBean.uploadedFile}"> <f:validator validatorId="FileValidator" /> </h:inputFile>
  • 24. Upload de Arquivos @ManagedBean @RequestScoped public class FileUploadBean { private Part uploadedFile; // getter/setter public String getFileText() { String text = ""; if (null != uploadedFile) { try { InputStream is = uploadedFile.getInputStream(); text = new Scanner( is ).useDelimiter("A").next(); } catch (IOException ex) {} } return text; } }
  • 25. Upload de Arquivos @FacesValidator(value="FileValidator") public class FileValidator implements Validator { @Override public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException { Part file = (Part) value; try { InputStream is = file.getInputStream(); text = new Scanner( is ).useDelimiter("A").next(); } catch (Exception ex) { throw new ValidatorException(“”, ex); } if (!text.contains("JSR-344")) { throw new ValidatorException( new FacesMessage("Invalid file”); } }
  • 26. Carga de Facelets via ResourceHandler • JSF 2.0 Adicionou: • Facelets • ResourceHandler • Estes conceitos não eram unificados • Agora são unificados! • Tudo é carregado via ResourceHandler!
  • 27. Multi-templating • Facelets permite padronizar elementos de página • Multi-templating permite padronizar elementos de site: • sidebar • menu de navegação • área de conteúdo • Permite definir um contrato e suportar “skinnability” • Multi-templates podem ser empacotados em JARs
  • 28. Multi-templating 1. <html xmlns="http://www.w3.org/1999/xhtml" 2. xmlns:h="http://java.sun.com/jsf/html" 3. xmlns:ui="http://java.sun.com/jsf/facelets"> 4. 5. <body> 6. 7. <ui:composition template="#{template}"> 8. 9. 10. </ui:composition> 11. 12. </body> 13. 14.</html>
  • 29. Multi-templating 1. <?xml version="1.0" encoding="UTF-8"?> 2. <web-app> 3. 4. 5. <context-param> 6. <param-name>javax.faces.view.TEMPLATE</param-name> 7. <param-value>mybusiness</param-value> 8. </context-param> 9. 10. 11.</web-app>
  • 30. Medium Sized Features
  • 31. 28 novas funcionalidades • Facelets: • Default HTML5 DOCTYPE • Criação programática de componentes compostos • FaceletFactory API • Managed Beans • Tudo são beans injetáveis • ViewScoped • Recursos • Relative ResourceHandler
  • 33. 44 correções de defeitos • Ajax • EL • Facelets • Lifecycle • Especificação de erros • Componentes/Renderizadores • Recursos
  • 34. Contribuindo com a evolução do JSF 2.2 • JSR-344 está sobre o JCP 2.8 • Transparência e acesso da comunidade • 1o. Passo: Listas de email - users@javaserverfaces-spec-public.java.net - jsr344-experts@javaserverfaces-spec- public.java.net • 2o. Passo: Estudar a especificação e testar a implementação - http://jsf-spec.java.net/ - http://jsf.java.net/
  • 35. Contribuindo com a evolução do JSF 2.2 • 3o. Passo: Iniciativa adote uma JSR - http://soujava.org.br/servicos/adopt-a-jsr/ • 4o. Passo: Participar do projeto ScrumToys - scrumtoys@spock.com.br
  • 38. Mais informações • What’s New in JSF: A Complete Tour of JSF 2.2 http://bit.ly/VCo88k • What’s new in JSF 2.2? http://jdevelopment.nl/jsf-22/ • JavaServer Faces Community http://javaserverfaces.java.net/ • JSR-344: JavaServer Faces 2.2 http://bit.ly/jsr344
  • 39. Obrigado! • Contato: Dr. Spock javaone@spock.com.br • Twitter: @drspockbr • About me: http://about.me/drspockbr