Post on 11-Jun-2015
description
Spring Roo
Spring Roo•O que é:
Ferramenta ágil para criação de aplicações Java.
•O que não é:
Não é um framework.
Spring Roo
“Roo trabalha em background e cuida das coisas com as quais você não quer
se preocupar”.
Spring Roo
•Usado apenas durante o desenvolvimento;
•100% Java; \o/
•Arquitetura extensível;
•Suporte a IDE’s.
Tecnologias•Java EE;
•Spring (mvc, ioc, security);
•JPA (Hibernate, OpenJPA etc..);
•JSP;
•Aspectos;
•Lo4j, Maven, Eclipse ...
AOP – Quê isso??•Programação Orientada a Aspectos ou
POA;
•Um paradigma de programação que permite separar e organizar o código de acordo com a sua importância para a aplicação (separation of concerns);
•Criado por Gregor Kiczales, da Xerox. Eles desenvolveram o AspectJ, a primeira e mais popular linguagem AOP.
AOP – Quê isso??•Um aspecto pode alterar o
comportamento de um código pela aplicação de um comportamento adicional a um ponto de execução (join points). Um conjunto de join points é chamada de pointcut.
•AOP tem como objetivo a separação do código, permitindo que encapsule o código secundário em módulos separados do restante da aplicação.
AOP – Quê isso??• Exemplo real: “… depois que o sistema estava
feito, e bem padronizado, foi levantado alguns requisitos pelo cliente, e uma das formas mais ágeis que tivémos foi adicionar comportamento em determinados joinpoints que eram candidatos ao problema. Foi simples, fácil, entregamos para o cliente na metade do prazo, e possibilitou ainda maior controle na manutenção.Não pode é ficar enchendo de código em AOP, mas tem coisas que se tornam muito mais fáceis quando se utiliza AOP. ”
AOP – Quê isso??•Aspect-Oriented Programming (AOP)
complements Object-Oriented Programming (OOP) by providing another way of thinking about program structure;
•Em geral a AOP é utilizada para auxiliar a OOP em tarefas que não fazem parte do dominio/regras de negócio da aplicacao. Na prática se utiliza muito AOP para geração de Logs e gerenciamento transacional.
AOP – Quê isso??
•Aprenda (bem!) OOP, depois pense em AOP.
•Esse paradigma pretendem superar algumas limitações da Programação Orientada a Objetos. Conclusão: A AOP é um complemento a POO e nunca irá substituir POO.
AOP – Quê isso??• Aspecto é um complemento adequado para implementar
áreas de dispersão (crosscutting concerns). Essas áreas estão dispersas em vários componentes.
• Decomposição: os vários concerns do sistema são identificados e classificados como comuns ou crosscutting.
• Implementação: os concerns são implementados separadamente em classes (para os concerns comuns) e aspectos (para os crosscutting concerns).
• Recomposição: o sistema é recomposto à partir dos concerns implementados segundo regras de recomposição. Esta fase é chamada de weaving.
AOPAspectJ
Pessoa_Roo_Entity.aj
Pessoa_Roo_JavaBean.aj
persist()
findAllPessoas()
getNome()
setNome()
Roo
Pessoa.java
String nome;
Compilador AspectJ
lê
Pessoa.class
persist()findAllPessoas()
getNome()
setNome()
String nome;
escreve
lê
escreve
escreve
Coisas legais
•Sem overhead de performance!
•Sem overhead de memória!
•Sem “rastros” no deploy;
•Testes...
Mais coisas legais
•Fácil remoção;
•Tecnologias open source;
•Em evolução;
•Fácil de usar e aprender;
•Geração de código passiva.
Finishing!