Mundo novo com
                       CDI
                Um ensaio sobre as mudanças encorajadas pelo
                               CDI + Seam 3




Monday, May 16, 2011
Quem sou eu ?
           •      Analista no PD da Softplan

           •      Seam 3 Contributor

           •      Hobbyist game programmer

           •      Espião da CIA




Monday, May 16, 2011
Agenda




Monday, May 16, 2011
Agenda
           •      Contextualização




Monday, May 16, 2011
Agenda
           •      Contextualização

           •      Uma rápida introdução ao CDI




Monday, May 16, 2011
Agenda
           •      Contextualização

           •      Uma rápida introdução ao CDI

           •      Uma rapidíssima introdução ao Seam 3




Monday, May 16, 2011
Agenda
           •      Contextualização

           •      Uma rápida introdução ao CDI

           •      Uma rapidíssima introdução ao Seam 3

           •      simplicidade com CDI




Monday, May 16, 2011
Contextualização




Monday, May 16, 2011
Aplicações Web na história




Monday, May 16, 2011
Ascensão do Java

           •      CGI

           •      Servlet

           •      Servlet + JSP

           •      Templating, tag libraries

           •      A era dos frameworks




Monday, May 16, 2011
Struts, Hibernate, Spring

           •      Praticamente impossível desenvolver uma aplicação
                  em J2EE puro

           •      Frameworks diferentes para abstrair necessidades
                  das aplicações

                 •     Abstração de dados

                 •     Inversão de Controle

                 •     Controle de fluxo



Monday, May 16, 2011
JEE 5

           •      JPA

           •      EJB3

           •      JSF1.2

           •      Annotations

           •      ...




Monday, May 16, 2011
Seam



              •        A cola necessária para juntar
                       JSF e EJB

              •        Contextos e Injeção de dependência




Monday, May 16, 2011
A verdadeira história
           •      Um king cansado de lazyInitializationExceptions




Monday, May 16, 2011
Quem nunca viu bizarrices assim?


          •     getCustomerWithAddress()

          •     getCustomerWithFoo()

          •     getCustomerWithFooAndBar()




Monday, May 16, 2011
JEE6

           • CDI
           • JSF2
           • JPA2
           • EJB3.1
           • ...


Monday, May 16, 2011
Principais objetivos do CDI

           •      Cola Standard entre JSF e EJB

           •      Beans injetáveis e com ciclo
                  de vida gerenciado

           •      Baixo acoplamento

           •      TypeSafe

           •      AOP e Eventos




Monday, May 16, 2011
“CDI simplifies and
                  sanitizes the API for DI
                         and AOP”


Monday, May 16, 2011
“CDI simplifies and
                  sanitizes the API for DI
                         and AOP”
                                 Rick Hightower




Monday, May 16, 2011
“CDI é foda!”



Monday, May 16, 2011
“CDI é foda!”
                                  eu




Monday, May 16, 2011
“Designing with CDI is a road to be
                       discovered, specially when we consider
                             the event handling feature”




Monday, May 16, 2011
“Designing with CDI is a road to be
                       discovered, specially when we consider
                             the event handling feature”
                                                eu também




Monday, May 16, 2011
E o seam?
                          como ficou nessa história?




Monday, May 16, 2011
Seam’s mission is to provide a fully-
                  integrated development platform for
                building rich, standards-based internet
                 applications tailored for traditional and
                            cloud development




Monday, May 16, 2011
Chegamos aonde eu
                            queria


Monday, May 16, 2011
Monday, May 16, 2011
abordagens mais
                         pragmáticas


Monday, May 16, 2011
ECB Pattern
                       • Entity - Control - Boundary



                           EJB       CDI Bean      JPA



Monday, May 16, 2011
CEC Pattern
                 • CDI - EJB - CDI



                            EJB      CDI Bean   JPA



Monday, May 16, 2011
CEC Pattern
                 • CDI - EJB - CDI



                            EJB      CDI Bean   JPA



Monday, May 16, 2011
CEC Pattern
                 • CDI - EJB - CDI



             CDI bean       EJB      CDI Bean   JPA



Monday, May 16, 2011
CEC Pattern
                 • CDI - EJB - CDI

               Presenter



             CDI bean       EJB      CDI Bean   JPA



Monday, May 16, 2011
Simplicidade



Monday, May 16, 2011
Objetivos

                   • Arquitetura limpa
                   • Menos código, menos bugs
                   • Maior produtividade
                   • Mais facilidades com testes

Monday, May 16, 2011
arquitetura comum
Monday, May 16, 2011
javaee 5
Monday, May 16, 2011
javaee 6
Monday, May 16, 2011
Calma!
Monday, May 16, 2011
Monday, May 16, 2011
Monday, May 16, 2011
E para as actions?
Monday, May 16, 2011
Problemas:

                   • Mensagens para a interface
                   • Controle de fluxo



Monday, May 16, 2011
Mensagens para UI
                  • O uso de MessagesAPI do Seam




Monday, May 16, 2011
Controle de fluxo
          • Caso Típico de sucesso e erro
           • A validação pode ser feita antes de
                       chegar no serviço (Bean Validations)
                • Em caso de exceções elas podem ser
                       capturadas desacopladamente e fazer
                       redirecionamentos. (Seam Catch )



Monday, May 16, 2011
JSF Navigation Rules




Monday, May 16, 2011
xml??




Monday, May 16, 2011
controlador: Faces Servlet




                               JSF2 complete Reference, pagina 12

              • JSF Complete
Monday, May 16, 2011
Monday, May 16, 2011
e lógica de apresentação?



Monday, May 16, 2011
Model View Presenter




Monday, May 16, 2011
Cuidado!



           •      Analise sempre seu caso

           •      Simplifique sempre que possível.




Monday, May 16, 2011
Referências

                   • http://seamframework.org/
                   • http://www.jcp.org/en/jsr/detail?id=299
                   • http://www.adam-bien.com/


Monday, May 16, 2011
Obrigado!
            •     Contato:
                  José Rodolfo Freitas
                  joserodolfo.freitas@gmail.com

            •     Apoio:
                  Softplan/Poligraph
                  http://talentos.softplan.com.br

            •     Follow on Twitter:
                  @joserodolfo_f

            •     Blog
                  techblog.joserodolfo.com


Monday, May 16, 2011

Mais conteúdo relacionado

PPT
Drupal image gallery_workshop
PDF
A new world with cdi en
PPT
Rotating Banners In Drupal
PDF
Drupal Recipes: Building Image Galleries with jQuery and Flickr
PDF
Teste de aplicações web com selenium
PDF
Desafios no deploy de aplicações Java EE 6 no Microsoft Azure
PDF
Pós univem - Software Livre
PDF
Palestra sobre BI Open Source @ USP (Out/2011)
Drupal image gallery_workshop
A new world with cdi en
Rotating Banners In Drupal
Drupal Recipes: Building Image Galleries with jQuery and Flickr
Teste de aplicações web com selenium
Desafios no deploy de aplicações Java EE 6 no Microsoft Azure
Pós univem - Software Livre
Palestra sobre BI Open Source @ USP (Out/2011)

Último (19)

PPTX
3b - Bradesco Lean Agile Training Plan - Ritos Operacionais (1).pptx
PDF
ASCENSÃO E QUEDA DO SOFTWARE LIVRE NO ESTADO BRASILEIRO
PPTX
Tipos de servidor em redes de computador.pptx
PPTX
ccursoammaiacursoammaiacursoammaia123456
PPTX
Aula 7 - Listas em Python (Introdução à Ciencia da Computação)
PDF
SEMINÁRIO DE IHC - A interface Homem-Máquina
PDF
Aula 9 - Funções 202yttvrcrg5-1.pptx.pdf
PDF
Processamento da remessa no SAP ERP, SCM610 Col15
PDF
Jira Software projetos completos com scrum
PPTX
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
PPTX
Analise Estatica de Compiladores para criar uma nova LP
PDF
Processos no SAP Extended Warehouse Management, EWM100 Col26
PPT
Aula de Engenharia de Software principais caracteristicas
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PDF
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
PDF
Metodologia Scrumban-XP - Um Guia Rápido (MrSomebody19).pdf
PDF
Customizing básico em SAP Extended Warehouse Management, EWM110 Col26
PPT
Conceitos básicos de Redes Neurais Artificiais
PDF
Banco de Dados 2atualização de Banco de d
3b - Bradesco Lean Agile Training Plan - Ritos Operacionais (1).pptx
ASCENSÃO E QUEDA DO SOFTWARE LIVRE NO ESTADO BRASILEIRO
Tipos de servidor em redes de computador.pptx
ccursoammaiacursoammaiacursoammaia123456
Aula 7 - Listas em Python (Introdução à Ciencia da Computação)
SEMINÁRIO DE IHC - A interface Homem-Máquina
Aula 9 - Funções 202yttvrcrg5-1.pptx.pdf
Processamento da remessa no SAP ERP, SCM610 Col15
Jira Software projetos completos com scrum
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
Analise Estatica de Compiladores para criar uma nova LP
Processos no SAP Extended Warehouse Management, EWM100 Col26
Aula de Engenharia de Software principais caracteristicas
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
Metodologia Scrumban-XP - Um Guia Rápido (MrSomebody19).pdf
Customizing básico em SAP Extended Warehouse Management, EWM110 Col26
Conceitos básicos de Redes Neurais Artificiais
Banco de Dados 2atualização de Banco de d
Anúncio
Anúncio

Mundo novo com cdi

  • 1. Mundo novo com CDI Um ensaio sobre as mudanças encorajadas pelo CDI + Seam 3 Monday, May 16, 2011
  • 2. Quem sou eu ? • Analista no PD da Softplan • Seam 3 Contributor • Hobbyist game programmer • Espião da CIA Monday, May 16, 2011
  • 4. Agenda • Contextualização Monday, May 16, 2011
  • 5. Agenda • Contextualização • Uma rápida introdução ao CDI Monday, May 16, 2011
  • 6. Agenda • Contextualização • Uma rápida introdução ao CDI • Uma rapidíssima introdução ao Seam 3 Monday, May 16, 2011
  • 7. Agenda • Contextualização • Uma rápida introdução ao CDI • Uma rapidíssima introdução ao Seam 3 • simplicidade com CDI Monday, May 16, 2011
  • 9. Aplicações Web na história Monday, May 16, 2011
  • 10. Ascensão do Java • CGI • Servlet • Servlet + JSP • Templating, tag libraries • A era dos frameworks Monday, May 16, 2011
  • 11. Struts, Hibernate, Spring • Praticamente impossível desenvolver uma aplicação em J2EE puro • Frameworks diferentes para abstrair necessidades das aplicações • Abstração de dados • Inversão de Controle • Controle de fluxo Monday, May 16, 2011
  • 12. JEE 5 • JPA • EJB3 • JSF1.2 • Annotations • ... Monday, May 16, 2011
  • 13. Seam • A cola necessária para juntar JSF e EJB • Contextos e Injeção de dependência Monday, May 16, 2011
  • 14. A verdadeira história • Um king cansado de lazyInitializationExceptions Monday, May 16, 2011
  • 15. Quem nunca viu bizarrices assim? • getCustomerWithAddress() • getCustomerWithFoo() • getCustomerWithFooAndBar() Monday, May 16, 2011
  • 16. JEE6 • CDI • JSF2 • JPA2 • EJB3.1 • ... Monday, May 16, 2011
  • 17. Principais objetivos do CDI • Cola Standard entre JSF e EJB • Beans injetáveis e com ciclo de vida gerenciado • Baixo acoplamento • TypeSafe • AOP e Eventos Monday, May 16, 2011
  • 18. “CDI simplifies and sanitizes the API for DI and AOP” Monday, May 16, 2011
  • 19. “CDI simplifies and sanitizes the API for DI and AOP” Rick Hightower Monday, May 16, 2011
  • 21. “CDI é foda!” eu Monday, May 16, 2011
  • 22. “Designing with CDI is a road to be discovered, specially when we consider the event handling feature” Monday, May 16, 2011
  • 23. “Designing with CDI is a road to be discovered, specially when we consider the event handling feature” eu também Monday, May 16, 2011
  • 24. E o seam? como ficou nessa história? Monday, May 16, 2011
  • 25. Seam’s mission is to provide a fully- integrated development platform for building rich, standards-based internet applications tailored for traditional and cloud development Monday, May 16, 2011
  • 26. Chegamos aonde eu queria Monday, May 16, 2011
  • 28. abordagens mais pragmáticas Monday, May 16, 2011
  • 29. ECB Pattern • Entity - Control - Boundary EJB CDI Bean JPA Monday, May 16, 2011
  • 30. CEC Pattern • CDI - EJB - CDI EJB CDI Bean JPA Monday, May 16, 2011
  • 31. CEC Pattern • CDI - EJB - CDI EJB CDI Bean JPA Monday, May 16, 2011
  • 32. CEC Pattern • CDI - EJB - CDI CDI bean EJB CDI Bean JPA Monday, May 16, 2011
  • 33. CEC Pattern • CDI - EJB - CDI Presenter CDI bean EJB CDI Bean JPA Monday, May 16, 2011
  • 35. Objetivos • Arquitetura limpa • Menos código, menos bugs • Maior produtividade • Mais facilidades com testes Monday, May 16, 2011
  • 42. E para as actions? Monday, May 16, 2011
  • 43. Problemas: • Mensagens para a interface • Controle de fluxo Monday, May 16, 2011
  • 44. Mensagens para UI • O uso de MessagesAPI do Seam Monday, May 16, 2011
  • 45. Controle de fluxo • Caso Típico de sucesso e erro • A validação pode ser feita antes de chegar no serviço (Bean Validations) • Em caso de exceções elas podem ser capturadas desacopladamente e fazer redirecionamentos. (Seam Catch ) Monday, May 16, 2011
  • 48. controlador: Faces Servlet JSF2 complete Reference, pagina 12 • JSF Complete Monday, May 16, 2011
  • 50. e lógica de apresentação? Monday, May 16, 2011
  • 52. Cuidado! • Analise sempre seu caso • Simplifique sempre que possível. Monday, May 16, 2011
  • 53. Referências • http://seamframework.org/ • http://www.jcp.org/en/jsr/detail?id=299 • http://www.adam-bien.com/ Monday, May 16, 2011
  • 54. Obrigado! • Contato: José Rodolfo Freitas joserodolfo.freitas@gmail.com • Apoio: Softplan/Poligraph http://talentos.softplan.com.br • Follow on Twitter: @joserodolfo_f • Blog techblog.joserodolfo.com Monday, May 16, 2011