SESTINFO 2012


          Desenvolva aplicativos Java Web
         em pouco passos com Spring Roo
                          Eder Magalhães
                        twitter.com/edermag
                          www.yaw.com.br

                                              Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
Agenda
       Mercado e oportunidades;
       Desafios em relizar uma idéia;
       Características do Spring Roo;
       Demo I: primeiro projeto;
       Tecnologias ao redor do Spring Roo;
       Demo II: relacionamento entre entidades;
       Como o Spring Roo gera código Java;
       Demo III: Spring + JSF 2;
       Engenharia reversa;
       Links;
                                        Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
Oportunidades

       O Brasil é a bola da vez;

       Mercado aquecido;

       Startups brotando em todos os lugares;




                                        Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
Colocar em prática!

       Realizar é uma idéia não é fácil;


       A escolha da tecnologia é um dos desafios!




                                           Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
A escolha da tecnologia

      Java é uma ótima escolha!
      Tecnologia madura e eficiente;
      Adotada em grande escala;
      Utilizada em diversos cenários;
      Oferece diversas tecnologias complementares;
      Viabiliza integração a outras linguagens;




                                       Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
A escolha da tecnologia

      Java é uma ótima escolha!
      Tecnologia madura e eficiente;
      Adotada em grande escala;
      Utilizada em diversos cenários;
      Oferece diversas tecnologias complementares;
      Viabiliza integração a outras linguagens;




                                       Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
Algumas premissas
      Criar software de qualidade e eficiente;
      Escalável, seguro e rápido;
      Ágil, a prova de mudanças no decorrer do
      projeto;
      E principalmente:
         Desenvolver com produtividade!




                                       Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
Spring Roo




      O Spring Roo atende a essas premissas;
      Desenvolvimento web, utilizando Java, com
      alta produtividade;


                                       Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
Características do Roo
      Text based: shell com comandos alto nível;
      Fácil de usar;
      Elimina a burocracia de projetos Java;
      Utiliza algumas das melhores tecnologias
      (frameworks) Java;
      Adota modelo de implementação baseado em
      patterns;
      Extensível;
      Integrado a IDE (Eclipse / Spring Tools Suite)

                                         Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
Chega de teoria! Demo I
      Vamos experimentar o Roo;
      Alguma sugestão para desenvolvimento da
      aplicação Demo?




                                     Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
Demo I: comandos executados

  roo> project --topLevelPackage br.com.yaw.pizzameto
  roo> persistence setup --provider HIBERNATE
  --database HYPERSONIC_IN_MEMORY

  roo> entity jpa --class ~.model.Pizza
  roo> field string --fieldName sabor --notNull --sizeMin 3
  roo> field number --type java.lang.Double --fieldName
  preco

  roo> web mvc setup
  roo> controller all --package ~.web
  perform package




                                           Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
Tecnologias suportadas pelo Roo


                         Web	
  MVC
                         Security
                         JavaScript         JUnit
                         Dojo
            JPA          JSF

                         JSF


                        PrimeFaces

                                      Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
Outras características

      Também agiliza o deploy e a implatanção;
      Geração de código é: Ativa ou Passiva;
      Suporte a diferentes soluções para front-end;
      Framework web baseado em REST;
      Conversor de Java para JSON e vice-versa;
      Gera artefatos para testes unitários e
      integrado;
      A qualquer momento pode ser desligado;


                                        Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
Demo II: complementar nosso aplicativo

      Criar relacionamento com outra entidade;
      Analisar os artefatos gerado pelo Roo;




                                       Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
Demo II: comandos executados
  roo> perform eclipse
  roo> entity jpa --class ~.model.Receita

  roo> field string descricao

  roo> focus --class ~.model.Pizza

  roo> field reference --fieldName receita
  --type ~.model.Receita

  roo> controller all --package ~.web
  #deploy pelo eclipse




                                             Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
Gerador de código

                                                          Produto.java
         AspectJ	
  IDTs   escreve     Roo       lê       preco: double
                                      Add-on
      Produto_Roo_
      JavaBean.aj                                lê

     getPreco()...
     SetPreco(...)           lê                 escreve
                                     AspectJ              Produto.class
                                     Compiler             preco: double

                                                          getPreco()...
                                                          setPreco(...)




                                                          Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
Demo III: Spring Roo com JSF 2

      Utilizar a mesma idéia de aplicação, mas
      utilizando JSF 2 (+ Primefaces) como
      framework web;




                                        Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
Demo III: comandos executados
  roo> project --topLevelPackage br.com.yaw.pizzameto2
  roo> persistence setup --provider HIBERNATE
  --database HYPERSONIC_IN_MEMORY

  roo> entity jpa --class ~.model.Pizza
  roo> field string --fieldName sabor --notNull --sizeMin 3
  roo> field number --type java.lang.Double
  --fieldName preco

  roo> web jsf setup --implementation ORACLE_MOJARRA
  --theme BLUESKY
  roo> web jsf all --package ~.jsf
  roo> perform package



                                           Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
Engenharia reversa!

      Gerar um cadastro a partir de uma tabela:

  roo> project --topLevelPackage br.com.yaw.rev

  roo> persistence setup --provider HIBERNATE
  --database MYSQL --databaseName test
  --hostName root --password root

  roo> database reverse engineer --schema test
  --package ~.model --includeTable “produto”


                                           Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
Spring Roo + JQuery + BootStrap

      Projeto que modifica os tag files do Roo
      (Spring MVC), para utilizar JQuery ao invés do
      Dojo e Bootstrap (css);

      http://github.com/edermag/roo-jquery




                                         Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
Links

   http://www.springsource.org/roo
   http://blog.globalcode.com.br/search/label/Spring%20Roo
   http://forum.springsource.org/forumdisplay.php?f=67
   http://static.springsource.org/spring-roo/reference/html-
 single/index.html
   http://blog.springsource.com/category/roo/
   http://www.yaw.com.br/screencast
   http://github.com/edermag



                                            Globalcode	
  –	
  Open4education
Wednesday, May 16, 12
Obrigado !

                         eder@yaw.com.br
                        twitter.com/edermag




                                        Globalcode	
  –	
  Open4education
Wednesday, May 16, 12

Desenvolvimento Produtivo com Spring Roo

  • 1.
    SESTINFO 2012 Desenvolva aplicativos Java Web em pouco passos com Spring Roo Eder Magalhães twitter.com/edermag www.yaw.com.br Globalcode  –  Open4education Wednesday, May 16, 12
  • 2.
    Agenda Mercado e oportunidades; Desafios em relizar uma idéia; Características do Spring Roo; Demo I: primeiro projeto; Tecnologias ao redor do Spring Roo; Demo II: relacionamento entre entidades; Como o Spring Roo gera código Java; Demo III: Spring + JSF 2; Engenharia reversa; Links; Globalcode  –  Open4education Wednesday, May 16, 12
  • 3.
    Oportunidades O Brasil é a bola da vez; Mercado aquecido; Startups brotando em todos os lugares; Globalcode  –  Open4education Wednesday, May 16, 12
  • 4.
    Colocar em prática! Realizar é uma idéia não é fácil; A escolha da tecnologia é um dos desafios! Globalcode  –  Open4education Wednesday, May 16, 12
  • 5.
    A escolha datecnologia Java é uma ótima escolha! Tecnologia madura e eficiente; Adotada em grande escala; Utilizada em diversos cenários; Oferece diversas tecnologias complementares; Viabiliza integração a outras linguagens; Globalcode  –  Open4education Wednesday, May 16, 12
  • 6.
    A escolha datecnologia Java é uma ótima escolha! Tecnologia madura e eficiente; Adotada em grande escala; Utilizada em diversos cenários; Oferece diversas tecnologias complementares; Viabiliza integração a outras linguagens; Globalcode  –  Open4education Wednesday, May 16, 12
  • 7.
    Algumas premissas Criar software de qualidade e eficiente; Escalável, seguro e rápido; Ágil, a prova de mudanças no decorrer do projeto; E principalmente: Desenvolver com produtividade! Globalcode  –  Open4education Wednesday, May 16, 12
  • 8.
    Spring Roo O Spring Roo atende a essas premissas; Desenvolvimento web, utilizando Java, com alta produtividade; Globalcode  –  Open4education Wednesday, May 16, 12
  • 9.
    Características do Roo Text based: shell com comandos alto nível; Fácil de usar; Elimina a burocracia de projetos Java; Utiliza algumas das melhores tecnologias (frameworks) Java; Adota modelo de implementação baseado em patterns; Extensível; Integrado a IDE (Eclipse / Spring Tools Suite) Globalcode  –  Open4education Wednesday, May 16, 12
  • 10.
    Chega de teoria!Demo I Vamos experimentar o Roo; Alguma sugestão para desenvolvimento da aplicação Demo? Globalcode  –  Open4education Wednesday, May 16, 12
  • 11.
    Demo I: comandosexecutados roo> project --topLevelPackage br.com.yaw.pizzameto roo> persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY roo> entity jpa --class ~.model.Pizza roo> field string --fieldName sabor --notNull --sizeMin 3 roo> field number --type java.lang.Double --fieldName preco roo> web mvc setup roo> controller all --package ~.web perform package Globalcode  –  Open4education Wednesday, May 16, 12
  • 12.
    Tecnologias suportadas peloRoo Web  MVC Security JavaScript JUnit Dojo JPA JSF JSF PrimeFaces Globalcode  –  Open4education Wednesday, May 16, 12
  • 13.
    Outras características Também agiliza o deploy e a implatanção; Geração de código é: Ativa ou Passiva; Suporte a diferentes soluções para front-end; Framework web baseado em REST; Conversor de Java para JSON e vice-versa; Gera artefatos para testes unitários e integrado; A qualquer momento pode ser desligado; Globalcode  –  Open4education Wednesday, May 16, 12
  • 14.
    Demo II: complementarnosso aplicativo Criar relacionamento com outra entidade; Analisar os artefatos gerado pelo Roo; Globalcode  –  Open4education Wednesday, May 16, 12
  • 15.
    Demo II: comandosexecutados roo> perform eclipse roo> entity jpa --class ~.model.Receita roo> field string descricao roo> focus --class ~.model.Pizza roo> field reference --fieldName receita --type ~.model.Receita roo> controller all --package ~.web #deploy pelo eclipse Globalcode  –  Open4education Wednesday, May 16, 12
  • 16.
    Gerador de código Produto.java AspectJ  IDTs escreve Roo lê preco: double Add-on Produto_Roo_ JavaBean.aj lê getPreco()... SetPreco(...) lê escreve AspectJ Produto.class Compiler preco: double getPreco()... setPreco(...) Globalcode  –  Open4education Wednesday, May 16, 12
  • 17.
    Demo III: SpringRoo com JSF 2 Utilizar a mesma idéia de aplicação, mas utilizando JSF 2 (+ Primefaces) como framework web; Globalcode  –  Open4education Wednesday, May 16, 12
  • 18.
    Demo III: comandosexecutados roo> project --topLevelPackage br.com.yaw.pizzameto2 roo> persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY roo> entity jpa --class ~.model.Pizza roo> field string --fieldName sabor --notNull --sizeMin 3 roo> field number --type java.lang.Double --fieldName preco roo> web jsf setup --implementation ORACLE_MOJARRA --theme BLUESKY roo> web jsf all --package ~.jsf roo> perform package Globalcode  –  Open4education Wednesday, May 16, 12
  • 19.
    Engenharia reversa! Gerar um cadastro a partir de uma tabela: roo> project --topLevelPackage br.com.yaw.rev roo> persistence setup --provider HIBERNATE --database MYSQL --databaseName test --hostName root --password root roo> database reverse engineer --schema test --package ~.model --includeTable “produto” Globalcode  –  Open4education Wednesday, May 16, 12
  • 20.
    Spring Roo +JQuery + BootStrap Projeto que modifica os tag files do Roo (Spring MVC), para utilizar JQuery ao invés do Dojo e Bootstrap (css); http://github.com/edermag/roo-jquery Globalcode  –  Open4education Wednesday, May 16, 12
  • 21.
    Links http://www.springsource.org/roo http://blog.globalcode.com.br/search/label/Spring%20Roo http://forum.springsource.org/forumdisplay.php?f=67 http://static.springsource.org/spring-roo/reference/html- single/index.html http://blog.springsource.com/category/roo/ http://www.yaw.com.br/screencast http://github.com/edermag Globalcode  –  Open4education Wednesday, May 16, 12
  • 22.
    Obrigado ! eder@yaw.com.br twitter.com/edermag Globalcode  –  Open4education Wednesday, May 16, 12