AspectJ
Este artigo não cita fontes confiáveis. (Junho de 2022) |
![](http://178.128.105.246/cars-http-upload.wikimedia.org/wikipedia/commons/thumb/d/d1/AJDT_Eclipse_Screen.png/220px-AJDT_Eclipse_Screen.png)
Geral
AspectJ é uma linguagem de programação pertencente ao paradigma orientado a 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 da própria ideia do paradigma orientado a aspectos, usada para personalizar programas em Java, solucionando alguns problemas decorrentes da Orientação a objetos.
Alguns exemplos de problemas da Orientação a objetos são os registos ou "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 núcleo do negócio ("core-business") da aplicação, porém são extremamente necessários. Para solucionar esses problemas foi criado o conceito do paradigma orientado a aspectos e da linguagem auxiliar AspectJ.
AspectJ não possui um sistema de tipos.
História
Foi desenvolvida por uma divisão de pesquisa da Xerox, chamado Xerox PARC. Hoje é mantida pela Eclipse Fundation, gestora 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
Um aspecto age, interferindo no programa original, utilizando a ideia de ponto de junção ou "join point", pelo qual o aspecto é descrito. Nessa descrição, definem-se algumas regras de interferência, como:
* pointcuts. * advices. * declaração de inter-tipos.
Exemplos de Sintaxe
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 algoritmos simples, como por exemplo, calcular os números perfeitos.
Ligações externas
Página da Eclipse Fundation: [1]
Artigo do JavaFree: [2]
Artigo(em inglês) sobre uso do AspectJ no Spring: [3]