Mensagens enviadas por: cv
Índice dos Fóruns » Perfil de cv » Mensagens enviadas por cv
Autor Mensagem
Mais algumas informações, caso alguém esteja com a mesma preocupação que eu: fiz uma pequena experiência "treinando" um desenvolvedor Java em AOP esse fim-de-semana.

Aqui vão alguns trechos do diálogo:

- AOP é simplesmente estender a visão da orientação a objetos para acomodar o conceito de "cross-cutting concerns", que são preocupações que todos, ou muitos dos objetos no seu sistema têm. Logging é um exemplo clássico disso: quase todos os objetos no seu sistema tem que chamar alguma rotininha pra logar coisas...

- Pois é, mas no que o AOP me ajuda com logging, por exemplo?

- Então, supondo que vc queira logar todas as entradas e saídas de um determinado conjunto de métodos, por exemplo, todos os getters de um bean, vc cria um "aspecto" que dá uma mãozinha aos getters, e ajuda eles a logar coisas. Essa "mãozinha" é chamada de advice, e os advices podem executar qualquer coisa antes da chamada de um método, ou depois da chamada. No caso do logging, vc vai querer fazer as duas coisas -- um log na entrada e outro na saída...entendeu?

- Hmmm...é, sem pensar na implementação disso, parece simples...

- E a implementação disso é simples! A maioria dos frameworks de AOP pra Java funcionam usando os Dynamic Proxies introduzidos pela JDK 1.3, ou trabalham "off-line" alterando dinamicamente os bytecodes das classes já compiladas para adicionar os advices.

- Ah, já tem framework pra isso? Po, legal, entao eu nem preciso me preocupar tanto com implementação...

- Pois é, voltando à teoria da coisa, então: outro conceito bem bacana do AOP é o de mix-ins. Mix-ins são nada mais do que implementações adicionais adicionadas a seus objetos. Por exemplo, suponha que vc queira adicionar um método getVersion() para todos os objetos, que retorna a versão atual de sua implementação ou o serialVersionUID, ou algo do gênero. Voce escreve uma interface, digamos, GetVersionMixin, e uma implementacao, por exemplo, GetVersionMixinImpl, que implementa a interface GetVersionMixin, e adiciona esses mixins a seus objetos. Automaticamente, seus objetos implementarão a interface GetVersionMixin, e quando o metodo getVersion() for chamado, o codigo existente em GetVersionMixinImpl será executado.

- Ou seja...reinventaram a herança múltipla...

- Não é bem herança múltipla...não dá pra sobrescrever métodos, então não é nem herança... RELAXA, EU TAMBÉM NÃO GOSTO DE C++

- Ok, já tou mais calmo...

Argh...chega de digitar por enquanto...mais tarde eu continuo o diálogo

[]'s
-cv
Qual o erro, Fábio?
Existe algum problema na (de)serialização da classe dori.jasper.engine.base.JRBaseReport. A versão que está serializada (seja no disco ou rede) é 405, e a classe atualmente carregada na VM é 402. Provavelmente, vc está com um conflito de versões do JasperReports...
Paulo Silveira wrote:em especial porque o aspectj gera o bytecode da sua classe diferente, o aspecto nao vai existir em bytecode, sux.


Pois é, mas não só de AspectJ vive o AOP pra Java...existem diversos outros projetos (com níveis variados de sucesso em suas implementações), como o nanning.sf.net, aspectwerkz.sf.net...

Aliás, esse último não tem o problema de geração de bytecodes que vc descreve, caso vc "plugue" ele na VM em Runtime. Dá até pra criar novos aspectos dinamicamente e aplicá-los a qualquer classe carregada (excluindo as que foram carregadas pelo bootclasspath, como as do rt.jar).

Meu problema não está sendo nem a tecnologia ou o conhecimento pra fazer a coisa funcionar (afinal, AOP eh soh mais um paradigma de desenvolvimento, e bem complementar ao OOP em muitos casos), é o medo de algum desenvolvedor olhar o código mais tarde e ficar completamente boiando sobre o que está acontecendo no código...
As partes "azuis" são fechadas pelo NetBeans (e derivados, como o SunONE Studio) para que vc consiga editar a interface visualmente depois. Então, a menos que tenham colocado uma opção para definir qual o estilo de implementação vc gostaria de ver nessas áreas de código reservado, não tem jeito.

Mas vc ainda tem a opção de mudar de ambiente (o JBuilder e o JDeveloper tem versoes free que permitem isso, se nao me engano).
Olá pessoal!

Como anda o desenvolvimento usando AOP (Aspect-Oriented Programming) no Brasil? Alguem tem estatísticas, casos de sucesso ou algo do gênero pra compartilhar? Quero ter certeza de que eu nao sou o unico xarope a usar isso por aqui

[]'s
-cv
Qual a versao que vc esta usando? Se for alguma das 2.1 RC[1..4], pode instalar por cima, do contrario, desinstale, mas em qualquer dos casos, faca um backup do seu workspace antes...
 
Índice dos Fóruns » Perfil de cv » Mensagens enviadas por cv
Ir para:   
Powered by JForum 2.1.8 © JForum Team