SlideShare uma empresa Scribd logo
1 de 38
JSF 2.0: Uma Evolução nas
      Interfaces Web com Java
   Vinicius Senger            Alberto J Lemos
                                (Dr. Spock)
Sócio Diretor e Fundador   Senior Software Architect
      Globalcode             Instrutor Globalcode


                                     Globalcode – Open4Education
Objetivo




      “O apresentar na teoria e prática as
   principais características do JSF 2.0 e os
      conceitos de computação física com
                  Program-ME”




                                   Globalcode – Open4Education
Agenda

 >   Sobre o JavaServer Faces
 >   Benefícios da tecnologia
 >   Deficiências na versão atual
 >   Principais Novidades do JSF 2.0
 >   Demonstração do ScrumToys
 >   Sobre o Arduino/Program-ME
 >   Demonstração do Program-ME
 >   Perguntas & Respostas



                                       Globalcode – Open4Education
O que é JavaServer Faces
 > Do mesmo criador do Struts;
 > Paradigma de programação visual de User-
   interfaces aplicado à web;
 > É um framework que permite a criação de
   aplicações Web com semântica de Swing
   implementando MVC;
 > “Toolability = Ferramentabilidade”;
 > É uma especificação Java EE;
 > Faces é mais fácil de aprender que outros
   frameworks;
 > Faces é mais componentizado;
                                     Globalcode – Open4Education
Benefícios da Tecnologia
 > Diversas bibliotecas de componentes disponíveis;
 > Suporte nas principais IDEs;
 > Ampla literatura, treinamentos e foruns de
   discussão;
 > Integração com outras tecnologias e frameworks:
   Spring, JPA, EJB, JBoss Seam
 > Encapsula a complexidade do HTML, CSS e
   JavaScript
 > Oferece servicos fundamentais como
   conversores e validadores;

                                      Globalcode – Open4Education
JavaServer Faces
Página
 JSF




                   Managed Bean
config.xml
  faces-




                                  Globalcode – Open4Education
Demonstração




               Globalcode – Open4Education
Deficiências no JSF 1.2 (anterior)
 > Não oferece Templates de tela “built in”
 > Complexidade para criar componentes visuais
 > Não permite criar Bookmarkble URLs
 > Não suporta AJAX nativamente
 > Incompatibilidade entre bibliotecas de
   componentes
 > Uso de JSP: Scriptlets, CustomTags, etc
 > Muitas configurações em XML


                                        Globalcode – Open4Education
Principais Novidades do JSF 2.0
 > Suporte a anotações para configuração

 > Suporte a AJAX

 > PDL baseado em XHTML (Facelets) e JSP

 > PDL extensível

 > Novo escopo para MBs: ViewScoped e
   CustomScoped

 > Bookmarkable URLs

                                     Globalcode – Open4Education
Principais Novidades do JSF 2.0
 > Suporte a definição de estágio do projeto

 > Mecanismo de Eventos

 > Gerenciamento de Recursos

 > Suporte a criação de componentes via XHTML

 > Navegação implícita e condicional




                                       Globalcode – Open4Education
ScrumToys = JSF 2.0 Demo
 > Aplicação para gestão de projetos, sprints,
   estórias e tarefas
 > Implementa o conceito de skins permitindo ao
   usuário trocar as cores da tela
 > JSF 2, JPA, Maven, Glassfish, JavaDB
 > Implementa Bookmarkble URL
 > Implementação de componentes compostos
 > Open Source, parte do projeto Glassfish e agora
   NetBeans
 > Usa Beans Validation

                                      Globalcode – Open4Education
Siga o mestre!




                 Globalcode – Open4Education
Novas Anotações Suportadas
 >   @ManagedBean(name=”dashBoardBean”)
 >   @ManagedProperty(“#{taskManager}”)
 >   @RequestScoped
 >   @ViewScoped
 >   @SessionScoped
 >   @ApplicationScoped
 >   @CustomScoped
 >   @FacesConverter(forClass=Project.class)
 >   @FacesValidator

                                      Globalcode – Open4Education
Suporte a AJAX

 <h:commandButton id="btnDeleteSprint"
   styleClass="botaoPostIt"
   action="#{sprintManager.remove}"
   value="#{i18n['sprint.show.button.delete']} AJAX"
   onclick="jsf.ajax.request(this, event, {execute:
   'frmListSprints', render: 'frmListSprints'});
   return false;" />

 Também suporta uma tag: <f:ajax>



                                        Globalcode – Open4Education
PDL baseado em XHTML

 <html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">

 Incorpora o Facelets.

 Não são necessárias configurações extras no
  web.xml.

                                      Globalcode – Open4Education
Novo escopo: ViewScoped

 No faces-config.xml:
 <managed-bean>
  <managed-bean-name>dashboardMB</managed-bean-name>
  <managed-bean-class>jsf.mb.DashboardMB</managed-bean-class>
  <managed-bean-scope>view</managed-bean-scope>
 </managed-bean>

 No Managed Bean:
 @ManagedBean(name="dashboardManager")
 @ViewScoped
 public class DashboardMB implements Serializable {
     ...
 }


                                             Globalcode – Open4Education
Estágios do Projeto

 Estágios suportados: Production, Development,
   UnitTest e SystemTest

 No web.xml:
 <context-param>
  <param-name>javax.faces.PROJECT_STAGE</param-name>
  <param-value>Development</param-value>
 </context-param>




                                             Globalcode – Open4Education
Mecanismo de Eventos

 Exemplos de código no ScrumToys:
 jsf2.demo.scrum.web.event.*
 jsf2.demo.scrum.web.controller.AbstractManager

 Alguns eventos suportados:
 AfterAddToParentEvent
 BeforeRenderEvent
 ViewMapCreatedEvent
 ViewMapDestroyEvent

 Suporte a tag: <f:event type=”...” listener=”...” />


                                         Globalcode – Open4Education
Gerenciamento de Recursos

 Novas tags: <h:head>, <h:body>, <h:outputScript> e
   <h:outputStyle>
 Acesso a recursos via EL: #{resouce[...]}
 ...
    <h:head>
        <title>#{dashboard2MB.name}</title>
        <h:outputStylesheet library="css/1_1" name="app.css"/>
        <h:outputScript library="javax.faces" name="ajax.js"
    target="head"/>
    </h:head>
    <h:body>
    ...
     <h:form id="frmDashboard">
      <img src="#{resource['images/exemplo.jpg']}"
    width="50px"/>
    ...

                                               Globalcode – Open4Education
Criação de Componentes

 Exemplo de definição de Composite Component
    em:
 /resources/components/postit.xhtml

 Exemplo de uso do componente em:
 /dashboard/show.xhtml




                                    Globalcode – Open4Education
Navegação

Implícita:
 <navigation-rule>
  <from-view-id>/page1.xhtml</from-view-id>
  <navigation-case>
    <from-outcome>success</from-outcome>
    <to-view-id>/page2.xhtml</to-view-id>
  </navigation-case>
 </navigation-rule>

Não é necessário! Bastar no MB retornar: “page2”.
Condicional:
 <navigation-case>
  <from-outcome>success</from-outcome>
  <to-view-id>/page2.xhtml</to-view-id>
  <if>#{foo.someCondition}</if>
 </navigation-case>


                                              Globalcode – Open4Education
Globalcode – Open4Education
O que é Arduino?




                   Globalcode – Open4Education
Características do Arduino
 > Microcontrolador Atmega 168

 > Arquitetura RISC

 > 20 MIPS

 > 16KB flash / 512B EEPROM / 1KB RAM estática

 > 10.000 ciclos na flash / 100.000 na EEPROM

 > 2 contadores / temporizador de 16bits

 > 1 temporizador de tempo real com clock externo
                                      Globalcode – Open4Education
Características do Arduino
 > 6 canais PWM (saída analógica)

 > 6 conversores A/D de 10 bits (entrada analógica)

 > 1 serial programável (USART)

 > 1 interface SPI (Serial Peripheral Interface)

 > 1 interface serial a 2 fios (I2C)

 > 1 watch dog timer programável

 > Interrupção / wake-up numa entrada digital
                                         Globalcode – Open4Education
O que é Program-ME?




                      Globalcode – Open4Education
Projeto Globalcode: Tomad@




                             Globalcode – Open4Education
Projeto Globalcode: Tomad@




                             Globalcode – Open4Education
Projeto Globalcode: Tomad@




                             Globalcode – Open4Education
Programando para o Arduino




                             Globalcode – Open4Education
Programando para o Arduino




                             Globalcode – Open4Education
Ciclo de desenvolvimento
 > Obter uma placa Arduino e um cabo USB

 > Download da IDE Arduino

 > Instalação da IDE e dos drivers USB

 > Conectar a placa

 > Executar a IDE Arduino

 > Escrever um programa ou exemplo

 > Selecionar o modelo da placa
                                         Globalcode – Open4Education
Ciclo de desenvolvimento
 > Selecionar um porta serial

 > Upload do programa para o Arduino




                                       Globalcode – Open4Education
Ciclo de desenvolvimento
 > Selecionar um porta serial

 > Upload do programa para o Arduino




                                       Globalcode – Open4Education
Ciclo de desenvolvimento
 > Selecionar um porta serial

 > Upload do programa para o Arduino




                                       Globalcode – Open4Education
Siga o mestre!




                 Globalcode – Open4Education
Mais informações
 > Globalcode – The Developers Company
   http://www.globalcode.com.br/

 > Sobre o JSF no Blog da Globalcode
   http://blog.globalcode.com.br/search/label/JSF

 > Sobre o ScrumToys
   http://blog.globalcode.com.br/search/label/SCrumToys

 > JavaServer Faces Technology
   http://java.sun.com/javaee/javaserverfaces/

 > Program-ME: O Arduino da Globalcode
   http://www.globalcode.com.br/noticias/entrevistaProgramMe

 > Blog do Elétron Livre
   http://www.eletronlivre.com.br/
                                                    Globalcode – Open4Education
Perguntas & Respostas




                        Globalcode – Open4Education

Mais conteúdo relacionado

Mais procurados

Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Tchelinux
 

Mais procurados (20)

Da introdução à prática no desenvolvimento Android
Da introdução à prática no desenvolvimento AndroidDa introdução à prática no desenvolvimento Android
Da introdução à prática no desenvolvimento Android
 
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
 
Workshop on Android Rom Creation - FISTA/ISCTE 2014
Workshop on Android Rom Creation - FISTA/ISCTE 2014Workshop on Android Rom Creation - FISTA/ISCTE 2014
Workshop on Android Rom Creation - FISTA/ISCTE 2014
 
Minicurso de Android
Minicurso de AndroidMinicurso de Android
Minicurso de Android
 
Programação Android - Básico
Programação Android - BásicoProgramação Android - Básico
Programação Android - Básico
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
 
Apresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno CottaApresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno Cotta
 
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhone
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhoneEntenda porque seu aplicativo de Android não deve ser igual ao de iPhone
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhone
 
Baixando, instalando e testando o android sdk
Baixando, instalando e testando o android sdkBaixando, instalando e testando o android sdk
Baixando, instalando e testando o android sdk
 
Principais componentes para o desenvolvimento de aplicação android
Principais componentes para o desenvolvimento de aplicação androidPrincipais componentes para o desenvolvimento de aplicação android
Principais componentes para o desenvolvimento de aplicação android
 
Tutorial de Instalação Eclipse + Android SDK
Tutorial de Instalação Eclipse + Android SDKTutorial de Instalação Eclipse + Android SDK
Tutorial de Instalação Eclipse + Android SDK
 
Desenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certaDesenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certa
 
Android Studio
Android StudioAndroid Studio
Android Studio
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento Android
 
Componentes customizados: Android te dá asas!
Componentes customizados: Android te dá asas!Componentes customizados: Android te dá asas!
Componentes customizados: Android te dá asas!
 
Android
AndroidAndroid
Android
 
Introdução ao Android Studio
Introdução ao Android StudioIntrodução ao Android Studio
Introdução ao Android Studio
 
Introdução ao android e plataforma android
Introdução ao android e plataforma androidIntrodução ao android e plataforma android
Introdução ao android e plataforma android
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Curso de Android - aula 3
Curso de Android - aula 3Curso de Android - aula 3
Curso de Android - aula 3
 

Semelhante a JSF 2.0: Uma Evolução nas Interfaces Web com Java

TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
Cleber Dantas
 
As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!
Diego Santos
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.java
Eduardo Bregaida
 
Richfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoRichfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais rico
Eder Magalhães
 
TDC2010 - Turbinando sua Aplicação com CDI
TDC2010 - Turbinando sua Aplicação com CDITDC2010 - Turbinando sua Aplicação com CDI
TDC2010 - Turbinando sua Aplicação com CDI
Rodrigo Cândido da Silva
 

Semelhante a JSF 2.0: Uma Evolução nas Interfaces Web com Java (20)

JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesJSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
 
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
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 
TDC 2012 - JDF
TDC 2012 - JDFTDC 2012 - JDF
TDC 2012 - JDF
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
 
Introducao Spring ROO
Introducao Spring ROOIntroducao Spring ROO
Introducao Spring ROO
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
 
As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
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!
 
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computing
 
Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.java
 
Testes para Android de ponta a ponta
Testes para Android de ponta a pontaTestes para Android de ponta a ponta
Testes para Android de ponta a ponta
 
Richfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoRichfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais rico
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 
TDC2010 - Turbinando sua Aplicação com CDI
TDC2010 - Turbinando sua Aplicação com CDITDC2010 - Turbinando sua Aplicação com CDI
TDC2010 - Turbinando sua Aplicação com CDI
 

Mais de Dr. 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...
 
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
 
Novidades do JSF: Um tour completo no JSF 2.2
Novidades do JSF: Um tour completo no JSF 2.2Novidades do JSF: Um tour completo no JSF 2.2
Novidades do JSF: Um tour completo no JSF 2.2
 
Workshop de Introdução ao ScrumToys
Workshop de Introdução ao ScrumToysWorkshop de Introdução ao ScrumToys
Workshop de Introdução ao ScrumToys
 
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6
 
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
 
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
 

Último

Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Dirceu Resende
 

Último (11)

Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo Pagliusi
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docxATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
 
Apostila e caderno de exercicios de WORD
Apostila e caderno de exercicios de  WORDApostila e caderno de exercicios de  WORD
Apostila e caderno de exercicios de WORD
 
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
 
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docxATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
 

JSF 2.0: Uma Evolução nas Interfaces Web com Java

  • 1. JSF 2.0: Uma Evolução nas Interfaces Web com Java Vinicius Senger Alberto J Lemos (Dr. Spock) Sócio Diretor e Fundador Senior Software Architect Globalcode Instrutor Globalcode Globalcode – Open4Education
  • 2. Objetivo “O apresentar na teoria e prática as principais características do JSF 2.0 e os conceitos de computação física com Program-ME” Globalcode – Open4Education
  • 3. Agenda > Sobre o JavaServer Faces > Benefícios da tecnologia > Deficiências na versão atual > Principais Novidades do JSF 2.0 > Demonstração do ScrumToys > Sobre o Arduino/Program-ME > Demonstração do Program-ME > Perguntas & Respostas Globalcode – Open4Education
  • 4. O que é JavaServer Faces > Do mesmo criador do Struts; > Paradigma de programação visual de User- interfaces aplicado à web; > É um framework que permite a criação de aplicações Web com semântica de Swing implementando MVC; > “Toolability = Ferramentabilidade”; > É uma especificação Java EE; > Faces é mais fácil de aprender que outros frameworks; > Faces é mais componentizado; Globalcode – Open4Education
  • 5. Benefícios da Tecnologia > Diversas bibliotecas de componentes disponíveis; > Suporte nas principais IDEs; > Ampla literatura, treinamentos e foruns de discussão; > Integração com outras tecnologias e frameworks: Spring, JPA, EJB, JBoss Seam > Encapsula a complexidade do HTML, CSS e JavaScript > Oferece servicos fundamentais como conversores e validadores; Globalcode – Open4Education
  • 6. JavaServer Faces Página JSF Managed Bean config.xml faces- Globalcode – Open4Education
  • 7. Demonstração Globalcode – Open4Education
  • 8. Deficiências no JSF 1.2 (anterior) > Não oferece Templates de tela “built in” > Complexidade para criar componentes visuais > Não permite criar Bookmarkble URLs > Não suporta AJAX nativamente > Incompatibilidade entre bibliotecas de componentes > Uso de JSP: Scriptlets, CustomTags, etc > Muitas configurações em XML Globalcode – Open4Education
  • 9. Principais Novidades do JSF 2.0 > Suporte a anotações para configuração > Suporte a AJAX > PDL baseado em XHTML (Facelets) e JSP > PDL extensível > Novo escopo para MBs: ViewScoped e CustomScoped > Bookmarkable URLs Globalcode – Open4Education
  • 10. Principais Novidades do JSF 2.0 > Suporte a definição de estágio do projeto > Mecanismo de Eventos > Gerenciamento de Recursos > Suporte a criação de componentes via XHTML > Navegação implícita e condicional Globalcode – Open4Education
  • 11. ScrumToys = JSF 2.0 Demo > Aplicação para gestão de projetos, sprints, estórias e tarefas > Implementa o conceito de skins permitindo ao usuário trocar as cores da tela > JSF 2, JPA, Maven, Glassfish, JavaDB > Implementa Bookmarkble URL > Implementação de componentes compostos > Open Source, parte do projeto Glassfish e agora NetBeans > Usa Beans Validation Globalcode – Open4Education
  • 12. Siga o mestre! Globalcode – Open4Education
  • 13. Novas Anotações Suportadas > @ManagedBean(name=”dashBoardBean”) > @ManagedProperty(“#{taskManager}”) > @RequestScoped > @ViewScoped > @SessionScoped > @ApplicationScoped > @CustomScoped > @FacesConverter(forClass=Project.class) > @FacesValidator Globalcode – Open4Education
  • 14. Suporte a AJAX <h:commandButton id="btnDeleteSprint" styleClass="botaoPostIt" action="#{sprintManager.remove}" value="#{i18n['sprint.show.button.delete']} AJAX" onclick="jsf.ajax.request(this, event, {execute: 'frmListSprints', render: 'frmListSprints'}); return false;" /> Também suporta uma tag: <f:ajax> Globalcode – Open4Education
  • 15. PDL baseado em XHTML <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> Incorpora o Facelets. Não são necessárias configurações extras no web.xml. Globalcode – Open4Education
  • 16. Novo escopo: ViewScoped No faces-config.xml: <managed-bean> <managed-bean-name>dashboardMB</managed-bean-name> <managed-bean-class>jsf.mb.DashboardMB</managed-bean-class> <managed-bean-scope>view</managed-bean-scope> </managed-bean> No Managed Bean: @ManagedBean(name="dashboardManager") @ViewScoped public class DashboardMB implements Serializable { ... } Globalcode – Open4Education
  • 17. Estágios do Projeto Estágios suportados: Production, Development, UnitTest e SystemTest No web.xml: <context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value> </context-param> Globalcode – Open4Education
  • 18. Mecanismo de Eventos Exemplos de código no ScrumToys: jsf2.demo.scrum.web.event.* jsf2.demo.scrum.web.controller.AbstractManager Alguns eventos suportados: AfterAddToParentEvent BeforeRenderEvent ViewMapCreatedEvent ViewMapDestroyEvent Suporte a tag: <f:event type=”...” listener=”...” /> Globalcode – Open4Education
  • 19. Gerenciamento de Recursos Novas tags: <h:head>, <h:body>, <h:outputScript> e <h:outputStyle> Acesso a recursos via EL: #{resouce[...]} ... <h:head> <title>#{dashboard2MB.name}</title> <h:outputStylesheet library="css/1_1" name="app.css"/> <h:outputScript library="javax.faces" name="ajax.js" target="head"/> </h:head> <h:body> ... <h:form id="frmDashboard"> <img src="#{resource['images/exemplo.jpg']}" width="50px"/> ... Globalcode – Open4Education
  • 20. Criação de Componentes Exemplo de definição de Composite Component em: /resources/components/postit.xhtml Exemplo de uso do componente em: /dashboard/show.xhtml Globalcode – Open4Education
  • 21. Navegação Implícita: <navigation-rule> <from-view-id>/page1.xhtml</from-view-id> <navigation-case> <from-outcome>success</from-outcome> <to-view-id>/page2.xhtml</to-view-id> </navigation-case> </navigation-rule> Não é necessário! Bastar no MB retornar: “page2”. Condicional: <navigation-case> <from-outcome>success</from-outcome> <to-view-id>/page2.xhtml</to-view-id> <if>#{foo.someCondition}</if> </navigation-case> Globalcode – Open4Education
  • 23. O que é Arduino? Globalcode – Open4Education
  • 24. Características do Arduino > Microcontrolador Atmega 168 > Arquitetura RISC > 20 MIPS > 16KB flash / 512B EEPROM / 1KB RAM estática > 10.000 ciclos na flash / 100.000 na EEPROM > 2 contadores / temporizador de 16bits > 1 temporizador de tempo real com clock externo Globalcode – Open4Education
  • 25. Características do Arduino > 6 canais PWM (saída analógica) > 6 conversores A/D de 10 bits (entrada analógica) > 1 serial programável (USART) > 1 interface SPI (Serial Peripheral Interface) > 1 interface serial a 2 fios (I2C) > 1 watch dog timer programável > Interrupção / wake-up numa entrada digital Globalcode – Open4Education
  • 26. O que é Program-ME? Globalcode – Open4Education
  • 27. Projeto Globalcode: Tomad@ Globalcode – Open4Education
  • 28. Projeto Globalcode: Tomad@ Globalcode – Open4Education
  • 29. Projeto Globalcode: Tomad@ Globalcode – Open4Education
  • 30. Programando para o Arduino Globalcode – Open4Education
  • 31. Programando para o Arduino Globalcode – Open4Education
  • 32. Ciclo de desenvolvimento > Obter uma placa Arduino e um cabo USB > Download da IDE Arduino > Instalação da IDE e dos drivers USB > Conectar a placa > Executar a IDE Arduino > Escrever um programa ou exemplo > Selecionar o modelo da placa Globalcode – Open4Education
  • 33. Ciclo de desenvolvimento > Selecionar um porta serial > Upload do programa para o Arduino Globalcode – Open4Education
  • 34. Ciclo de desenvolvimento > Selecionar um porta serial > Upload do programa para o Arduino Globalcode – Open4Education
  • 35. Ciclo de desenvolvimento > Selecionar um porta serial > Upload do programa para o Arduino Globalcode – Open4Education
  • 36. Siga o mestre! Globalcode – Open4Education
  • 37. Mais informações > Globalcode – The Developers Company http://www.globalcode.com.br/ > Sobre o JSF no Blog da Globalcode http://blog.globalcode.com.br/search/label/JSF > Sobre o ScrumToys http://blog.globalcode.com.br/search/label/SCrumToys > JavaServer Faces Technology http://java.sun.com/javaee/javaserverfaces/ > Program-ME: O Arduino da Globalcode http://www.globalcode.com.br/noticias/entrevistaProgramMe > Blog do Elétron Livre http://www.eletronlivre.com.br/ Globalcode – Open4Education
  • 38. Perguntas & Respostas Globalcode – Open4Education