La programación orientada a aspectos (Aspect-Oriented Programming) complementa la programación
orientada a objetos (OOP) para suministrar una manera distinta de pensar la estructura de un programa.
Mientras que la OOP descompone las aplicaciones dentro de jerarquias de objetos, AOP descompone los programas
dentro de aspectos. Estos aspectos permiten definir cross-cutting concerns que puede ser aplicados a diferentes
modelos de objetos.
Mientras que el uso correcto de OOP es crucial para las aplicaciones J2EE, OOP no resuelve todos los problemas.
Esta falla en modularizar codigo llamdo crosscutting, por ejemplom codigo que deberia correr antes y despues
de cada invocación a un metodo en particular, como abrir y cerrar una transacción antes y depsues de ejecutar
un metodo de de un objeto de negocio. Los aspectos mejoran, en forma elegante, este problema modularizando
y encapsulando el codigo comun eliminando la duplicacion de codigo.
Crosscutting concern: Un crosscutting concern es un "problema" el cual la implementacion se disemina
a traves de varias clases, como chequeos de seguridad o manejo de transacciones. Estos problemas no
son bien resueltos por la OOP.
Joinpoint: Representa un "momento" en la ejecución de un programa, por ejemplo, una llamada a un método,
o un constructor, o el acceso a un miembro de una clase en particular.
Method invocation.
Field access.
Throws.
Advice: Comportamiento o acción tomada cuando se alcance un determinado join point. Actualmente hidralink
soporta intercepcion de metodos
Pointcut:Es un conjunto de join points, definen donde seran aplicados los advice,
por ejemplo, "llamadas a los métodos que empiecen por set".
Aspect: La combinación del pointcut y el advice es conocida como un aspecto. Es el módulo que define
uno o varios pointcut/s y los advices que deben ejecutarse cuando la ejecución alcance cualquiera de ellos.
Introduction: Comportamiento que añadimos a un objeto en tiempo de ejecución para que implemente una
interfaz adicional.
Mixin: Un mixin encapsula una pieza de funcionalidad que es "metida" dentro de clases existentes
sin tener que utilizar la herencia convensional. En un contexto AOP, el mixin es logrado a traves de las
introducciones. Los mixin puede simular herencia multiple
Weaving: Es el proceso de ensamblar los aspectos dentro del flujo de ejecucion. Hat varias estrategias
para realizar el weaving, las mas utilizadas son la generación de codigo y compilación (AspectJ), utilizar
un custom ClassLoader (JBossAOP) o dynamic byte code generation (hidralink).
AspectJ
JBossAOP
AspectWerkz
Spring AOP
JAC
Nanning
Tutorial de AOP en castellano
Introducción a la AOP
Introduction to Aspect-Oriented Programming
Aspect-Oriented Programming and JBoss
Spring AOP: Aspect Oriented Programming with Spring