JBoss Forge: Produtividade,
Confiança e Testabilidade em um
     ambiente corporativo
                 George Gastaldi
     Senior Software Engineer – JBoss by RedHat
             george.gastaldi@redhat.com
                 Twitter: @gegastaldi

                                              Globalcode – Open4education
Quem Sou Eu ?
 JBoss Forge Core
 Developer
 CDI 1.1 Spec Expert
 Group Member(JSR
 346)
 Líder Projeto Seam 3
 Reports / Seam 3 JCR
 .. e mais, porém quem
 se importa ? :)
                         @gegastaldi
                              Globalcode – Open4education
“Tweet, tweet!”




#JBossForge   #TDC2012


                       Globalcode – Open4education
Agenda
 O problema
 Forge
 Demonstração
 Plugins
 Demonstração
 Perguntas e respostas




                         Globalcode – Open4education
Java EE 6 é produtivo ?




                          Globalcode – Open4education
Desenv. Java EE Hoje
 Inconsistências
   Diferentes configurações entre servidores de aplicação /
   implementações
 Integração
   Acoplamento entre dependências
   Testes
 Fragmentação
   Diferentes frameworks




                                             Globalcode – Open4education
Como resolver estes problemas ???




                             Globalcode – Open4education
Desenvolvedor
    JEE




 Globalcode – Open4education
Globalcode – Open4education
Resolvendo
Inconsistências
 É necessário:
   Experiência, exemplos
   Depreciar APIs antigas e configurações
   Uma comunidade centralizada para compartilhar
   conhecimento




                                          Globalcode – Open4education
Resolvendo Integração
 CDI
   Forte Tipificação     //fires
                       Event<Type>
   Baixo acoplamento
       @Interceptor
       @Decorator
       @Observes



                                       @Observes
                                       Type event




                                     Globalcode – Open4education
Fragmentação
Java EE

                                                                         Security
           Servlets
                                                     RichFaces                     Spring
                  Java Transactions API (JTA)                         NetBeans

    Java Persistence API                                    Eclipse                         OAUTH
    (JPA)                                                                        jquery
                           CDI           JDBC
                                                        AJAX          Ant

 JAX-RS                                                                          Payment Gateways
 (REST)     Enterprise Java
            Beans 3.1 (EJB)
                                     SOAP
                                                            Maven           yui               Tapestry

                           Java Server Faces (JSF)
                                                                                   Primefaces
               JSP                                              Html 5
                                                     Seam
   Java Messaging Service (JMS)
                                                     3                      Wicket        OpenID
                     Bean                             websockets
                     Validation                                             Infinispan
                                                                Gradle



                                                                            Globalcode – Open4education
Resolvendo Fragmentação
 Requer:
   Uma plataforma centralizada
   Um repositório centralizado
     App Market
   Envolvimento e contribuição fortalecidos




                                              Globalcode – Open4education
E se tivéssemos :




                    Globalcode – Open4education
1. Algo para cuidar destas inconsistências,
 e configurar um projeto JEE corretamente




                                   Globalcode – Open4education
Globalcode – Open4education
2. Um processo abstrato, porém
    consistente em integrar
           frameworks



                      Globalcode – Open4education
$ setup persistence

$ setup faces

$ setup messaging

$ setup security



            Globalcode – Open4education
3. Um local único para compartilhar e colaborar




                                     Globalcode – Open4education
RichFaces
                                            NetBeans

                           jquery                            Security
                                                       yui
          Eclipse                                                        Spring
                                    Maven




Java                                                                OAUTH
EE
                                    Community                                Tapestry
     Ant
                                                                         Gradle
VRaptor

                                                                            PrettyFaces
  Seam
  3                          HTML5                      Wicket
                                                                  OpenID
               websockets            AJAX


                                            Infinispan

                                                                   Globalcode – Open4education
+   +




        Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
Plugins !!!




              Globalcode – Open4education
Arquitetura




              Globalcode – Open4education
E quanto aos testes de integração ?




                               Globalcode – Open4education
http://www.jboss.org/arquillian




     Framework de testes orientado a container
                                  Globalcode – Open4education
Forge




 Globalcode – Open4education
1. Escolha um container        2. Inicie ou conecte no container




 4. Execute testes DENTRO do
          container            3. Empacote e realize o deploy




5. Capture resultados          6. Realize deploy e desconecte




                                                     Globalcode – Open4education
Possíveis idéias de plugins
 VRaptor
 JavaFX
 JCompany (Jaguar)
 Hibernate Envers


 https://issues.jboss.org/browse/FORGEPLUGIN
 S


                                   Globalcode – Open4education
Perguntas Freqüentes




                       Globalcode – Open4education
Porque outra ferramenta ?

           Design voltado à situação: unificando
           comunidades fragmentadas
           Open-source, orientado a padrões
           Plugins são legais




                                   Globalcode – Open4education
Porque linha de
comando ?
 Interfaces Gráficas são geralmente pesadas para
 tarefas simples
 Fortalece scripting e automação: repetibilidade
 Testabilidade
   Facilidade em criar testes




                                     Globalcode – Open4education
Maven
 NÃO é uma abstração do Maven
 A arquitetura do Forge é atualmente agnóstica ao
 sistema de build




                                      Globalcode – Open4education
Porque não usar os Maven
Archetypes ?
 É difícil em fazer “escolhas”
 Archetype executado = Archetype finalizado.
   Forge continua evoluindo o projeto
 Plugins desacoplam os interesses




                                        Globalcode – Open4education
Resumo
 Forge nos auxilia a:
   Criar aplicações e mantê-las através de plugins para as
   tarefas repetitivas
   Resolver problemas de configuração
   Integrar com ferramentas e tecnologias existentes
   Adicionar/ativar tecnologias com o auxílio de plugins




                                            Globalcode – Open4education
Perguntas ?




              Globalcode – Open4education
Website: http://forge.jboss.org
Twitter: http://twitter.com/JBossForge
Forum: http://community.jboss.org/en/forge
Vídeos: http://vimeo.com/channels/jbossforge
IRC:     #forge / irc.freenode.net

                                     Globalcode – Open4education

JBoss Forge TDC - 2012 Florianópolis

  • 1.
    JBoss Forge: Produtividade, Confiançae Testabilidade em um ambiente corporativo George Gastaldi Senior Software Engineer – JBoss by RedHat george.gastaldi@redhat.com Twitter: @gegastaldi Globalcode – Open4education
  • 2.
    Quem Sou Eu? JBoss Forge Core Developer CDI 1.1 Spec Expert Group Member(JSR 346) Líder Projeto Seam 3 Reports / Seam 3 JCR .. e mais, porém quem se importa ? :) @gegastaldi Globalcode – Open4education
  • 3.
    “Tweet, tweet!” #JBossForge #TDC2012 Globalcode – Open4education
  • 4.
    Agenda O problema Forge Demonstração Plugins Demonstração Perguntas e respostas Globalcode – Open4education
  • 5.
    Java EE 6é produtivo ? Globalcode – Open4education
  • 6.
    Desenv. Java EEHoje Inconsistências Diferentes configurações entre servidores de aplicação / implementações Integração Acoplamento entre dependências Testes Fragmentação Diferentes frameworks Globalcode – Open4education
  • 7.
    Como resolver estesproblemas ??? Globalcode – Open4education
  • 8.
    Desenvolvedor JEE Globalcode – Open4education
  • 9.
  • 10.
    Resolvendo Inconsistências É necessário: Experiência, exemplos Depreciar APIs antigas e configurações Uma comunidade centralizada para compartilhar conhecimento Globalcode – Open4education
  • 11.
    Resolvendo Integração CDI Forte Tipificação //fires Event<Type> Baixo acoplamento @Interceptor @Decorator @Observes @Observes Type event Globalcode – Open4education
  • 12.
    Fragmentação Java EE Security Servlets RichFaces Spring Java Transactions API (JTA) NetBeans Java Persistence API Eclipse OAUTH (JPA) jquery CDI JDBC AJAX Ant JAX-RS Payment Gateways (REST) Enterprise Java Beans 3.1 (EJB) SOAP Maven yui Tapestry Java Server Faces (JSF) Primefaces JSP Html 5 Seam Java Messaging Service (JMS) 3 Wicket OpenID Bean websockets Validation Infinispan Gradle Globalcode – Open4education
  • 13.
    Resolvendo Fragmentação Requer: Uma plataforma centralizada Um repositório centralizado App Market Envolvimento e contribuição fortalecidos Globalcode – Open4education
  • 14.
    E se tivéssemos: Globalcode – Open4education
  • 15.
    1. Algo paracuidar destas inconsistências, e configurar um projeto JEE corretamente Globalcode – Open4education
  • 16.
  • 17.
    2. Um processoabstrato, porém consistente em integrar frameworks Globalcode – Open4education
  • 18.
    $ setup persistence $setup faces $ setup messaging $ setup security Globalcode – Open4education
  • 19.
    3. Um localúnico para compartilhar e colaborar Globalcode – Open4education
  • 20.
    RichFaces NetBeans jquery Security yui Eclipse Spring Maven Java OAUTH EE Community Tapestry Ant Gradle VRaptor PrettyFaces Seam 3 HTML5 Wicket OpenID websockets AJAX Infinispan Globalcode – Open4education
  • 21.
    + + Globalcode – Open4education
  • 22.
  • 23.
  • 24.
  • 25.
    Plugins !!! Globalcode – Open4education
  • 26.
    Arquitetura Globalcode – Open4education
  • 27.
    E quanto aostestes de integração ? Globalcode – Open4education
  • 28.
    http://www.jboss.org/arquillian Framework de testes orientado a container Globalcode – Open4education
  • 29.
    Forge Globalcode –Open4education
  • 30.
    1. Escolha umcontainer 2. Inicie ou conecte no container 4. Execute testes DENTRO do container 3. Empacote e realize o deploy 5. Capture resultados 6. Realize deploy e desconecte Globalcode – Open4education
  • 31.
    Possíveis idéias deplugins VRaptor JavaFX JCompany (Jaguar) Hibernate Envers https://issues.jboss.org/browse/FORGEPLUGIN S Globalcode – Open4education
  • 32.
    Perguntas Freqüentes Globalcode – Open4education
  • 33.
    Porque outra ferramenta? Design voltado à situação: unificando comunidades fragmentadas Open-source, orientado a padrões Plugins são legais Globalcode – Open4education
  • 34.
    Porque linha de comando? Interfaces Gráficas são geralmente pesadas para tarefas simples Fortalece scripting e automação: repetibilidade Testabilidade Facilidade em criar testes Globalcode – Open4education
  • 35.
    Maven NÃO éuma abstração do Maven A arquitetura do Forge é atualmente agnóstica ao sistema de build Globalcode – Open4education
  • 36.
    Porque não usaros Maven Archetypes ? É difícil em fazer “escolhas” Archetype executado = Archetype finalizado. Forge continua evoluindo o projeto Plugins desacoplam os interesses Globalcode – Open4education
  • 37.
    Resumo Forge nosauxilia a: Criar aplicações e mantê-las através de plugins para as tarefas repetitivas Resolver problemas de configuração Integrar com ferramentas e tecnologias existentes Adicionar/ativar tecnologias com o auxílio de plugins Globalcode – Open4education
  • 38.
    Perguntas ? Globalcode – Open4education
  • 39.
    Website: http://forge.jboss.org Twitter: http://twitter.com/JBossForge Forum:http://community.jboss.org/en/forge Vídeos: http://vimeo.com/channels/jbossforge IRC: #forge / irc.freenode.net Globalcode – Open4education

Notas do Editor

  • #6 A especificação Java EE evoluiu e muito da versão 5.0 para a 6.0. Muito codigo foi abolido em favor de anotações, no entanto, surge uma questão que intriga muitos desenvolvedores hoje em dia: quão produtivo é desenvolver com Java EE e como posso desenvolver seguindo estes padrões sem problemas de integração e outras características ? Esta pergunta torna dificil de responder dado o fato que nosso codigo não depende exclusivamente da API que compoe a especificacao, mas da implementacao provida por cada servidor de aplicação JEE.