AOP - ESJUG - 2005

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    AOP - ESJUG - 2005 - Presentation Transcript

    1. AOP – Conceitos Fundamentais por Paulo César M. Jeveaux 24/09/2005
    2. Agenda Apresentação FrameWorks Vocabulário Básico HelloWorld Conceitos I Mercado Conceitos II Tendências 24/09/2005 2
    3. Paulo César M. Jeveaux Javanês desde 2000; Mantenedor do Portal Java www.portaljava.com Consultor Java/J2EE pela Consist Software Brasil; Participante de diversos grupos e comunidades de Java, Linux e Software Livre em Geral. 24/09/2005 3
    4. Apresentação 24/09/2005
    5. Apresentação O Problema Separar das Regras de Negócio códigos que são fundamentais para o funcionamento da Aplicação. 24/09/2005 5
    6. Apresentação Um exemplo Logging. Fundamental em inúmeras aplicações. Precisam ser implementados. Alteram diversas (ou todas) classes e métodos do sistema. 24/09/2005 6
    7. Apresentação Usar AOP possibilita que classes contenham apenas o código necessário para os seus objetivos, sem a necessidade de inclusão de blocos auxiliares para outros fins, como auditoria, segurança, controle de transações, gerência de threads, tratamento de erros e, claro, logging. Com a separação destes aspectos do código, conseguimos: 24/09/2005 7
    8. Apresentação Códigos mais simples, uma vez que as classes possuem apenas as regras de negócio; deixando de lado aspectos de projeto; Alterações nos aspectos de projeto não têm impacto nas classes. As classes passam a possuir apenas a regra de negócio; Maior produtividade na manutenção, uma vez que um mesmo aspecto pode ser aplicado a diferentes classes de um projeto. 24/09/2005 8
    9. Apresentação AOP X OOP Apesar dos nomes Programação Orientada a Aspectos e Programação Orientada a Objetos nos fazer pensar, erroneamente, em metodologias concorrentes, elas não são, na verdade elas se completam e se refinam quando são usadas juntas, uma auxiliando e melhorando a implementação da outra, a AOP e OOP quando usadas corretamente, proporcionam a real separação e organização da aplicação, não só de camadas, mas também dos aspectos ligados ao projeto. 24/09/2005 9
    10. Apresentação A Programação Orientada a Aspectos foi introduzida em 1996 por Gregor Kickzales, quando estava no Xerox Palo Alto Research Center. G. Kiczales et al., Xerox PARC, 1997 - principles of AOP; first AOP framework - AspectJ (extensão para o Java + ferramentas); Desenvolvido no Xerox PARC (Palo Alto RC) e lançada em 1998 O PARC transferiu AspectJ para eclipse.org em Dez/2002. 24/09/2005 10
    11. Vocabulário Básico 24/09/2005
    12. Vocabulário Básico Join Points Weaver PointCuts AOP Proxy Advices Concern Aspects Target Object 24/09/2005 12
    13. Conceitos Fundamentais I 24/09/2005
    14. Conceitos Fundamentais I Join Points - Pontos bem definidos de execução de um programa, que são utilizados para inserção de aspectos. São basicamente as chamadas de métodos e acesso de membros de classes. 24/09/2005 14
    15. Conceitos Fundamentais I Pointcuts - Construções no aspecto que reúnem um ou mais join points. Um pointcut pode ser criado a partir da utilização de expressões baseadas em outros pointcuts. 24/09/2005 15
    16. Conceitos Fundamentais I Advices - São os códigos inseridos para modificar o comportamento de uma classe. Podem ser executados antes, depois ou simultaneamente a um join point. 24/09/2005 16
    17. Conceitos Fundamentais I Aspects - Encapsula os advices e os pointcuts em unidades funcionais. Os aspcectos estão para a Orientação a Aspectos assim como as classes estão para a Orientação a Objetos. Weaver - Programa capaz de \"montar\" o objeto final a partir de uma classe e um aspecto, que foram desenvolvidos de maneira separada. 24/09/2005 17
    18. Conceitos Fundamentais I 24/09/2005 18
    19. Conceitos Fundamentais II 24/09/2005
    20. Conceitos Fundamentais II É preciso entender algumas fases fundamentais para o desenvolvimento baseado em Aspectos: Decomposição; Implementação; Recomposição; 24/09/2005 20
    21. Conceitos Fundamentais II 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). 24/09/2005 21
    22. Conceitos Fundamentais II Recomposição: o sistema é recomposto à partir dos concerns implementados segundo regras de recomposição. Esta fase é chamada de weaving. 24/09/2005 22
    23. Conceitos Fundamentais II Uma implementação básica de AOP consiste em: uma linguagem para programar os componentes (por exemplo, Java), uma linguagem para programar os aspectos (por exemplo, o AspectJ ou Java) e um weaver para combinar as duas linguagens. 24/09/2005 23
    24. Conceitos Fundamentais II O weaver é uma espécie de montador que tem como entrada um programa de componente e o(s) programa(s) de aspectos e como saída um programa em uma linguagem específica (por exemplo, Java). 24/09/2005 24
    25. Frameworks 24/09/2005
    26. Frameworks AspectJ – www.eclipse.org/aspectj Criado pelo Xerox SPARC em 1997 (deu origem a AOP); Primeiro Framework de Aspectos a ser usado em aplicações profissionais; Transferido para o Eclipse Foundation em 2002; Os aspectos não são codificados em Java; 24/09/2005 26
    27. Frameworks AspectWerkz – www.aspectwerkz.codehaus.org Alta Simplicidade; Boa performance; Aspectos codificados em Java; 24/09/2005 27
    28. Frameworks JBoss AOP – www.jboss.org/products/aop 100% em Java; Permite Aspectos dinâmicos. Definidos em XML; Suporte a Anotações do Java5; 24/09/2005 28
    29. Frameworks Spring Framework – www.springframework.org Permite Aspectos dinâmicos. Definidos em XML; Suporte a Anotações do Java5; Integrado ao “resto” do Spring =P 24/09/2005 29
    30. Frameworks Nanning – www.nanning.codehaus.org Dynaop – dynaop.dev.java.net CAESAR – www.caesarj.org EAOP - http://www.emn.fr/x-info/eaop/tool.html JAC – jac.objectweb.org Colt - http://hoschek.home.cern.ch/hoschek/colt DynamicAspects - http://dynamicaspects.sourceforge.net 24/09/2005 30
    31. Exemplo: HelloWorld 24/09/2005
    32. HelloWorld Usaremos no Exemplo o Framework AspectWerkz Mais Simples; Aspectos em Java; Boa documentação; Baixar em: http://aspectwerkz.codehaus.org/releases.html Última versão estável: 2.0 24/09/2005 32
    33. HelloWorldAOP 01 package br.com.jeveaux.palestras.aop; 02 03 /** 04 * @author Jeveaux 05 * 06 */ 07 public class HelloWorldAOP { 08 09 public static void main(String args[]) { 10 HelloWorldAOP world = new HelloWorldAOP(); 11 world.irAoEJES(); 12 } 13 14 public void irAoEJES() { 15 System.out.println(“Estou no EJES!\"); 16 } 24/09/2005 33 17 }
    34. HelloWorldAOP 01 package br.com.jeveaux.palestras.aop; 02 03 /** 04 * @author Jeveaux 05 * 06 */ 07 import org.codehaus.aspectwerkz.joinpoint.JoinPoint ; 08 09 public class MyAspect { 10 11 public void antesDoEJES(JoinPoint joinPoint) { 12 System.out.println(“Pegar o onibus ou o taxi...\"); 13 } 14 15 public void depoisDoEJES(JoinPoint joinPoint) { 16 System.out.println(“Sair com o pessoal do Evento e voltar pra casa...\"); 17 } 18 } 24/09/2005 34
    35. HelloWorldAOP 01 <aspectwerkz> 02 <system id=\"AspectWerkzExample\"> 03 <package name=\" br.com.jeveaux.palestras.aop\"> 04 <aspect class=\"MyAspect\"> 05 <pointcut name=\"greetMethod\" expression=\"execution(* HelloWorldAOP.ir AoEJES(..))\"/> 06 <advice name=“antesDoEJES\" ty pe=\"before\" bind-to=\"greetMethod\"/> 07 <advice name=“depoisDoEJES\" t ype=\"after\" bind-to=\"greetMethod\"/> 08 </aspect> 09 </package> 10 </system> 11 </aspectwerkz> 24/09/2005 35
    36. HelloWorldAOP Compilando a Aplicação javac –d target HelloWorldAOP.java Compilando o Aspecto javac -d target -classpath $ASPECTWERKZ_HOME/lib/aspectwerkz-2.0.jar MyAspect.java Rodando $ASPECTWERKZ_HOME/bin/aspectwerkz -Daspectwerkz.definition.file=aop.xml -cp target br.org.justjava.palestras.aop.HelloWorldAOP 24/09/2005 36
    37. HelloWorldAOP Pegar o onibus ou o taxi… Estou no EJES! Sair com o pessoal do Evento e voltar pra casa… 24/09/2005 37
    38. Mercado 24/09/2005
    39. Mercado Muito pouco usado profissionalmente; Poucos projetos totalmente Orientados a Aspectos; Grande Adoção em Projetos Open Source; 24/09/2005 39
    40. Tendências 24/09/2005
    41. Tendências Para os que acompanham AOP podem ser algumas tendências já bem batidas. Aspectos Dinâmicos Grande expectativa no Spring Framework e DynAOP Simplicidade e Performance AspectWerkz 24/09/2005 41
    42. Referências AspectJ Project: http://www.eclipse.org/aspectj AOSD Aspect Oriented Software Development: http://aosd.net Fórum do Portal Java: http://www.portaljava.com IBM: http://www-106.ibm.com/developerworks/library/j-aspectj Multi-Dimensional Separation of Concerns: www.research.ibm.com/hyperspace 24/09/2005 42
    43. That’s all folks Muito Obrigado a todos; Contatos: Paulo César M. Jeveaux (Jevô) jeveaux@portaljava.com www.portaljava.com 24/09/2005 43
    44. AOP – Conceitos Fundamentais por Paulo César M. Jeveaux 24/09/2005
    SlideShare Zeitgeist 2009

    + Paulo César M. JeveauxPaulo César M. Jeveaux Nominate

    custom

    239 views, 0 favs, 0 embeds more stats

    More info about this document

    CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

    Go to text version

    • Total Views 239
      • 239 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 4
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Tags