Default style (Cherry Eve). Switch styles (Capricorn). Atom Feed Calendar
http://weblogs.javahispano.org/amergin/date/20051220 martes diciembre 20, 2005

AspectJ 5: Un nuevo pasito en la AOP

Algunos afirman que el día de hoy entrará en la historia de la Programación Orientada a Aspectos. Esta afirmación puede parecer un tanto excesiva sobre todo porque, aunque parece algo novedoso, este paradigma ya tiene un tiempo. Sin embargo, esta release tiene gran trascendencia.

AspectJ es el framework-herramienta AOP estándar de facto. Sin ánimo de comparar la velocidad con el tocino :-D, no sería descabellado decir que es el Struts de hace unos años. Pero AspectJ no esta solo, hay más jugadores compitiendo por hacerse un hueco en este mundillo. Hay dos artículos muy interesantes: AOP tools comparison (1) (2) a este respecto. Resumiendo muy brevemente podríamos decir que los jugadores son: AspectJ, AspectWerkz, JBoss AOP, Spring AOP y algunos otros como el proyecto JAC (actualmente dentro de JACQUARD).

AspectWerkz 2.0 es, o mejor dicho, era una herramienta magnífica con unas grandes capacidades, especialmente en LTW y definición de aspectos mediante XML. Este proyecto, bajo el paraguas de BEA, afortunadamente se ha fusionado con en el proyecto AspectJ. Algo parecido sucede con Spring AOP donde la integración con AspectJ es prácticamente un hecho.

Supongo que esta clara la posición de AspectJ en el mundo AOP, pero ¿qué tiene de especial esta realease?. Pues "simplemente" que es el paso de la prehistoria al presente. Algunas de las novedades son las siguientes:

  • Soporte completo para Java 5 (generics, autoboxing y unboxing,...)
  • Integración con anotaciones
  • Definición de aspectos mediante XML
  • Entretejido en tiempo de carga LTW
  • Nueva API para la reflexión
  • ...

Dejaré para otro día con más tiempo un análisis más detallado. Pero si me gustaría terminar con una llamada de atención. En mi muy modesta opinión, básicamente las grandes bazas de la AOP son la SoC, es decir, la mejora de la modularidad, y la posibilidad de tener sistemas dinámicos en los que los aspectos puedan añadirse, eliminar,... En esto último todavía hace falta mucho trabajo puesto que el uso de proxies dinámicos no es flexible ni satisfactorio y el uso de instrumentación del bytecode (JVMTI) tiene grandes limitaciones. Tal vez los próximos avances en la AOP deberían centrarse en la JVM como parece que se esta intentando hacer con JRockit. ¿Donará BEA JRockit a Harmony?. Nos aguarda un futuro interesante :).

Comentarios:

Enviar un comentario:
  • Sintaxis HTML: Deshabilitado