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 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
6. 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
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: 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
12. Tecnologias suportadas pelo Roo
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: complementar nosso aplicativo
Criar relacionamento com outra entidade;
Analisar os artefatos gerado pelo Roo;
Globalcode
–
Open4education
Wednesday, May 16, 12
15. 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
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: 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
18. 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
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