Acho que o mais importante, Richardson, é conhecer os conceitos do AOP, e entender como aplicá-los para resolver a maior quantidade possível de problemas - o que não é nada fácil depois que vc passa do básico (logging, caching, etc).
Fica aqui minha recomendação de usar o AspectWerkz, mais uma vez. Funciona muito bem, é dinâmico, tem features que nenhum outro framework de AOP tem (caller pointcuts, por exemplo), e o autor (Jonas Bonér) é muito gente boa, e responde as dúvidas na lista de discussão bem rápido
Qualquer metodologia de programação pode ser subvertida e usada de zilhões de formas erradas. Em AOP, assim como em OOP, não é diferente. Dá pra fazer cagadas fenomenais com umas poucas linhas de advice.
Tem muita gente preocupada com as questões de segurança das VMs ao se usar AOP. Dá pra passar por cima de license managers e outros softwares do tipo em poucos minutos, usando meramente um depurador e um aspecto dinâmico no AspectWerkz. Teve até um cara por aí que postou num blog uma solução pra usar o Together ControlCenter sem license manager, usando um único pointcut e um aspecto pra sempre retornar true na hora de validar a licensa (eu postaria um link aqui, mas estou com preguiça. Não sejam tão vagabundos quanto eu e vão procurar! :D).
Isso traz a tona uma questão muito interessante: quando vc está rodando uma aplicação Java, a VM é SUA. Você faz com ela o que quiser. Os bytecodes compilados da aplicação são meramente sugestões do que a VM deve rodar. Mas, se a VM é sua, você pode não aceitar essas sugestões, e usar outros caminhos. Isso detona muito do que a gente tem como garantido na engenharia de software hoje em dia. E tem gente, é claro, que não está gostando nada disso, mas eu particularmente estou amando a idéia
Tem pro Eclipse e pro IDEA, no site deles mesmo, se não me engano.
Mas um número enormes de funcionalidades do AspectWerkz continua fora do AspectJ. Ao mesmo tempo, o AJ tem melhor suporte às funcionalidades do Java 5.
Compare os dois e verifique qual funciona melhor no seu caso.