AOP e AspectJ Realmente tem Futuro?

Estou começando a entrar no mundo da Orientação a Aspectos com AspectJ.

Porém gostaria de ver a opinião de vocês se vale investir nele, e contrur um sistema inteiro com AspectJ?
Realmente a coisa é poderosa, mas o meu medo é que de uma hora pra outra a tecnologia entre em desuso, e eu ficar sem suporte.

AspectJ para NetBeans não funca com a Versão 5.5, e AspectJ não é compativel com Java 6.0 (Vai ser Algum dia???) apenas com abaixo de 5.0.

Então? Mergulho ou não?

Olá

AOP tem muita utilidade. Aconselho ler o manual de referência do spring para ver como AOP pode ser útil.

O Spring usa AspectJ e o cara que desenvolveu o AspectJ trabalha no Spring.

[]s
Luca

AOP é bem interessante. Posso te garantir que já está sendo muito usado no mercado. O spring tem muitos serviços implementados em aspectos.

Agora a respeito do aspectj, acho que é apenas uma ferramenta. AOP não está relacionado com aspectj. Existe vários frameworks para trabalhar com AOP.

Resumindo: Vale muito a pena estudar AOP.

O que me deixou decepcionado é o seguinte:

1 - AspectJ só rola até o Java 5
2 - Não há suporte a AspectJ no NetBeans a partrir da versão 5.0

Sei que há outras alternativas, mas AspectJ tornou-se um padrão praticamente.

O que eu tenho medo é de ter que ficar preso a uma IDE e a uma versão do Java (5 neste caso)

Olá

Esqueça AspectJ, use o Spring

[]s
Luca

[quote=EderBaum]O que me deixou decepcionado é o seguinte:

1 - AspectJ só rola até o Java 5
2 - Não há suporte a AspectJ no NetBeans a partrir da versão 5.0

Sei que há outras alternativas, mas AspectJ tornou-se um padrão praticamente.

O que eu tenho medo é de ter que ficar preso a uma IDE e a uma versão do Java (5 neste caso)[/quote]
AspectJ se baixar uma versão de desenvolvimento ja tem suporte a Java 6, o que quer dizer que em algum momento no futuro vai sair um release oficial :smiley:

quanto ao netbeans …
larga dele e usa ou o eclipse ou o IDEA :smiley:

para muita coisa o spring usa o aspectJ e se usar isto, também quebra com o java 6, exceto se utilizar os jars de desenvolvimento do aspectJ …

Vale a pena estudar AOP sim. Em muitos casos é útil, mas é claro que você não vai ficar enchendo a aplicação de aspectos, pois pode tornar o código uma bagunça muito grande.

A AOP do Spring realmente é bem interessante e poderosa. Tenho usado ultimament e tem sido muito legal. Já usei o JBoss AOP também e gostei.

Nesses últimos dias usei aspectos para implementar cache de alguns métodos, muito simples e prático, pois nem sequer alterei o código das buscas e posso habilitar e desabilitar quando quiser, bastando alterar a configuração do Spring.

Tá, mas se o próprio Spring prefere AspectJ: springframework.cvs.sourceforge.net/springframework/spring/aspectj

Tem uns arquivinhos “aj” por lá. Sem falar que tem questões em termos de performance.

Isso me deixa Aliviado, de verdade!!

[quote]quanto ao netbeans …
larga dele e usa ou o eclipse ou o IDEA[/quote]
No problem, só não quero ficar preso a uma IDE como se eu estivesse programando em Delphi ou .NET

Olá

[quote=EderBaum]Tá, mas se o próprio Spring prefere AspectJ: springframework.cvs.sourceforge.net/springframework/spring/aspectj

Tem uns arquivinhos “aj” por lá. Sem falar que tem questões em termos de performance.[/quote]

É como eu disse: o cara do AspectJ foi contratado pelo Spring.

[]s
Luca

[quote=EderBaum]Estou começando a entrar no mundo da Orientação a Aspectos com AspectJ.

Porém gostaria de ver a opinião de vocês se vale investir nele, e contrur um sistema inteiro com AspectJ?
Realmente a coisa é poderosa, mas o meu medo é que de uma hora pra outra a tecnologia entre em desuso, e eu ficar sem suporte.

AspectJ para NetBeans não funca com a Versão 5.5, e AspectJ não é compativel com Java 6.0 (Vai ser Algum dia???) apenas com abaixo de 5.0.

Então? Mergulho ou não?

[/quote]

Bom acho que vale apena , AOP é tese da minha monografia da Pos-Graduacao:
Meu estudo de caso transformei um sistema em O.O para AOP técnicas que ficaram elegantemente reutilizáveis:

:arrow: Tecnicas de Tracing e Loging
:arrow: Tecnicas de Captura de Excecoes
:arrow: Tecnicas em atualizar uma GUI

Com isso vc consegue reduzir bem código intrusivo e espalhamento de código
Deixando o sistema com facil entendimento e manutenção.

AOP possui algumas desvantagens:
Ao mesmo tempo o fácil entendimento do sistema é uma vantagem tbm é uma desvantagem devido a dificuldade em entender o que ocorre com determinada classe ao ler seu código, pois as chamadas referentes ao entrelaçamento estão fora da mesma.
Este problema é conhecido como obliviousness;

[quote]
No problem, só não quero ficar preso a uma IDE como se eu estivesse programando em Delphi ou .NET[/quote]

Bom, dai depende do suporte a AspectJ do Netbeans, que nao sei a quantas anda. No Eclipse, a nova versao do AJDT foi lancado junto com o Europa (apesar que nos meus testes com um dos ultimos release candidate o compilador estava muito lento, mesmo com java 5) e como programacao orientada a aspectos ainda esta em expansao tanto na pesquisa como no mercado, vale a pena investir no estudo, dai a escolha da ferramenta (aspecj, jboss, spring, etc) depende da tua aplicacao e preferencia…

a proposito, tem um estudo interessante sobre OO X AOP aqui, falando do impacto sobre coesao, acoplamento, manutencao, tamanho do sistema…

http://www.comp.lancs.ac.uk/computing/aose/papers/icsm2006.pdf

ate mais!

ps: desculpem a falta de acentos, computador alheio, teclado desconfigurado…

Cara Acredito que o aspectJ ainda seja o melhor framework AOP, embora AOP não esteja totalmente relacionado a um framework específico… Vc tem o Jboss AOP (não conheco, to só citando), o aspectwerks, o suporte do Spring AOP, etc.

Não.

O futuro está nas linguagens dinâmicas…

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

Antes que me pergutem o que uma coisa tem a ver com a outra, acredito que haverá uma mudança de paradigma, enterrando todas essas complicações aí na parte de programação…

Ou seja, Java e .Net estão com os dias contados… Dias contados entenda projetos novos. Ainda vão sobreviver uns 20 anos, mas não serão mais ponta de tecnologia.

[]'s

[quote=ramilani12]Bom acho que vale apena , AOP é tese da minha monografia da Pos-Graduacao:
Meu estudo de caso transformei um sistema em O.O para AOP técnicas que ficaram elegantemente reutilizáveis:

:arrow: Tecnicas de Tracing e Loging
:arrow: Tecnicas de Captura de Excecoes
:arrow: Tecnicas em atualizar uma GUI [/quote]
Captura de exceções através de AOP, taí uma coisa que me interessa bastante. Sua monografia vai estar publicada na Internet? :smiley:

Ola Rafael pretendo só publicar o artigo da monografia , mas captura de exceções em AOP fica bem elegante sem código intrusivo e repetitivo.

A noite coloco um exemplo aqui …

Estou esperando! Você não tem um blog ou algum meio de publicar um artigo sobre tratamento de exceções com AOP? :slight_smile:

Meu maior interesse é trazer essa técnica para desktop (Swing), tratar exceções num único lugar. A forma como eu tenho resolvido isso parece funcionar, mas soa como gambiarra. :roll: Creio que AOP seja a resposta.

Bom Rafael não tenho blog , mas pretendo escrever um tutorial aqui no GUJ sobre essa questão , aqui vai exemplo de como tratar Exceptions:


pointcut traceException: execution(* *.*(..)) && !within(ExceptionTrace);

after() throwing(Exception ex) : traceException()
	{
		
	    // TODO Auto-generated catch block
	     log.error(" Foi capturada uma Exception ",ex);
	}	
      

Nesse exemplo capturo de qualquer metodo e de qualquer classe que jogue uma Exception na sua execução e passo para Log4J

É, acho que está na hora de colocar minhas mãos no AspectJ… Valeu pelo exemplo. 8)

Você vai utilizar um aplicativo desktop ou web para mostrar o tratamento de exceções com AOP no seu tutorial pro GUJ?

ramilani12,

estou a ver um post teu de a 3 anos e me interessou,

[quote=ramilani12]Bom Rafael não tenho blog , mas pretendo escrever um tutorial aqui no GUJ sobre essa questão , aqui vai exemplo de como tratar Exceptions:


pointcut traceException: execution(* *.*(..)) && !within(ExceptionTrace);

after() throwing(Exception ex) : traceException()
	{
		
	    // TODO Auto-generated catch block
	     log.error(" Foi capturada uma Exception ",ex);
	}	
      

Nesse exemplo capturo de qualquer metodo e de qualquer classe que jogue uma Exception na sua execução e passo para Log4J[/quote]

tenho a tarefa de cada excepção lançada no meu programa mudar o estado da aplicação, e nunca trabalhei com AOP, peço ajuda nisso.

Desde já o meu muito obrigado