Estos últimos días estoy trabajando con AspectJ, un lenguaje de programación orientado a aspectos sobre el que he escrito algún ejemplo en el blog. Aunque no sea un gurú del tema siempre me ha gustado el trabajar con AOP (en mi caso AspectJ), me gusta el abanico de nuevas posibilidades que te proporciona como complemento a la POO.
La razón del post es que estaba buscando nueva información al respecto y las páginas que visitaba eran las mismas que las que ya había visitado y muchas de ellas con bastante tiempo a sus espaldas. Lo mismo pasa si se busca AOP en el delicious, la mayoría de los resultados son enlaces a artículos "viejos", nada nuevo, como si hubiese pasado el hype y se hubiese llegado a un pico.
Por otra parte veo y leo el incremento de uso de la AOP en nuevos frameworks. Esta diferencia entre la utilización de AOP en frameworks y en proyectos del día a día me hacen preguntarme cuales podrían ser los motivos de lo que parece une estancamiento en la utilización de AOP en proyectos que no sean en grandes frameworks cuando queda sobradamente demostrado la potencia que te puede proporcionar aplicarla en determinados ámbitos.
El aprender AspectJ no es muy difícil (no sé como serán las otras librerías pero no creo que difiera mucho la dificultad) y aprenderse las bases de la AOP tampoco es que sean muy complicado si se dedica el tiempo suficiente, al fin y al cabo tampoco es un campo excesivamente extenso. El punto que veo donde puede flojear es que se necesita una mente bastante abierta y con experiencia (repito que yo hago aspectos simples) para poder sacarle todo el jugo que puede dar y sobretodo el saber pensar en la arquitectura en general para poder detectar esos espacios donde poder aplicar AOP como hacen los chicos de Spring que son unos cracks, entonces la gente puede pensar que no vale la pena complicarse en aprender algo nuevo ya que aunque tu y yo puede que nos interese el tema, lo más probable es que si programas un simple aspecto de seguridad y al cabo de unos días se incorporan al equipo nuevos programadores creo que la mayoria de ellos les puede sonar a chino.
¿Cuales creeis que pueden ser los puntos en donde la AOP flojea para no ser tan utilizada en su día a día, o somos nosotros los únicos culpables?.
La razón del post es que estaba buscando nueva información al respecto y las páginas que visitaba eran las mismas que las que ya había visitado y muchas de ellas con bastante tiempo a sus espaldas. Lo mismo pasa si se busca AOP en el delicious, la mayoría de los resultados son enlaces a artículos "viejos", nada nuevo, como si hubiese pasado el hype y se hubiese llegado a un pico.
Por otra parte veo y leo el incremento de uso de la AOP en nuevos frameworks. Esta diferencia entre la utilización de AOP en frameworks y en proyectos del día a día me hacen preguntarme cuales podrían ser los motivos de lo que parece une estancamiento en la utilización de AOP en proyectos que no sean en grandes frameworks cuando queda sobradamente demostrado la potencia que te puede proporcionar aplicarla en determinados ámbitos.
El aprender AspectJ no es muy difícil (no sé como serán las otras librerías pero no creo que difiera mucho la dificultad) y aprenderse las bases de la AOP tampoco es que sean muy complicado si se dedica el tiempo suficiente, al fin y al cabo tampoco es un campo excesivamente extenso. El punto que veo donde puede flojear es que se necesita una mente bastante abierta y con experiencia (repito que yo hago aspectos simples) para poder sacarle todo el jugo que puede dar y sobretodo el saber pensar en la arquitectura en general para poder detectar esos espacios donde poder aplicar AOP como hacen los chicos de Spring que son unos cracks, entonces la gente puede pensar que no vale la pena complicarse en aprender algo nuevo ya que aunque tu y yo puede que nos interese el tema, lo más probable es que si programas un simple aspecto de seguridad y al cabo de unos días se incorporan al equipo nuevos programadores creo que la mayoria de ellos les puede sonar a chino.
¿Cuales creeis que pueden ser los puntos en donde la AOP flojea para no ser tan utilizada en su día a día, o somos nosotros los únicos culpables?.

4 comentarios:
En mi opinión, que no he implementado un aspecto en mi vida, son tres los principales puntos débiles.
Uno es el que apuntas, que aumenta la complejidad del proyecto y por tanto es más difícil de aprender para las personas que se incorporan, y nunca hay tiempo para formación.
El segundo es que para aspectos simples (que son los más comunes) simplifica el código pero complica la configuración (xml)
El tercero es el mantenimiento a la larga... un ejemplo que me acabo de encontrar es un proyecto con un método común (lo que sería un aspecto) que tenía un error en ciertas circunstancias !!! Modificar un método común cuando se está en producción es bastante... peliagudo.
Por cierto, estaba buscando un tutorial para aprender a utilizar Spring AOP, podrías recomendarme algo para empezar ?
Gracias
Hola yoyoooyoy (vaya nick! ;).
No te acabo de pillar con el segundo punto, no sé si te refieres a configurar con Spring AOP que ahí si que puede entrar en juego el XML, pero con AspectJ puedes crear los aspectos con Java a pelo.
La verdad es que es complicado insertar aspectos por el tema de mantenimiento que comentas, la mayoria de gente no se mete demasiado con AOP y el nivel de rotación en empresas es elevado por lo que no sé si compensa.
Aún así para cosas simples tampoco es muy complicado y la verdad es que te puede solucionar cosas bastante interesantes (dejando de banda el tipico ejemplo de loging). Te animo a que le pegues un ojo.
Respecto al tutorial, lo siento pero no :(, nunca he probado Spring AOP, si hago algo de AOP lo programo con AspectJ. Mira por http://www.springhub.com
Bueno pues apenas voy a iniciar con el tema de AOP, por el momento puedo decir que en definitiva hay que abrir la mente para entenderlo.
Hola MT, seguro que no te defrauda ;).
Publicar un comentario en la entrada