Ir al contenido

Diferencia entre revisiones de «AspectJ»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
Alexbot (discusión · contribs.)
m robot Añadido: ms:AspectJ
Sin resumen de edición
Línea 1: Línea 1:
'''AspectJ''' es un [[lenguaje de programación]] [[Programación Orientada a Aspectos|orientado por aspectos]] construido como una extensión del lenguaje [[Java (lenguaje de programación)|Java]] creado en [[Xerox PARC]]. Un compilador de AspectJ hace llegar la noción de aspecto hacia el código de máquina virtual implementando así una noción de relación. Los aspectos en si se escriben en Java extendido generándose un archivo java o compilado con código de máquina compatible con el generado por los compiladores de Java.
'''AspectJ''' es un [[lenguaje de programación]] [[Programación Orientada a Aspectos|orientado por aspectos]] construido como una extensión del lenguaje [[Java (lenguaje de programación)|Java]] creado en [[Xerox PARC]]. Un compilador de AspectJ hace llegar la noción de aspecto hacia el código de máquina virtual implementando así una noción de relación. Los aspectos en si se escriben en Java extendido generándose un archivo java o compilado con código de máquina compatible con el generado por los compiladores de Java.


== Características del AspectJ ==
* '''Aspects''': se definen como "envoltorios" de código. Se parecen a las clases de Java.
* '''Joinpoint''': puntos en el código Java dónde un aspecto puede interceptar a las clases.
* '''Pointcuts''': grupos de joinpoints concatenados logicamente.
* '''Advices''': se tratan de trozos de código asociados a pointcuts, que injertan un nuevo comportamiento en todos los joinpoints representados por el pointcut.
* '''Declaraciones del Intertype-member''': permiten a un aspect definir completamente los campos y los métodos implementados para múltiples clases.

== Ventajas e inconvenientes ==
Entre las ventajas del lenguaje AspectJ se pueden citar:
* AspectJ permite modelar referencias transversales, extendiendo así las posibilidades de POO.
* Es un lenguaje concíso y explícito diseñado con el fin ofrecer las ventajas de la modularidad.
Por otro lado, el lenguaje AspectJ ofrece los siguientes inconvenientes:
* Sin una herramienta apropiada, el programador no comprenderá la funcionalidad del sistema completo. Por ejemplo, los miembros inter-type members pueden no verse y no utilizarse jamás.
* El modelado, la planificación y el control son mucho más importantes en la fase de desarrollo. Los Aspectos tienen que ser reconocidos por los diseñadores, lo que aligera la tarea de los programadores.
* Los Aspectos pueden ser mal utilizados. Un programador puede implementar una falsa funcionalidad en cualquier estado del desarrollo y afectar a un amplio rango del sistema. El poder de la [[Programación Orientada a Aspectos|POA]] puede ser dificil de comprender.

== Compiladores diseñados para AspectJ ==
Existen al menos dos compiladores de AspectJ:
Existen al menos dos compiladores de AspectJ:
* '''ajc''' parte de las herramientas soportadas por el proyecto [[Eclipse (software)|Eclipse]], y
* '''ajc''' parte de las herramientas soportadas por el proyecto [[Eclipse (software)|Eclipse]], y
Línea 7: Línea 24:
== Enlaces externos ==
== Enlaces externos ==
{{wikibooks|Programemos en AspectJ}}
{{wikibooks|Programemos en AspectJ}}
* http://eclipse.org/aspectj
* [http://eclipse.org/aspect AspectJ Homepage]
* [http://www.eclipse.org/ajdt/ AspectJ Development Tools (AJDT) for Eclipse]
* [http://dev.eclipse.org/viewcvs/indextech.cgi/~checkout~/aspectj-home/doc/index.html AspectJ documentation]
* http://aspectbench.org/
* http://aspectbench.org/
* [http://www.voelter.de/data/articles/5LebenDesAspectJ.pdf "5 Leben des AspectJ" by Markus Voelter and Martin Lippert]
* [http://hugunin.net/papers/aosd-2004-cameraReady.pdf "Advice weaving in AspectJ" by Erik Hilsdale and Jim Hugunin]


{{esbozo|programación}}
{{esbozo|programación}}

Revisión del 17:56 8 abr 2008

AspectJ es un lenguaje de programación orientado por aspectos construido como una extensión del lenguaje Java creado en Xerox PARC. Un compilador de AspectJ hace llegar la noción de aspecto hacia el código de máquina virtual implementando así una noción de relación. Los aspectos en si se escriben en Java extendido generándose un archivo java o compilado con código de máquina compatible con el generado por los compiladores de Java.

Características del AspectJ

  • Aspects: se definen como "envoltorios" de código. Se parecen a las clases de Java.
  • Joinpoint: puntos en el código Java dónde un aspecto puede interceptar a las clases.
  • Pointcuts: grupos de joinpoints concatenados logicamente.
  • Advices: se tratan de trozos de código asociados a pointcuts, que injertan un nuevo comportamiento en todos los joinpoints representados por el pointcut.
  • Declaraciones del Intertype-member: permiten a un aspect definir completamente los campos y los métodos implementados para múltiples clases.

Ventajas e inconvenientes

Entre las ventajas del lenguaje AspectJ se pueden citar:

  • AspectJ permite modelar referencias transversales, extendiendo así las posibilidades de POO.
  • Es un lenguaje concíso y explícito diseñado con el fin ofrecer las ventajas de la modularidad.

Por otro lado, el lenguaje AspectJ ofrece los siguientes inconvenientes:

  • Sin una herramienta apropiada, el programador no comprenderá la funcionalidad del sistema completo. Por ejemplo, los miembros inter-type members pueden no verse y no utilizarse jamás.
  • El modelado, la planificación y el control son mucho más importantes en la fase de desarrollo. Los Aspectos tienen que ser reconocidos por los diseñadores, lo que aligera la tarea de los programadores.
  • Los Aspectos pueden ser mal utilizados. Un programador puede implementar una falsa funcionalidad en cualquier estado del desarrollo y afectar a un amplio rango del sistema. El poder de la POA puede ser dificil de comprender.

Compiladores diseñados para AspectJ

Existen al menos dos compiladores de AspectJ:

  • ajc parte de las herramientas soportadas por el proyecto Eclipse, y
  • abc que es un compilador optimizante y extendible producido en aspectbench.org.

Enlaces externos

La plantilla {{Esbozo}} está obsoleta tras una consulta de borrado, no se debe usar.