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.
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
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!

Tech Thursday -Spring Roo

  • 1.
  • 2.
    Spring Roo Oque é: Ferramenta ágil para criação de aplicações Java. O que não é: Não é um framework.
  • 3.
    Spring Roo “Roo trabalha em background e cuida das coisas com as quais você não quer se preocupar”.
  • 4.
    Spring Roo Usadoapenas durante o desenvolvimento; 100% Java; \o/ Arquitetura extensível; Suporte a IDE’s.
  • 5.
    Tecnologias Java EE;Spring (mvc, ioc, security); JPA (Hibernate, OpenJPA etc..); JSP; Aspectos; Lo4j, Maven, Eclipse ...
  • 6.
    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.
  • 7.
    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.
  • 8.
    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. ”
  • 9.
    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.
  • 10.
    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.
  • 11.
    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.
  • 12.
    AOP AspectJ Pessoa_Roo_Entity.ajPessoa_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.
    Coisas legais Semoverhead de performance! Sem overhead de memória! Sem “rastros” no deploy; Testes... 
  • 14.
    Mais coisas legaisFácil remoção; Tecnologias open source; Em evolução; Fácil de usar e aprender; Geração de código passiva.
  • 15.