SlideShare uma empresa Scribd logo
1 de 57
Construindo uma
 arquitetura RESTful
 para aplicações ricas
com HTML 5 e JSF 2.0

      Raphael Adrien
         /raphaeladrien
2000 - dias atuais
O que é arquitetur
O que é arquitetur
O que é arquitetur




    Uma arquitetura de software para um sistema é a
    estrutura ou estruturas do sistema, que consiste de
    elementos, suas propriedades visíveis exteriormente,
    e as relações entre elas.

    Bass, Clements, Kazman - 1998
O que é arquitetur
                           Ralph Johnson - GoF -
                           “arquitetura é tudo
                           aquilo que importa”




    Uma arquitetura de software para um sistema é a
    estrutura ou estruturas do sistema, que consiste de
    elementos, suas propriedades visíveis exteriormente,
    e as relações entre elas.

    Bass, Clements, Kazman - 1998
O que é arquitetur
                                       Ralph Johnson - GoF -
                                       “arquitetura é tudo
                                       aquilo que importa”

“as peças que as
pessoas
acham que é
difícil de mudar”




                Uma arquitetura de software para um sistema é a
                estrutura ou estruturas do sistema, que consiste de
                elementos, suas propriedades visíveis exteriormente,
                e as relações entre elas.

                Bass, Clements, Kazman - 1998
O que é     O que é
design?   arquitetura?
Requisitos funcionais




   O que é                O que é
   design?              arquitetura?
Requisitos funcionais   Requisitos não funcionais




   O que é                 O que é
   design?               arquitetura?
Requisitos funcionais    Requisitos não funcionais

    “Ações que um
   sistema deve ser
        capaz de
     executar, sem
        levar em
     consideração
  restrições físicas.”



   O que é                  O que é
   design?                arquitetura?
Requisitos funcionais    Requisitos não funcionais

    “Ações que um              escalabilidade
   sistema deve ser           performace alta
        capaz de
     executar, sem           alta disponibilidade
        levar em                  segurança
     consideração            permitir evolução
  restrições físicas.”          do sistema



   O que é                  O que é
   design?                arquitetura?
Requisitos funcionais   Requisitos não funcionais

                              escalabilidade
                             performace alta
                            alta disponibilidade
                                 segurança
                            permitir evolução
                               do sistema



   O que é                 O que é
   design?               arquitetura?
Requisitos funcionais   Requisitos não funcionais




   O que é                 O que é
   design?               arquitetura?
Requisitos não funcionais




O que é      O que é
design?    arquitetura?
O que é     O que é
design?   arquitetura?
O que é     O que é
design?   arquitetura?
O que é     O que é
design?   arquitetura?
Integração
Integração




Banco de dados
Integração




Transferencia de
    arquivos
Web
Service
Web
Service           WS-ReliableMessaging
 WS-Addressing
                        WS-Security
  WSDL

WS-Transaction          WS-Resource

                 SOAP
Integração
Integração
Representational State
Transfer (REST)




Roy Fielding
Representational State
Transfer (REST)




Roy Fielding
Representational State
Transfer (REST)
Representational State
Transfer (REST)




  Agora todo o foco está todo
          no recurso
Representational State
Transfer (REST)
JSF 2 + REST


• JSR 311(JAX-RS)
 • Get
 • Post
Não é uma grande coisa.
HTML 5
HTML5 ~= HTML + CSS + JS
Suporte dos browsers
<HTML
     5> estrutura
Elementos para
  <header>, <nav>, <article>, <section>, <aside>,<footer>
<HTML
     5> estrutura
Elementos para
  <header>, <nav>, <article>, <section>, <aside>,<footer>




      Tornou o código HTML mais limpo.
<HTML
   5> para mídia
Elementos
* Maioria dos vídeos utilizam plugin do flash
* Nem todos os browser possuem os mesmo plugins

  <video>
  * Padrão para incluir vídeo em nossas páginas.
  * 2 formatos são suportados: Ogg Vorbis, MPEG 4

            <video controls=”controls”>
             <src=”javaone.ogg” type=”video/ogg”>
             <src=”javaone.mp4” type=”video/mpeg”>
              Seu browser não possui suporte ao elemento video.
            </video>
<HTML
    5> gráficos
 Elementos
<canvas>
   * O futuro dos gráficas na internet;
   * Plataforma para desenhar em browser com 2D;
   * Extensível através de Javascript;
   * Criado pela Apple;
   * Agora abertamente desenvolvido pelo W3C.

     <canvas id=”aCanvas” heigth=”80” width=”100”></canvas>




               Sintaxe simples
<HTML
   5> simples
  Formas
* fillRect( x, y, w, h )
* strokeRect( x, y, w,h )
* clearRect( x, y, w,h )

        context.fillStyle = ‘#00f’;
        context.strokeStyle = ‘#f00’

        //Vamos desenhar :-)
        context.fillRect( 0, 0,150, 150 );
        context.strokeRect( 0, 60, 150, 50 );
        context.clearRect(30, 25, 90, 60 );
        context.strokeRect(30, 25, 90, 60 );
<HTML
     5> adicionados no Javascript
 Novos eventos
* Mouse events
 * ondrag, ondragend, ondragenter, ondragleave, ondragover, ondragstart,
 ondrop, onmousewheel, onscroll

* Windows events( x, y, w,h )
  * onafterprint, onbeforeprint, onbeforeonload, onerror, onhaschanged,
 onmessage, onoffline, ononline...

* Form events
  * onformhange, onforminput, oninput, oninvalid

* Media events
 * Aplicável a elementos de media.
Composite Components
Composite Components



• Possibilita a verdadeira abstração;
• Agora você pode realmente criar
  componentes reutilizáveis, você não precisa
  mais de JSF Guru.
Composite Components
      Crio o arquivo /recursos/simples/saida.xhtml

<composite:interface>
 <composite:atribute name=”value” required=”true” />
</composite:interface>

<composite:implementation>
 <h:outputText value=”#{cc.atrs.value}” />
</composite:implementation>
Composite Components

<html xmlns=”http://www.w3.org/1999/xhtml”
    xmlns:h=”http://java.sun.com/jsf/html”
    xmlns:f=”http://java.sun.com/jsf/core”
    xmlns:ez=”http://java.sun.com/jsf/composite/simples”>
....
<composite:implementation>
   <ez:out value=”JavaOne Brasil” />
</composite:implementation>

....
Composite Components



• web root ou JAR
• .properties
• Listeners, Converters,Validadors
Composite Components com HTML 5



• JSF 2 introduziu para promover o Ajax;
• Composite Components trabalha com
  Javascript;
• Composite Components pode ser
  influenciado por HTML 5 e Javascript API.
Composite Components com HTML 5



<cc:interface>
 <cc:atribute name=”src” required=”true” />
 <cc:atribute name=”controls” required=”true” />
</cc:interface>

<cc:implementation>
  <h:outputScript libary=”js” name=”audio.js target=”head/>
  <audio src=”#{cc.attrs.src}” controls=”#{cc.attrs.controls}”/>
  <input type=”button” value=”Tocar” onclick=”tocarReStart()” />
  <input type=”button” value=”Parar” onclick=”pararReStartParaSempre()” />
</cc:implementation>
Composite Components com HTML 5


audio.js

function tocarReStart(){
 var audio = document.getElementByTagName(“audio”)[0];
 audio.play();
 var display = document.getElementByTagName(“input”)[0];
}

function pause(){
 var audio = document.getElementByTagName(“audio”)[0];
 audio.pause();
}
Composite Components com HTML 5


<html xmlns=”http://www.w3.org/1999/xhtml”
    xmlns:h=”http://java.sun.com/jsf/html”
    xmlns:f=”http://java.sun.com/jsf/core”
    xmlns:h5=”http://java.sun.com/jsf/composite/media”>
....
<h:body>
   <h5:audiobox src=”recursos/media/restart.ogg”
controls=”controls”/>
</h:body>

....
ScrumToys
http://netbeans.org/kb/samples/scrum-toys.html
Obrigado....

/raphaeladrien

raphael.adrien@gmail.com

Mais conteúdo relacionado

Semelhante a Construindo RESTful com HTML5 e JSF

Apresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - BemobiApresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - BemobiRicardo Martins ☁
 
[DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps![DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps!Camilla Gomes
 
Arquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialArquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialAlexandre Leão
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioRalph Rassweiler
 
Desenvolvimento de Aplicações com Zend Framework e Yahoo! User Interface
Desenvolvimento de Aplicações com Zend Framework e Yahoo! User InterfaceDesenvolvimento de Aplicações com Zend Framework e Yahoo! User Interface
Desenvolvimento de Aplicações com Zend Framework e Yahoo! User InterfaceDomingos Teruel
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesRafael Ponte
 
Framework Entities - Apresentação da Defesa da Dissertacao
Framework Entities - Apresentação da Defesa da DissertacaoFramework Entities - Apresentação da Defesa da Dissertacao
Framework Entities - Apresentação da Defesa da DissertacaoMarcius Brandão
 
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...tdc-globalcode
 
Palestra urutai-mobile
Palestra urutai-mobilePalestra urutai-mobile
Palestra urutai-mobileRogerio Fontes
 
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...Arquitetura executável: Documentando e automatizando a comunicação da equipe ...
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...WeOp - The Operations Summit
 
Reflexões sobre arquitetura de software
Reflexões sobre arquitetura de softwareReflexões sobre arquitetura de software
Reflexões sobre arquitetura de softwareTiago Sciencia
 
Anatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer FacesAnatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer Facescejug
 
Procura-se: DevOps #cpbr9
Procura-se: DevOps #cpbr9Procura-se: DevOps #cpbr9
Procura-se: DevOps #cpbr9Camilla Gomes
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoÉberli Cabistani Riella
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
 

Semelhante a Construindo RESTful com HTML5 e JSF (20)

Arquitetura software
Arquitetura softwareArquitetura software
Arquitetura software
 
Apresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - BemobiApresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - Bemobi
 
[DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps![DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps!
 
Arquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialArquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencial
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Just java 2011
Just java   2011Just java   2011
Just java 2011
 
Desenvolvimento de Aplicações com Zend Framework e Yahoo! User Interface
Desenvolvimento de Aplicações com Zend Framework e Yahoo! User InterfaceDesenvolvimento de Aplicações com Zend Framework e Yahoo! User Interface
Desenvolvimento de Aplicações com Zend Framework e Yahoo! User Interface
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer Faces
 
Framework Entities - Apresentação da Defesa da Dissertacao
Framework Entities - Apresentação da Defesa da DissertacaoFramework Entities - Apresentação da Defesa da Dissertacao
Framework Entities - Apresentação da Defesa da Dissertacao
 
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
 
Palestra urutai-mobile
Palestra urutai-mobilePalestra urutai-mobile
Palestra urutai-mobile
 
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...Arquitetura executável: Documentando e automatizando a comunicação da equipe ...
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...
 
Reflexões sobre arquitetura de software
Reflexões sobre arquitetura de softwareReflexões sobre arquitetura de software
Reflexões sobre arquitetura de software
 
Anatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer FacesAnatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer Faces
 
Procura-se: DevOps #cpbr9
Procura-se: DevOps #cpbr9Procura-se: DevOps #cpbr9
Procura-se: DevOps #cpbr9
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
ArquiteturaSoftware
ArquiteturaSoftwareArquiteturaSoftware
ArquiteturaSoftware
 

Construindo RESTful com HTML5 e JSF

  • 1. Construindo uma arquitetura RESTful para aplicações ricas com HTML 5 e JSF 2.0 Raphael Adrien /raphaeladrien
  • 2. 2000 - dias atuais
  • 3. O que é arquitetur
  • 4. O que é arquitetur
  • 5. O que é arquitetur Uma arquitetura de software para um sistema é a estrutura ou estruturas do sistema, que consiste de elementos, suas propriedades visíveis exteriormente, e as relações entre elas. Bass, Clements, Kazman - 1998
  • 6. O que é arquitetur Ralph Johnson - GoF - “arquitetura é tudo aquilo que importa” Uma arquitetura de software para um sistema é a estrutura ou estruturas do sistema, que consiste de elementos, suas propriedades visíveis exteriormente, e as relações entre elas. Bass, Clements, Kazman - 1998
  • 7. O que é arquitetur Ralph Johnson - GoF - “arquitetura é tudo aquilo que importa” “as peças que as pessoas acham que é difícil de mudar” Uma arquitetura de software para um sistema é a estrutura ou estruturas do sistema, que consiste de elementos, suas propriedades visíveis exteriormente, e as relações entre elas. Bass, Clements, Kazman - 1998
  • 8. O que é O que é design? arquitetura?
  • 9. Requisitos funcionais O que é O que é design? arquitetura?
  • 10. Requisitos funcionais Requisitos não funcionais O que é O que é design? arquitetura?
  • 11. Requisitos funcionais Requisitos não funcionais “Ações que um sistema deve ser capaz de executar, sem levar em consideração restrições físicas.” O que é O que é design? arquitetura?
  • 12. Requisitos funcionais Requisitos não funcionais “Ações que um escalabilidade sistema deve ser performace alta capaz de executar, sem alta disponibilidade levar em segurança consideração permitir evolução restrições físicas.” do sistema O que é O que é design? arquitetura?
  • 13. Requisitos funcionais Requisitos não funcionais escalabilidade performace alta alta disponibilidade segurança permitir evolução do sistema O que é O que é design? arquitetura?
  • 14. Requisitos funcionais Requisitos não funcionais O que é O que é design? arquitetura?
  • 15. Requisitos não funcionais O que é O que é design? arquitetura?
  • 16. O que é O que é design? arquitetura?
  • 17. O que é O que é design? arquitetura?
  • 18. O que é O que é design? arquitetura?
  • 23. Web Service WS-ReliableMessaging WS-Addressing WS-Security WSDL WS-Transaction WS-Resource SOAP
  • 26.
  • 27.
  • 31. Representational State Transfer (REST) Agora todo o foco está todo no recurso
  • 33. JSF 2 + REST • JSR 311(JAX-RS) • Get • Post
  • 34.
  • 35.
  • 36. Não é uma grande coisa.
  • 38. HTML5 ~= HTML + CSS + JS
  • 40. <HTML 5> estrutura Elementos para <header>, <nav>, <article>, <section>, <aside>,<footer>
  • 41. <HTML 5> estrutura Elementos para <header>, <nav>, <article>, <section>, <aside>,<footer> Tornou o código HTML mais limpo.
  • 42. <HTML 5> para mídia Elementos * Maioria dos vídeos utilizam plugin do flash * Nem todos os browser possuem os mesmo plugins <video> * Padrão para incluir vídeo em nossas páginas. * 2 formatos são suportados: Ogg Vorbis, MPEG 4 <video controls=”controls”> <src=”javaone.ogg” type=”video/ogg”> <src=”javaone.mp4” type=”video/mpeg”> Seu browser não possui suporte ao elemento video. </video>
  • 43. <HTML 5> gráficos Elementos <canvas> * O futuro dos gráficas na internet; * Plataforma para desenhar em browser com 2D; * Extensível através de Javascript; * Criado pela Apple; * Agora abertamente desenvolvido pelo W3C. <canvas id=”aCanvas” heigth=”80” width=”100”></canvas> Sintaxe simples
  • 44. <HTML 5> simples Formas * fillRect( x, y, w, h ) * strokeRect( x, y, w,h ) * clearRect( x, y, w,h ) context.fillStyle = ‘#00f’; context.strokeStyle = ‘#f00’ //Vamos desenhar :-) context.fillRect( 0, 0,150, 150 ); context.strokeRect( 0, 60, 150, 50 ); context.clearRect(30, 25, 90, 60 ); context.strokeRect(30, 25, 90, 60 );
  • 45. <HTML 5> adicionados no Javascript Novos eventos * Mouse events * ondrag, ondragend, ondragenter, ondragleave, ondragover, ondragstart, ondrop, onmousewheel, onscroll * Windows events( x, y, w,h ) * onafterprint, onbeforeprint, onbeforeonload, onerror, onhaschanged, onmessage, onoffline, ononline... * Form events * onformhange, onforminput, oninput, oninvalid * Media events * Aplicável a elementos de media.
  • 47. Composite Components • Possibilita a verdadeira abstração; • Agora você pode realmente criar componentes reutilizáveis, você não precisa mais de JSF Guru.
  • 48. Composite Components Crio o arquivo /recursos/simples/saida.xhtml <composite:interface> <composite:atribute name=”value” required=”true” /> </composite:interface> <composite:implementation> <h:outputText value=”#{cc.atrs.value}” /> </composite:implementation>
  • 49. Composite Components <html xmlns=”http://www.w3.org/1999/xhtml” xmlns:h=”http://java.sun.com/jsf/html” xmlns:f=”http://java.sun.com/jsf/core” xmlns:ez=”http://java.sun.com/jsf/composite/simples”> .... <composite:implementation> <ez:out value=”JavaOne Brasil” /> </composite:implementation> ....
  • 50. Composite Components • web root ou JAR • .properties • Listeners, Converters,Validadors
  • 51. Composite Components com HTML 5 • JSF 2 introduziu para promover o Ajax; • Composite Components trabalha com Javascript; • Composite Components pode ser influenciado por HTML 5 e Javascript API.
  • 52. Composite Components com HTML 5 <cc:interface> <cc:atribute name=”src” required=”true” /> <cc:atribute name=”controls” required=”true” /> </cc:interface> <cc:implementation> <h:outputScript libary=”js” name=”audio.js target=”head/> <audio src=”#{cc.attrs.src}” controls=”#{cc.attrs.controls}”/> <input type=”button” value=”Tocar” onclick=”tocarReStart()” /> <input type=”button” value=”Parar” onclick=”pararReStartParaSempre()” /> </cc:implementation>
  • 53. Composite Components com HTML 5 audio.js function tocarReStart(){ var audio = document.getElementByTagName(“audio”)[0]; audio.play(); var display = document.getElementByTagName(“input”)[0]; } function pause(){ var audio = document.getElementByTagName(“audio”)[0]; audio.pause(); }
  • 54. Composite Components com HTML 5 <html xmlns=”http://www.w3.org/1999/xhtml” xmlns:h=”http://java.sun.com/jsf/html” xmlns:f=”http://java.sun.com/jsf/core” xmlns:h5=”http://java.sun.com/jsf/composite/media”> .... <h:body> <h5:audiobox src=”recursos/media/restart.ogg” controls=”controls”/> </h:body> ....

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n