Quem já usou AOP?

Olá,

gostaria de fazer uma pesquisa no guj, sobre quem já teve a oportunidade de utilizar AOP, ou a nível de testes, acadêmicos e comerciais.

:arrow: Testes, achou interessante o paradigma, estudou em casa ou com os amigos, e implementou alguns concerns.

:arrow: Acadêmico, participou de alguma iniciação científica na área.

:arrow: Comercialmente, utilizou realmente pra valer em algum projeto comercial, e que foi colocado em produção.

vls;

[quote=Fabrício Cozer Martins]Olá,

gostaria de fazer uma pesquisa no guj, sobre quem já teve a oportunidade de utilizar AOP, ou a nível de testes, acadêmicos e comerciais.

:arrow: Testes, achou interessante o paradigma, estudou em casa ou com os amigos, e implementou alguns concerns.

:arrow: Acadêmico, participou de alguma iniciação científica na área.

:arrow: Comercialmente, utilizou realmente pra valer em algum projeto comercial, e que foi colocado em produção.

vls;[/quote]

Estou usando para controle de transações e log.

todo mundo que usa o Spring Framework, acaba usando AOP, mesmo que nem se de conta disto, quando usa o controle de transações dele por exemplo :smiley:

Acho que vou fazer meu TCC sobre AOP, mas não usando em infra-estrutura (exemplo clássicos como Log ou transaction). Tou pensando em fazer um estudo de caso em AOP aplicado ao design do domínio. Sei lá…

Ainda nem pesquisei nada, nem sei se esse é um tema batido demais ou se eh simples demais pra ser tema de TCC.

Meu trabalho no mestrado é sobre otimizações do código gerado por compiladores AspectJ

Como um teste inicial eu usei AspectJ pra implementar minha otimização no código-fonte do weaver do ajc… ficou fácil :wink:

PS.: o código-fonte do ajc é a besta do apocalipse…

Aqui criamos soluções com AOP para Logging e Segurança… Usando o aspectwerkz

Logging, segurança, transação e persistência, usando AspectWerkz.

Pessoal, o AspectWerkz não se juntou com o AspectJ ?
Estou vendo qual escolher para implementar no meu projeto final, tem que ser uma que dê suporte a alterações em run-time.

[quote=escordeiro]Meu trabalho no mestrado é sobre otimizações do código gerado por compiladores AspectJ

Como um teste inicial eu usei AspectJ pra implementar minha otimização no código-fonte do weaver do ajc… ficou fácil :wink:

PS.: o código-fonte do ajc é a besta do apocalipse…[/quote]
Massa! :stuck_out_tongue:
Como você tratou a opção de Load-time weaving ?

[quote=Fabrício Cozer Martins]
Massa! :stuck_out_tongue:
Como você tratou a opção de Load-time weaving ?[/quote]

O weaver usado nos dois é o mesmo…a diferença é que o estático salva as classes modificadas em arquivos class, e o dinâmico é integrado a um class loader pra fazer tudo em memória durante o carregamento das classes.

Mas cuidado pq AspectJ não tem “run-time” weaving diretamente; o weaving é feito no carregamento de classes – não tem jeito de remover ou adicionar aspectos com o programa em execução como em alguns outros sistemas.

[]'s

Utilizei AOP do Spring para controle de Transação para um sistema financeiro web.

Escrevi um CMS do zero usando AOP. Na epoca, era do caralho. Hoje em dia, teria usado Rails pra fazer a mesma coisa, com uma ajudinha de metaclasses. Teria sido bem, beeeeeeeeeem mais limpo. De qualquer forma, o projeto ta em producao e os clientes parecem satisfeitos.

:shock:

Nossa , essa implementação foje totalmente do que todo mundo já está acostumado a ver e implementar que é Transações, Segurança, Logging, Tracing, profile, monitoring, contracts, etc …

CMS em AOP ? Por curiosidade, o que teria nesse CMS para ser útil a utilização de Aspects ?
Cache ?

Pelo que eu me lembro do que ele tinha falado, o bixo era cheio de Mixins :smiley:

Galera,

qual seria a tendência hoje em dia na utilização de Aspects ? O Aspectj5 por exemplo melhorou muitoooo, tendo suporte a annotations, load-time weaving, só que ainda tem aí o JBossAOP, SpringAOP, Dynaop, dentre esses teria alguma tendência ? Eu preferencialmente gosto mais do Aspectj5, o plugin para eclipse AJDT, etc…

E também alguém tem alguma crítica na utilização de Aspects ?

Bom…minha experiência é só com AspectJ e alguns sistemas acadêmicos que nem valem a pena comentar.

Mas o problema de usar AspectJ é que o AJDT ainda está muito ruim; na lista de discussão de AJ grande parte das dúvidas e reclamações são quanto a bugs bizarros e absurdos do AJDT (do tipo não mostrar mensagens de erro de compilação a não ser que você converta o projeto pra Java e depois de volta pra AspectJ).

Além disso, a sintaxe herdada do AspectWerkz pra AOP escrito só em Java (sem extensão de linguagem) é péssima…um exemplo:

pointcut fooCalls(int x) : call(void *.foo(int)) && args(x) && if(x < 0);

vira, na notação com anotações (putz)

@Pointcut("call(void *.foo(int)) && args(x) && if()")
static boolean fooCalls(int x) {
    return x < 0;
}

Como load-time weaving não depende dessa sintaxe, eu a acho totalmente desnecessária…mas parece que muita gente na comunidade de desenvolvedores prefere a sintaxe com anotações por ser "Java puro"… :roll: