| 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...
|
 |
|
|
|
|