SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
16 a 18 de Junho – Anhembi – SP/SP




                 justjava.org.br




AOP – Conceitos Fundamentais, Mercado e Tendências
Por

 Paulo César M. Jeveaux



                    Promoção e Realização



                                                 1
Agenda
•Apresentação                          •Frameworks

•Vocabulário Básico                    •Meu Primeiro Exemplo: AOPHelloWorld

•Conceitos Fundamentais I              •Mercado

•Conceitos Fundamentais II             •Tendências




17/06/2005                   Jeveaux :: PortalJava                            2
Paulo César Machado Jeveaux
•    Javanes desde 2000;

•    Mantenedor do PortalJava – www.portaljava.com;

•    Formador do Grupo de JUGLeaders do ESJUG – https://esjug.dev.java.net

•    Consultor Java/J2EE da Consist do Brasil;

•    Participante de diversos grupos e comunidades de Java, Linux e Software
     Livre em Geral.




17/06/2005                         Jeveaux :: PortalJava                       3
Agenda
•Apresentação                          •Frameworks

•Vocabulário Básico                    •Meu Primeiro Exemplo: AOPHelloWorld

•Conceitos Fundamentais I              •Mercado

•Conceitos Fundamentais II             •Tendências




17/06/2005                   Jeveaux :: PortalJava                            4
Apresentação
•    Problema

       • Separar das Regras de Negócio códigos que são fundamentais para o
         funcionamento da Aplicação.


•    Case

       • Logging. Fundamental em inúmeras aplicações. Precisam ser implementados.
         Alteram diversas (ou todas) classes e métodos do sistema.




17/06/2005                           Jeveaux :: PortalJava                          5
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:

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




17/06/2005                            Jeveaux :: PortalJava                           6
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.




17/06/2005                           Jeveaux :: PortalJava                          7
Apresentação
•    A Programação Orientada a Aspectos - Aspect-Oriented Programming ou
     simplesmente AOP - 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)

•    Lançado em 1998

•    O PARC transferiu AspectJ para eclipse.org em Dez/2002.




17/06/2005                          Jeveaux :: PortalJava                      8
Agenda
•Apresentação                          •Frameworks

•Vocabulário Básico                    •Meu Primeiro Exemplo: AOPHelloWorld

•Conceitos Fundamentais I              •Mercado

•Conceitos Fundamentais II             •Tendências




17/06/2005                   Jeveaux :: PortalJava                            9
Vocabulário Básico
•    Join Points

•    PointCuts

•    Advices

•    Aspects

•    Weaver

•    AOP Proxy

•    Concern

•    Target Object


17/06/2005           Jeveaux :: PortalJava   10
Agenda
•Apresentação                          •Frameworks

•Vocabulário Básico                    •Meu Primeiro Exemplo: AOPHelloWorld

•Conceitos Fundamentais I              •Mercado

•Conceitos Fundamentais II             •Tendências




17/06/2005                   Jeveaux :: PortalJava                            11
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.

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

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




17/06/2005                         Jeveaux :: PortalJava                         12
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.




17/06/2005                         Jeveaux :: PortalJava                         13
Agenda
•Apresentação                          •Frameworks

•Vocabulário Básico                    •Meu Primeiro Exemplo: AOPHelloWorld

•Conceitos Fundamentais I              •Mercado

•Conceitos Fundamentais II             •Tendências




17/06/2005                   Jeveaux :: PortalJava                            14
Conceitos Fundamentais II
•    É preciso entender algumas fases fundamentais para o desenvolvimento
     baseado em Aspectos:

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




17/06/2005                            Jeveaux :: PortalJava                          15
Conceitos Fundamentais II
•    Responsabilidades (concerns)

•    Sistemas de software consistem de um conjunto de quot;áreas de interessequot; ou
     responsabilidades distintas como, por exemplo, responsabilidades
     funcionais (lógica de negócio) e não-funcionais (performance, persistência
     de dados, logging, autenticação de usuários, segurança, verificação de
     erros, etc.).

•    Existem também as preocupações relacionadas com o processo de
     desenvolvimento de software, como clareza de entendimento, facilidade de
     manutenção, rastreabilidade, simplicidade de evolução do software, etc.




17/06/2005                         Jeveaux :: PortalJava                        16
Conceitos Fundamentais II
•    Separação de responsabilidades (separation of concerns)

•    A melhor maneira de se projetar um sistema é através da separação de
     suas responsabilidades distintas de tal modo que podemos alterar/re-
     projetar cada uma sem que isto afete as demais partes do sistema. A
     eficiência do desenvolvimento aumenta na medida em que conseguimos
     separar as suas diferentes responsabilidades em módulos estanques.

•    Este princípio é razoavelmente antigo, e a OOP nos trouxe uma importante
     resposta a ele: a classe como uma dimensão para a decomposição de
     responsabilidades. Mas algumas responsabilidades não são tão facilmente
     decompostas em apenas uma dimensão...




17/06/2005                        Jeveaux :: PortalJava                         17
Conceitos Fundamentais II
•    Responsabilidades transversais (crosscutting concerns)

•    A AOP complementa a OOP por introduzir uma nova dimensão para a
     decomposição das responsabilidades transversais: os aspectos.

•    O paradigma da AOP consiste na separação das responsabilidades
     transversais de um sistema em aspectos (unidades modulares) e a sua
     posterior composição junto às classes, formando um sistema único. Os
     aspectos podem ser inseridos, alterados ou removidos em tempo de
     compilação. Por estarem em um único bloco de código, sua manutenção é
     mais simples, diminuindo a complexidade do sistema e facilitando o seu
     entendimento.




17/06/2005                        Jeveaux :: PortalJava                       18
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.

•    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).




17/06/2005                        Jeveaux :: PortalJava                    19
Agenda
•Apresentação                          •Frameworks

•Vocabulário Básico                    •Meu Primeiro Exemplo: AOPHelloWorld

•Conceitos Fundamentais I              •Mercado

•Conceitos Fundamentais II             •Tendências




17/06/2005                   Jeveaux :: PortalJava                            20
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;


•    AspectWerkz – www.aspectwerkz.codehaus.org
       • Alta Simplicidade;
       • Boa performance;
       • Aspectos codificados em Java;




17/06/2005                                Jeveaux :: PortalJava                        21
Frameworks
•    JBoss AOP – www.jboss.org/products/aop
       • 100% em Java;
       • Permite Aspectos dinâmicos. Definidos em XML;
       • Suporte a Anotações do Java5;


•    Spring Framework – www.springframework.org
       • Permite Aspectos dinâmicos. Definidos em XML;
       • Suporte a Anotações do Java5;
       • Integrado ao “resto” do Spring =P




17/06/2005                           Jeveaux :: PortalJava   22
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




17/06/2005                          Jeveaux :: PortalJava     23
Agenda
•Apresentação                          •Frameworks

•Vocabulário Básico                    •Meu Primeiro Exemplo: AOPHelloWorld

•Conceitos Fundamentais I              •Mercado

•Conceitos Fundamentais II             •Tendências




17/06/2005                   Jeveaux :: PortalJava                            24
HelloWorldAOP
•    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




17/06/2005                            Jeveaux :: PortalJava   25
HelloWorldAOP - Aplicação
     01      package br.org.justjava.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.irAoJJ();
     12          }
     13
     14          public void irAoJJ() {
     15              System.out.println(“Estou no JJ!quot;);
     16          }
     17      }



17/06/2005                      Jeveaux :: PortalJava             26
HelloWorldAOP - Aspecto
     01 package br.org.justjava.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 antesDoJJ(JoinPoint joinPoint) {
     12         System.out.println(“Pegar o metrô depois o
     taxi...quot;);
     13     }
     14
     15     public void depoisDoJJ(JoinPoint joinPoint) {
     16         System.out.println(“Sair com o pessoal do
     Evento e voltar pra casa...quot;);
     17     }
     18 }


17/06/2005                 Jeveaux :: PortalJava               27
HelloWorldAOP – aop.xml
     01 <aspectwerkz>
     02   <system id=quot;AspectWerkzExamplequot;>
     03     <package name=quot; br.org.justjava.palestras.aopquot;>
     04       <aspect class=quot;MyAspectquot;>
     05         <pointcut name=quot;greetMethodquot; expression=quot;exec
     ution(* testAOP.HelloWorldAOP.irAoJJ(..))quot;/>
     06         <advice name=“antesDoJJquot; type=quot;beforequot; bind-
     to=quot;greetMethodquot;/>
     07         <advice name=“depoisDoJJquot; type=quot;afterquot; bind-
     to=quot;greetMethodquot;/>
     08       </aspect>
     09     </package>
     10   </system>
     11 </aspectwerkz>




17/06/2005                 Jeveaux :: PortalJava            28
HelloWorldAOP - Compilando
•    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




17/06/2005                     Jeveaux :: PortalJava               29
HelloWorldAOP - Resultado

•    Pegar o metrô e depois o taxi…

•    Estou no JJ!

•    Sair com o pessoal do Evento e voltar pra casa…




17/06/2005                        Jeveaux :: PortalJava   30
Agenda
•Apresentação                          •Frameworks

•Vocabulário Básico                    •Meu Primeiro Exemplo: AOPHelloWorld

•Conceitos Fundamentais I              •Mercado

•Conceitos Fundamentais II             •Tendências




17/06/2005                   Jeveaux :: PortalJava                            31
Mercado
•    Muito pouco usado profissionalmente;

•    Poucos projetos totalmente Orientados a Aspectos;

•    Grande Adoção em Projetos Open Source;




17/06/2005                        Jeveaux :: PortalJava   32
Agenda
•Apresentação                          •Frameworks

•Vocabulário Básico                    •Meu Primeiro Exemplo: AOPHelloWorld

•Conceitos Fundamentais I              •Mercado

•Conceitos Fundamentais II             •Tendências




17/06/2005                   Jeveaux :: PortalJava                            33
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




17/06/2005                               Jeveaux :: PortalJava        34
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




17/06/2005                          Jeveaux :: PortalJava           35
That’s All Folks
• Muito Obrigado a todos;

• Contatos:

       • Paulo César M. Jeveaux (Jevô)

       • jeveaux@portaljava.com

       • www.portaljava.com




17/06/2005                        Jeveaux :: PortalJava   36
16 a 18 de Junho – Anhembi – SP/SP




                 justjava.org.br




AOP – Conceitos Fundamentais, Mercado e Tendências
Por

 Paulo César M. Jeveaux



                    Promoção e Realização



                                                 37

Weitere ähnliche Inhalte

Andere mochten auch

O justo remédio
O justo remédioO justo remédio
O justo remédiojmeirelles
 
Fotografias Com Alma 2ª Parte
Fotografias Com Alma   2ª ParteFotografias Com Alma   2ª Parte
Fotografias Com Alma 2ª Partejmeirelles
 
La adoracion 04
La adoracion 04La adoracion 04
La adoracion 04Arturo
 
Autolibertação
AutolibertaçãoAutolibertação
Autolibertaçãojmeirelles
 
A arte de_michael_e_inassa_gamarsh
A arte de_michael_e_inassa_gamarshA arte de_michael_e_inassa_gamarsh
A arte de_michael_e_inassa_gamarshjmeirelles
 
Texto Grandes Pedagogos Jesuitas
Texto Grandes Pedagogos JesuitasTexto Grandes Pedagogos Jesuitas
Texto Grandes Pedagogos JesuitasFundación Coanil
 
Literatura calderón de la barca
Literatura    calderón de la barcaLiteratura    calderón de la barca
Literatura calderón de la barcaNatalia14
 
Imperialismo y colonialismo
Imperialismo y colonialismoImperialismo y colonialismo
Imperialismo y colonialismojuan jose
 
Doutores apresentam Braga aos caloiros
Doutores apresentam Braga aos caloirosDoutores apresentam Braga aos caloiros
Doutores apresentam Braga aos caloirossalomechoca
 
F1 módulo 58-2012
F1 módulo 58-2012F1 módulo 58-2012
F1 módulo 58-2012Rildo Borges
 
No a los recortes! murrizketarik ez
No a los recortes! murrizketarik ezNo a los recortes! murrizketarik ez
No a los recortes! murrizketarik ezAitor Laka
 
Donos Do Pensamento
Donos Do PensamentoDonos Do Pensamento
Donos Do Pensamentoguestd59813
 

Andere mochten auch (20)

Presentación1
Presentación1Presentación1
Presentación1
 
Catalogo
CatalogoCatalogo
Catalogo
 
T1 p2d2
T1 p2d2T1 p2d2
T1 p2d2
 
Miperroamigo
MiperroamigoMiperroamigo
Miperroamigo
 
Sudafrica
SudafricaSudafrica
Sudafrica
 
O justo remédio
O justo remédioO justo remédio
O justo remédio
 
Fotografias Com Alma 2ª Parte
Fotografias Com Alma   2ª ParteFotografias Com Alma   2ª Parte
Fotografias Com Alma 2ª Parte
 
T1 p2d3
T1 p2d3T1 p2d3
T1 p2d3
 
La adoracion 04
La adoracion 04La adoracion 04
La adoracion 04
 
Autolibertação
AutolibertaçãoAutolibertação
Autolibertação
 
A arte de_michael_e_inassa_gamarsh
A arte de_michael_e_inassa_gamarshA arte de_michael_e_inassa_gamarsh
A arte de_michael_e_inassa_gamarsh
 
Texto Grandes Pedagogos Jesuitas
Texto Grandes Pedagogos JesuitasTexto Grandes Pedagogos Jesuitas
Texto Grandes Pedagogos Jesuitas
 
Presentacion
PresentacionPresentacion
Presentacion
 
Literatura calderón de la barca
Literatura    calderón de la barcaLiteratura    calderón de la barca
Literatura calderón de la barca
 
Maioridade
MaioridadeMaioridade
Maioridade
 
Imperialismo y colonialismo
Imperialismo y colonialismoImperialismo y colonialismo
Imperialismo y colonialismo
 
Doutores apresentam Braga aos caloiros
Doutores apresentam Braga aos caloirosDoutores apresentam Braga aos caloiros
Doutores apresentam Braga aos caloiros
 
F1 módulo 58-2012
F1 módulo 58-2012F1 módulo 58-2012
F1 módulo 58-2012
 
No a los recortes! murrizketarik ez
No a los recortes! murrizketarik ezNo a los recortes! murrizketarik ez
No a los recortes! murrizketarik ez
 
Donos Do Pensamento
Donos Do PensamentoDonos Do Pensamento
Donos Do Pensamento
 

Ähnlich wie AOP - JustJava - 2005

Tech Thursday -Spring Roo
Tech Thursday -Spring RooTech Thursday -Spring Roo
Tech Thursday -Spring Roomarcosbeirigo
 
Palestra EPF (Eclispe Process Framework) Estudo Caso FliSoL Abr 09
Palestra EPF (Eclispe Process Framework) Estudo Caso FliSoL Abr 09Palestra EPF (Eclispe Process Framework) Estudo Caso FliSoL Abr 09
Palestra EPF (Eclispe Process Framework) Estudo Caso FliSoL Abr 09Daniel Moraes
 
DevOps I - Ambientes padronizados e Monitoramento da Aplicação | Monografia I
DevOps I - Ambientes padronizados e Monitoramento da Aplicação | Monografia IDevOps I - Ambientes padronizados e Monitoramento da Aplicação | Monografia I
DevOps I - Ambientes padronizados e Monitoramento da Aplicação | Monografia IAlefe Variani
 
Tópicos Emergentes - DevOps
Tópicos Emergentes - DevOpsTópicos Emergentes - DevOps
Tópicos Emergentes - DevOpsSaulo Lopes
 
Aula 3 desenvolvimento de projetos
Aula 3 desenvolvimento de projetosAula 3 desenvolvimento de projetos
Aula 3 desenvolvimento de projetosThiago Cetroni
 
[Tdc2012] Auditoria Sistêmica - Processos, Práticas e Ferramentas
[Tdc2012] Auditoria Sistêmica - Processos, Práticas e Ferramentas[Tdc2012] Auditoria Sistêmica - Processos, Práticas e Ferramentas
[Tdc2012] Auditoria Sistêmica - Processos, Práticas e FerramentasWagner Roberto dos Santos
 
T1 g13.modelo cascata
T1 g13.modelo cascataT1 g13.modelo cascata
T1 g13.modelo cascatawilsonguns
 
Reutilização
ReutilizaçãoReutilização
Reutilizaçãoemjorge
 
Palestra - Profissão: Desenvolvedor
Palestra - Profissão: DesenvolvedorPalestra - Profissão: Desenvolvedor
Palestra - Profissão: DesenvolvedorDaniel Brandão
 
Frameworks de desenvolvimento web
Frameworks de desenvolvimento webFrameworks de desenvolvimento web
Frameworks de desenvolvimento webArlindo Santos
 
Sigepca – Uma Aplicação de Enterprise Content Management na CAGEPA
Sigepca – Uma Aplicação de Enterprise Content Management na CAGEPASigepca – Uma Aplicação de Enterprise Content Management na CAGEPA
Sigepca – Uma Aplicação de Enterprise Content Management na CAGEPAthiagoalbuquerquee
 
Fatores que influenciam na longevidade de um Software
Fatores que influenciam na longevidade de um SoftwareFatores que influenciam na longevidade de um Software
Fatores que influenciam na longevidade de um SoftwarePablo Dall'Oglio
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosRafael Chaves
 
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIDevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIAlefe Variani
 

Ähnlich wie AOP - JustJava - 2005 (20)

Tech Thursday -Spring Roo
Tech Thursday -Spring RooTech Thursday -Spring Roo
Tech Thursday -Spring Roo
 
NFR Framework
NFR FrameworkNFR Framework
NFR Framework
 
Palestra EPF (Eclispe Process Framework) Estudo Caso FliSoL Abr 09
Palestra EPF (Eclispe Process Framework) Estudo Caso FliSoL Abr 09Palestra EPF (Eclispe Process Framework) Estudo Caso FliSoL Abr 09
Palestra EPF (Eclispe Process Framework) Estudo Caso FliSoL Abr 09
 
DevOps I - Ambientes padronizados e Monitoramento da Aplicação | Monografia I
DevOps I - Ambientes padronizados e Monitoramento da Aplicação | Monografia IDevOps I - Ambientes padronizados e Monitoramento da Aplicação | Monografia I
DevOps I - Ambientes padronizados e Monitoramento da Aplicação | Monografia I
 
Tópicos Emergentes - DevOps
Tópicos Emergentes - DevOpsTópicos Emergentes - DevOps
Tópicos Emergentes - DevOps
 
Aula 3 desenvolvimento de projetos
Aula 3 desenvolvimento de projetosAula 3 desenvolvimento de projetos
Aula 3 desenvolvimento de projetos
 
[Tdc2012] Auditoria Sistêmica - Processos, Práticas e Ferramentas
[Tdc2012] Auditoria Sistêmica - Processos, Práticas e Ferramentas[Tdc2012] Auditoria Sistêmica - Processos, Práticas e Ferramentas
[Tdc2012] Auditoria Sistêmica - Processos, Práticas e Ferramentas
 
T1 g13.modelo cascata
T1 g13.modelo cascataT1 g13.modelo cascata
T1 g13.modelo cascata
 
Reutilização
ReutilizaçãoReutilização
Reutilização
 
Palestra - Profissão: Desenvolvedor
Palestra - Profissão: DesenvolvedorPalestra - Profissão: Desenvolvedor
Palestra - Profissão: Desenvolvedor
 
38484931 questionario-es
38484931 questionario-es38484931 questionario-es
38484931 questionario-es
 
Vamos falar de DevOps?
Vamos falar de DevOps?Vamos falar de DevOps?
Vamos falar de DevOps?
 
Frameworks de desenvolvimento web
Frameworks de desenvolvimento webFrameworks de desenvolvimento web
Frameworks de desenvolvimento web
 
NFR Framework
NFR FrameworkNFR Framework
NFR Framework
 
AOP
AOPAOP
AOP
 
Sigepca – Uma Aplicação de Enterprise Content Management na CAGEPA
Sigepca – Uma Aplicação de Enterprise Content Management na CAGEPASigepca – Uma Aplicação de Enterprise Content Management na CAGEPA
Sigepca – Uma Aplicação de Enterprise Content Management na CAGEPA
 
Fatores que influenciam na longevidade de um Software
Fatores que influenciam na longevidade de um SoftwareFatores que influenciam na longevidade de um Software
Fatores que influenciam na longevidade de um Software
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
 
Aula 05
Aula 05Aula 05
Aula 05
 
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIDevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
 

Mehr von Paulo César M Jeveaux

Wine.com.br - De zero a 300 milhões de faturamento na mesma plataforma
Wine.com.br - De zero a 300 milhões de faturamento na mesma plataformaWine.com.br - De zero a 300 milhões de faturamento na mesma plataforma
Wine.com.br - De zero a 300 milhões de faturamento na mesma plataformaPaulo César M Jeveaux
 
Empreendedorismo além do mundo da fantasia
Empreendedorismo além do mundo da fantasiaEmpreendedorismo além do mundo da fantasia
Empreendedorismo além do mundo da fantasiaPaulo César M Jeveaux
 
Case Giran 2011: os desafios no uso de práticas ágeis no dia-a-dia de uma sta...
Case Giran 2011: os desafios no uso de práticas ágeis no dia-a-dia de uma sta...Case Giran 2011: os desafios no uso de práticas ágeis no dia-a-dia de uma sta...
Case Giran 2011: os desafios no uso de práticas ágeis no dia-a-dia de uma sta...Paulo César M Jeveaux
 
Case Giran - Os desafios no uso de XP e SCRUM no dia-a-dia
Case Giran - Os desafios no uso de XP e SCRUM no dia-a-diaCase Giran - Os desafios no uso de XP e SCRUM no dia-a-dia
Case Giran - Os desafios no uso de XP e SCRUM no dia-a-diaPaulo César M Jeveaux
 
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatosSCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatosPaulo César M Jeveaux
 
Desenvolvimento Ágil de Software com SCRUM
Desenvolvimento Ágil de Software com SCRUMDesenvolvimento Ágil de Software com SCRUM
Desenvolvimento Ágil de Software com SCRUMPaulo César M Jeveaux
 
Negociação de contratos de projetos de software
Negociação de contratos de projetos de softwareNegociação de contratos de projetos de software
Negociação de contratos de projetos de softwarePaulo César M Jeveaux
 
Desenvolvimento Ágil de Software com SCRUM
Desenvolvimento Ágil de Software com SCRUMDesenvolvimento Ágil de Software com SCRUM
Desenvolvimento Ágil de Software com SCRUMPaulo César M Jeveaux
 
Turbinando sua aplicação com Lucene, Solr e Hibernate Search
Turbinando sua aplicação com Lucene, Solr e Hibernate SearchTurbinando sua aplicação com Lucene, Solr e Hibernate Search
Turbinando sua aplicação com Lucene, Solr e Hibernate SearchPaulo César M Jeveaux
 
Comunidades Virtuais Java - Conexão Java - 2004
Comunidades Virtuais Java - Conexão Java - 2004Comunidades Virtuais Java - Conexão Java - 2004
Comunidades Virtuais Java - Conexão Java - 2004Paulo César M Jeveaux
 

Mehr von Paulo César M Jeveaux (20)

Wine.com.br - De zero a 300 milhões de faturamento na mesma plataforma
Wine.com.br - De zero a 300 milhões de faturamento na mesma plataformaWine.com.br - De zero a 300 milhões de faturamento na mesma plataforma
Wine.com.br - De zero a 300 milhões de faturamento na mesma plataforma
 
Empreendedorismo além do mundo da fantasia
Empreendedorismo além do mundo da fantasiaEmpreendedorismo além do mundo da fantasia
Empreendedorismo além do mundo da fantasia
 
Case Giran 2011: os desafios no uso de práticas ágeis no dia-a-dia de uma sta...
Case Giran 2011: os desafios no uso de práticas ágeis no dia-a-dia de uma sta...Case Giran 2011: os desafios no uso de práticas ágeis no dia-a-dia de uma sta...
Case Giran 2011: os desafios no uso de práticas ágeis no dia-a-dia de uma sta...
 
E-commerce Além dos Sites
E-commerce Além dos SitesE-commerce Além dos Sites
E-commerce Além dos Sites
 
Controle de versão com GIT
Controle de versão com GITControle de versão com GIT
Controle de versão com GIT
 
Resenha Rework por Jeveaux
Resenha Rework por JeveauxResenha Rework por Jeveaux
Resenha Rework por Jeveaux
 
Case Giran - Os desafios no uso de XP e SCRUM no dia-a-dia
Case Giran - Os desafios no uso de XP e SCRUM no dia-a-diaCase Giran - Os desafios no uso de XP e SCRUM no dia-a-dia
Case Giran - Os desafios no uso de XP e SCRUM no dia-a-dia
 
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatosSCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
 
Desafios no e-commerce brasileiro
Desafios no e-commerce brasileiroDesafios no e-commerce brasileiro
Desafios no e-commerce brasileiro
 
Desenvolvimento Ágil de Software com SCRUM
Desenvolvimento Ágil de Software com SCRUMDesenvolvimento Ágil de Software com SCRUM
Desenvolvimento Ágil de Software com SCRUM
 
Negociação de contratos de projetos de software
Negociação de contratos de projetos de softwareNegociação de contratos de projetos de software
Negociação de contratos de projetos de software
 
Desenvolvimento Ágil de Software com SCRUM
Desenvolvimento Ágil de Software com SCRUMDesenvolvimento Ágil de Software com SCRUM
Desenvolvimento Ágil de Software com SCRUM
 
Turbinando sua aplicação com Lucene, Solr e Hibernate Search
Turbinando sua aplicação com Lucene, Solr e Hibernate SearchTurbinando sua aplicação com Lucene, Solr e Hibernate Search
Turbinando sua aplicação com Lucene, Solr e Hibernate Search
 
Palestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnitPalestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnit
 
Extreme Programming - XP
Extreme Programming - XPExtreme Programming - XP
Extreme Programming - XP
 
Desenvolvimento Ágil com SCRUM
Desenvolvimento Ágil com SCRUMDesenvolvimento Ágil com SCRUM
Desenvolvimento Ágil com SCRUM
 
Certificação Digital
Certificação DigitalCertificação Digital
Certificação Digital
 
Comunidades Virtuais Java - Conexão Java - 2004
Comunidades Virtuais Java - Conexão Java - 2004Comunidades Virtuais Java - Conexão Java - 2004
Comunidades Virtuais Java - Conexão Java - 2004
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
JGoodies - Conexão Java 2005
JGoodies - Conexão Java 2005JGoodies - Conexão Java 2005
JGoodies - Conexão Java 2005
 

Kürzlich hochgeladen

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 

Kürzlich hochgeladen (6)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 

AOP - JustJava - 2005

  • 1. 16 a 18 de Junho – Anhembi – SP/SP justjava.org.br AOP – Conceitos Fundamentais, Mercado e Tendências Por Paulo César M. Jeveaux Promoção e Realização 1
  • 2. Agenda •Apresentação •Frameworks •Vocabulário Básico •Meu Primeiro Exemplo: AOPHelloWorld •Conceitos Fundamentais I •Mercado •Conceitos Fundamentais II •Tendências 17/06/2005 Jeveaux :: PortalJava 2
  • 3. Paulo César Machado Jeveaux • Javanes desde 2000; • Mantenedor do PortalJava – www.portaljava.com; • Formador do Grupo de JUGLeaders do ESJUG – https://esjug.dev.java.net • Consultor Java/J2EE da Consist do Brasil; • Participante de diversos grupos e comunidades de Java, Linux e Software Livre em Geral. 17/06/2005 Jeveaux :: PortalJava 3
  • 4. Agenda •Apresentação •Frameworks •Vocabulário Básico •Meu Primeiro Exemplo: AOPHelloWorld •Conceitos Fundamentais I •Mercado •Conceitos Fundamentais II •Tendências 17/06/2005 Jeveaux :: PortalJava 4
  • 5. Apresentação • Problema • Separar das Regras de Negócio códigos que são fundamentais para o funcionamento da Aplicação. • Case • Logging. Fundamental em inúmeras aplicações. Precisam ser implementados. Alteram diversas (ou todas) classes e métodos do sistema. 17/06/2005 Jeveaux :: PortalJava 5
  • 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: • 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. 17/06/2005 Jeveaux :: PortalJava 6
  • 7. 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. 17/06/2005 Jeveaux :: PortalJava 7
  • 8. Apresentação • A Programação Orientada a Aspectos - Aspect-Oriented Programming ou simplesmente AOP - 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) • Lançado em 1998 • O PARC transferiu AspectJ para eclipse.org em Dez/2002. 17/06/2005 Jeveaux :: PortalJava 8
  • 9. Agenda •Apresentação •Frameworks •Vocabulário Básico •Meu Primeiro Exemplo: AOPHelloWorld •Conceitos Fundamentais I •Mercado •Conceitos Fundamentais II •Tendências 17/06/2005 Jeveaux :: PortalJava 9
  • 10. Vocabulário Básico • Join Points • PointCuts • Advices • Aspects • Weaver • AOP Proxy • Concern • Target Object 17/06/2005 Jeveaux :: PortalJava 10
  • 11. Agenda •Apresentação •Frameworks •Vocabulário Básico •Meu Primeiro Exemplo: AOPHelloWorld •Conceitos Fundamentais I •Mercado •Conceitos Fundamentais II •Tendências 17/06/2005 Jeveaux :: PortalJava 11
  • 12. 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. • 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. • 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. 17/06/2005 Jeveaux :: PortalJava 12
  • 13. 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. 17/06/2005 Jeveaux :: PortalJava 13
  • 14. Agenda •Apresentação •Frameworks •Vocabulário Básico •Meu Primeiro Exemplo: AOPHelloWorld •Conceitos Fundamentais I •Mercado •Conceitos Fundamentais II •Tendências 17/06/2005 Jeveaux :: PortalJava 14
  • 15. Conceitos Fundamentais II • É preciso entender algumas fases fundamentais para o desenvolvimento baseado em Aspectos: • 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. 17/06/2005 Jeveaux :: PortalJava 15
  • 16. Conceitos Fundamentais II • Responsabilidades (concerns) • Sistemas de software consistem de um conjunto de quot;áreas de interessequot; ou responsabilidades distintas como, por exemplo, responsabilidades funcionais (lógica de negócio) e não-funcionais (performance, persistência de dados, logging, autenticação de usuários, segurança, verificação de erros, etc.). • Existem também as preocupações relacionadas com o processo de desenvolvimento de software, como clareza de entendimento, facilidade de manutenção, rastreabilidade, simplicidade de evolução do software, etc. 17/06/2005 Jeveaux :: PortalJava 16
  • 17. Conceitos Fundamentais II • Separação de responsabilidades (separation of concerns) • A melhor maneira de se projetar um sistema é através da separação de suas responsabilidades distintas de tal modo que podemos alterar/re- projetar cada uma sem que isto afete as demais partes do sistema. A eficiência do desenvolvimento aumenta na medida em que conseguimos separar as suas diferentes responsabilidades em módulos estanques. • Este princípio é razoavelmente antigo, e a OOP nos trouxe uma importante resposta a ele: a classe como uma dimensão para a decomposição de responsabilidades. Mas algumas responsabilidades não são tão facilmente decompostas em apenas uma dimensão... 17/06/2005 Jeveaux :: PortalJava 17
  • 18. Conceitos Fundamentais II • Responsabilidades transversais (crosscutting concerns) • A AOP complementa a OOP por introduzir uma nova dimensão para a decomposição das responsabilidades transversais: os aspectos. • O paradigma da AOP consiste na separação das responsabilidades transversais de um sistema em aspectos (unidades modulares) e a sua posterior composição junto às classes, formando um sistema único. Os aspectos podem ser inseridos, alterados ou removidos em tempo de compilação. Por estarem em um único bloco de código, sua manutenção é mais simples, diminuindo a complexidade do sistema e facilitando o seu entendimento. 17/06/2005 Jeveaux :: PortalJava 18
  • 19. 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. • 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). 17/06/2005 Jeveaux :: PortalJava 19
  • 20. Agenda •Apresentação •Frameworks •Vocabulário Básico •Meu Primeiro Exemplo: AOPHelloWorld •Conceitos Fundamentais I •Mercado •Conceitos Fundamentais II •Tendências 17/06/2005 Jeveaux :: PortalJava 20
  • 21. 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; • AspectWerkz – www.aspectwerkz.codehaus.org • Alta Simplicidade; • Boa performance; • Aspectos codificados em Java; 17/06/2005 Jeveaux :: PortalJava 21
  • 22. Frameworks • JBoss AOP – www.jboss.org/products/aop • 100% em Java; • Permite Aspectos dinâmicos. Definidos em XML; • Suporte a Anotações do Java5; • Spring Framework – www.springframework.org • Permite Aspectos dinâmicos. Definidos em XML; • Suporte a Anotações do Java5; • Integrado ao “resto” do Spring =P 17/06/2005 Jeveaux :: PortalJava 22
  • 23. 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 17/06/2005 Jeveaux :: PortalJava 23
  • 24. Agenda •Apresentação •Frameworks •Vocabulário Básico •Meu Primeiro Exemplo: AOPHelloWorld •Conceitos Fundamentais I •Mercado •Conceitos Fundamentais II •Tendências 17/06/2005 Jeveaux :: PortalJava 24
  • 25. HelloWorldAOP • 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 17/06/2005 Jeveaux :: PortalJava 25
  • 26. HelloWorldAOP - Aplicação 01 package br.org.justjava.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.irAoJJ(); 12 } 13 14 public void irAoJJ() { 15 System.out.println(“Estou no JJ!quot;); 16 } 17 } 17/06/2005 Jeveaux :: PortalJava 26
  • 27. HelloWorldAOP - Aspecto 01 package br.org.justjava.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 antesDoJJ(JoinPoint joinPoint) { 12 System.out.println(“Pegar o metrô depois o taxi...quot;); 13 } 14 15 public void depoisDoJJ(JoinPoint joinPoint) { 16 System.out.println(“Sair com o pessoal do Evento e voltar pra casa...quot;); 17 } 18 } 17/06/2005 Jeveaux :: PortalJava 27
  • 28. HelloWorldAOP – aop.xml 01 <aspectwerkz> 02 <system id=quot;AspectWerkzExamplequot;> 03 <package name=quot; br.org.justjava.palestras.aopquot;> 04 <aspect class=quot;MyAspectquot;> 05 <pointcut name=quot;greetMethodquot; expression=quot;exec ution(* testAOP.HelloWorldAOP.irAoJJ(..))quot;/> 06 <advice name=“antesDoJJquot; type=quot;beforequot; bind- to=quot;greetMethodquot;/> 07 <advice name=“depoisDoJJquot; type=quot;afterquot; bind- to=quot;greetMethodquot;/> 08 </aspect> 09 </package> 10 </system> 11 </aspectwerkz> 17/06/2005 Jeveaux :: PortalJava 28
  • 29. HelloWorldAOP - Compilando • 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 17/06/2005 Jeveaux :: PortalJava 29
  • 30. HelloWorldAOP - Resultado • Pegar o metrô e depois o taxi… • Estou no JJ! • Sair com o pessoal do Evento e voltar pra casa… 17/06/2005 Jeveaux :: PortalJava 30
  • 31. Agenda •Apresentação •Frameworks •Vocabulário Básico •Meu Primeiro Exemplo: AOPHelloWorld •Conceitos Fundamentais I •Mercado •Conceitos Fundamentais II •Tendências 17/06/2005 Jeveaux :: PortalJava 31
  • 32. Mercado • Muito pouco usado profissionalmente; • Poucos projetos totalmente Orientados a Aspectos; • Grande Adoção em Projetos Open Source; 17/06/2005 Jeveaux :: PortalJava 32
  • 33. Agenda •Apresentação •Frameworks •Vocabulário Básico •Meu Primeiro Exemplo: AOPHelloWorld •Conceitos Fundamentais I •Mercado •Conceitos Fundamentais II •Tendências 17/06/2005 Jeveaux :: PortalJava 33
  • 34. 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 17/06/2005 Jeveaux :: PortalJava 34
  • 35. 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 17/06/2005 Jeveaux :: PortalJava 35
  • 36. That’s All Folks • Muito Obrigado a todos; • Contatos: • Paulo César M. Jeveaux (Jevô) • jeveaux@portaljava.com • www.portaljava.com 17/06/2005 Jeveaux :: PortalJava 36
  • 37. 16 a 18 de Junho – Anhembi – SP/SP justjava.org.br AOP – Conceitos Fundamentais, Mercado e Tendências Por Paulo César M. Jeveaux Promoção e Realização 37