AOP - ESJUG - 2005
Upcoming SlideShare
Loading in...5
×
 

AOP - ESJUG - 2005

on

  • 1,021 views

 

Statistics

Views

Total Views
1,021
Views on SlideShare
1,018
Embed Views
3

Actions

Likes
0
Downloads
9
Comments
0

1 Embed 3

http://www.linkedin.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

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

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

AOP - ESJUG - 2005 AOP - ESJUG - 2005 Presentation Transcript

  • AOP – Conceitos Fundamentais por Paulo César M. Jeveaux 24/09/2005
  • Agenda Apresentação FrameWorks Vocabulário Básico HelloWorld Conceitos I Mercado Conceitos II Tendências 24/09/2005 2
  • 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
  • Apresentação 24/09/2005
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • Vocabulário Básico 24/09/2005
  • Vocabulário Básico Join Points Weaver PointCuts AOP Proxy Advices Concern Aspects Target Object 24/09/2005 12
  • Conceitos Fundamentais I 24/09/2005
  • 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
  • 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
  • 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
  • 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 quot;montarquot; o objeto final a partir de uma classe e um aspecto, que foram desenvolvidos de maneira separada. 24/09/2005 17
  • Conceitos Fundamentais I 24/09/2005 18
  • Conceitos Fundamentais II 24/09/2005
  • Conceitos Fundamentais II É preciso entender algumas fases fundamentais para o desenvolvimento baseado em Aspectos: Decomposição; Implementação; Recomposição; 24/09/2005 20
  • 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
  • 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
  • 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
  • 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
  • Frameworks 24/09/2005
  • 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
  • Frameworks AspectWerkz – www.aspectwerkz.codehaus.org Alta Simplicidade; Boa performance; Aspectos codificados em Java; 24/09/2005 27
  • 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
  • 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
  • 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
  • Exemplo: HelloWorld 24/09/2005
  • 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
  • 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!quot;); 16 } 24/09/2005 33 17 }
  • 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...quot;); 13 } 14 15 public void depoisDoEJES(JoinPoint joinPoint) { 16 System.out.println(“Sair com o pessoal do Evento e voltar pra casa...quot;); 17 } 18 } 24/09/2005 34
  • HelloWorldAOP 01 <aspectwerkz> 02 <system id=quot;AspectWerkzExamplequot;> 03 <package name=quot; br.com.jeveaux.palestras.aopquot;> 04 <aspect class=quot;MyAspectquot;> 05 <pointcut name=quot;greetMethodquot; expression=quot;execution(* HelloWorldAOP.ir AoEJES(..))quot;/> 06 <advice name=“antesDoEJESquot; ty pe=quot;beforequot; bind-to=quot;greetMethodquot;/> 07 <advice name=“depoisDoEJESquot; t ype=quot;afterquot; bind-to=quot;greetMethodquot;/> 08 </aspect> 09 </package> 10 </system> 11 </aspectwerkz> 24/09/2005 35
  • 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
  • HelloWorldAOP Pegar o onibus ou o taxi… Estou no EJES! Sair com o pessoal do Evento e voltar pra casa… 24/09/2005 37
  • Mercado 24/09/2005
  • Mercado Muito pouco usado profissionalmente; Poucos projetos totalmente Orientados a Aspectos; Grande Adoção em Projetos Open Source; 24/09/2005 39
  • Tendências 24/09/2005
  • 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
  • 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
  • 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
  • AOP – Conceitos Fundamentais por Paulo César M. Jeveaux 24/09/2005