Tech Thursday -Spring Roo

585 views

Published on

Apresentação sobre Spring Roo - Agence 05/08/2010

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
585
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tech Thursday -Spring Roo

  1. 1. Spring Roo
  2. 2. Spring Roo <ul><li>O que é: </li></ul><ul><li>Ferramenta ágil para criação de aplicações Java. </li></ul><ul><li>O que não é: </li></ul><ul><li>Não é um framework. </li></ul>
  3. 3. Spring Roo <ul><li>“ Roo trabalha em background e cuida das coisas com as quais você não quer se preocupar”. </li></ul>
  4. 4. Spring Roo <ul><li>Usado apenas durante o desenvolvimento; </li></ul><ul><li>100% Java; o/ </li></ul><ul><li>Arquitetura extensível; </li></ul><ul><li>Suporte a IDE’s. </li></ul>
  5. 5. Tecnologias <ul><li>Java EE; </li></ul><ul><li>Spring (mvc, ioc, security); </li></ul><ul><li>JPA (Hibernate, OpenJPA etc..); </li></ul><ul><li>JSP; </li></ul><ul><li>Aspectos; </li></ul><ul><li>Lo4j, Maven, Eclipse ... </li></ul>
  6. 6. AOP – Quê isso?? <ul><li>Programação Orientada a Aspectos ou POA; </li></ul><ul><li>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); </li></ul><ul><li>Criado por Gregor Kiczales, da Xerox. Eles desenvolveram o AspectJ, a primeira e mais popular linguagem AOP. </li></ul>
  7. 7. AOP – Quê isso?? <ul><li>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. </li></ul><ul><li>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. </li></ul>
  8. 8. AOP – Quê isso?? <ul><li>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. ” </li></ul>
  9. 9. AOP – Quê isso?? <ul><li>Aspect-Oriented Programming (AOP) complements Object-Oriented Programming (OOP) by providing another way of thinking about program structure; </li></ul><ul><li>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. </li></ul>
  10. 10. AOP – Quê isso?? <ul><li>Aprenda (bem!) OOP, depois pense em AOP. </li></ul><ul><li>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. </li></ul>
  11. 11. AOP – Quê isso?? <ul><li>Aspecto é um complemento adequado para implementar áreas de dispersão (crosscutting concerns). Essas áreas estão dispersas em vários componentes. </li></ul><ul><li>Decomposição: os vários concerns do sistema são identificados e classificados como comuns ou crosscutting. </li></ul><ul><li>Implementação: os concerns são implementados separadamente em classes (para os concerns comuns) e aspectos (para os crosscutting concerns). </li></ul><ul><li>Recomposição: o sistema é recomposto à partir dos concerns implementados segundo regras de recomposição. Esta fase é chamada de weaving. </li></ul>
  12. 12. AOP AspectJ 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
  13. 13. Coisas legais <ul><li>Sem overhead de performance! </li></ul><ul><li>Sem overhead de memória! </li></ul><ul><li>Sem “rastros” no deploy; </li></ul><ul><li>Testes...  </li></ul>
  14. 14. Mais coisas legais <ul><li>Fácil remoção; </li></ul><ul><li>Tecnologias open source; </li></ul><ul><li>Em evolução; </li></ul><ul><li>Fácil de usar e aprender; </li></ul><ul><li>Geração de código passiva. </li></ul>
  15. 15. Finishing!

×