AspectJ

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

Geral[editar | editar código-fonte]

AspectJ é uma linguagem de programação pertencente ao paradigma orientado à aspectos, que consiste basicamente em retirar os interesses transversais(crosscutting ou separation of concerns) de um programa em Java.

Um fator que difere o AspectJ das demais linguagens de programação, é o fato de não ser possível construir programas usando somente o AspectJ, sendo necessário também utilizar [Java]. Isso vem pela própria idéia do paradigma orientado à aspectos, sendo usada para "customizar" programas em Java, solucionando alguns problemas decorrentes da Orientação a objetos.

Alguns exemplos de problemas da Orientação a objetos são os logs das aplicações e a parte de segurança. Nesses casos, por se trabalhar com objetos, é inevitável a dependência excessiva dos objetos que fazem os logs e a parte de segurança, o que é conhecido como interesse tranversal, os logs e segurança, não fazem parte do core-business da aplicação, porém são extremamente necessários. Para solucionar esses problemas foi criado o conceito do paradigma orientado à aspectos e da linguagem "auxiliar" AspectJ.

AspectJ não possui um sistema de tipos.

História[editar | editar código-fonte]

Foi desenvolvida por uma divisão de pesquisa da Xerox, chamado Xerox PARC. Hoje é mantido pela Eclipse Fundation, mantenedora de alguns projetos de código aberto e integrado na ferramenta de desenvolvimento Eclipse (IDE). Foi idealizada por Gregor Kiczales, professor da University of British Columbia no Canadá.

Como o AspectJ funciona[editar | editar código-fonte]

Um aspecto age, interferindo no programa original, utilizando a ideia de join point, onde o aspecto é descrito. Nessa descrição, defini-se algumas regras de interferência, como:

   * pointcuts.
   * advices.
   * declaração de inter-tipos.

Exemplos de Sintaxe[editar | editar código-fonte]

Um exemplo básico de um aspecto:

       aspect VisitAspect {
           void Point.acceptVisitor(Visitor v) {
               v.visit(this);
           }
       }

Hello World em AspectJ:

       public class HelloWorld {
            public static void main(String[] args) {
            }
       }
       public aspect HelloFromAspectJ {
            pointcut mainMethod() : execution(public static void main(String[]));
            after() returning : mainMethod() {
                  System.out.println("Hello World");
            }
      }

Por ser uma linguagem que não existe por si só, ou seja depende do Java, não é possível ter resoluções de alguns algorítmos simples como por exemplo calcular os números perfeitos.

Ligações externas[editar | editar código-fonte]

Página da Eclipse Fundation: [1]
Artigo do JavaFree: [2]
Artigo(em inglês) sobre uso do AspectJ no Spring: [3]