<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Últimas mensagens do tópico "AOP?"]]></title>
		<link>http://www.guj.com.br/posts/list/12.java</link>
		<description><![CDATA[Últimas mensagens enviadas no tópico "AOP?"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>AOP?</title>
				<description><![CDATA[ Olá pessoal!<br /> <br /> 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 <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"><br /> <br /> []'s<br /> -cv]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/2251/10937/aop
</guid>
				<link>http://www.guj.com.br/prepost/2251/10937/aop
</link>
				<pubDate><![CDATA[Fri, 4 Apr 2003 02:06:06]]> GMT</pubDate>
				<author><![CDATA[ cv]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ usar a filosofia AOP tem muita gente usando. qualquer interceptador, filtro, etc ta usando crosscutting  de uma maneira ou outra.<br /> <br /> agora, usar alguma ferramenta, como o aspectj, em um projeto comercial, ouvi apenas boatos.<br /> <br /> em especial porque o aspectj gera o bytecode da sua classe diferente, o aspecto nao vai existir em bytecode, sux.<br /> <br /> se voce usar o bcel ou outro gerador de bytecode em cojunto, ai ateh pode sair algo mais real, porem mesmo assim nao vai ser a virtual machine que estara interceptando os pointcuts. sux denovo, nao?<br /> <br /> por exemplo, voce escreveu um aspecto, e agora adicionou outra classe sozinha, o aspecto nao vai pegar essa classe se voce nao compila-la junto com o aspecto. um crime.<br /> <br /> eu acho que tem futuro, mas nao agora.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/2251/10968/
</guid>
				<link>http://www.guj.com.br/prepost/2251/10968/
</link>
				<pubDate><![CDATA[Fri, 4 Apr 2003 11:20:47]]> GMT</pubDate>
				<author><![CDATA[ Paulo Silveira]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ Desculpem a ignorância ... mas, será que vocês tem algum link pra eu ler a respeito? (não das ferramentas, mas do conceito)<br /> <br /> Só pra eu saber do que se trata este tópico  <img src="http://www.guj.com.br/images/smilies/9d71f0541cff0a302a0309c5079e8dee.gif" border="0"> <br /> <br /> Obrigado]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/2251/10969/
</guid>
				<link>http://www.guj.com.br/prepost/2251/10969/
</link>
				<pubDate><![CDATA[Fri, 4 Apr 2003 11:26:37]]> GMT</pubDate>
				<author><![CDATA[ smota]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ <a class="snap_shots" href="http://www.aosd.net/" target="_blank" rel="nofollow">http://www.aosd.net/</a>   site sobre AOP em geral<br /> <a class="snap_shots" href="http://www.aspecj.org/" target="_blank" rel="nofollow">http://www.aspecj.org/</a>   implementacao de aspectos para java]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/2251/10978/
</guid>
				<link>http://www.guj.com.br/prepost/2251/10978/
</link>
				<pubDate><![CDATA[Fri, 4 Apr 2003 11:45:48]]> GMT</pubDate>
				<author><![CDATA[ Paulo Silveira]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ [quote="Paulo Silveira"]em especial porque o aspectj gera o bytecode da sua classe diferente, o aspecto nao vai existir em bytecode, sux.<br /> [/quote]<br /> <br /> 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 [url]nanning.sf.net[/url], [url]aspectwerkz.sf.net[/url]...<br /> <br /> 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).<br /> <br /> 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...]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/2251/11000/
</guid>
				<link>http://www.guj.com.br/prepost/2251/11000/
</link>
				<pubDate><![CDATA[Fri, 4 Apr 2003 15:20:49]]> GMT</pubDate>
				<author><![CDATA[ cv]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ 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.<br /> <br /> Aqui vão alguns trechos do diálogo:<br /> <br /> - 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...<br /> <br /> - Pois é, mas no que o AOP me ajuda com logging, por exemplo?<br /> <br /> - 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?<br /> <br /> - Hmmm...é, sem pensar na implementação disso, parece simples...<br /> <br /> - 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.<br /> <br /> - Ah, já tem framework pra isso? Po, legal, entao eu nem preciso me preocupar tanto com implementação...<br /> <br /> - 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.<br /> <br /> - Ou seja...reinventaram a herança múltipla...  <img src="http://www.guj.com.br/images/smilies/2e207fad049d4d292f60607f80f05768.gif" border="0"> <br /> <br /> - 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++ <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"><br /> <br /> - Ok, já tou mais calmo...<br /> <br /> Argh...chega de digitar por enquanto...mais tarde eu continuo o diálogo <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"><br /> <br /> []'s<br /> -cv]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/2251/11116/
</guid>
				<link>http://www.guj.com.br/prepost/2251/11116/
</link>
				<pubDate><![CDATA[Mon, 7 Apr 2003 12:22:54]]> GMT</pubDate>
				<author><![CDATA[ cv]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ vai ser legal quando implementarem nativamente e tal. pra ter uma puta performance e padronizado.<br /> <br /> bem que eh legal ficar gerando bytecode compativel, neh? porque ai funciona em qualquer JVM. eh que nem generics que vai provavelmente conseguir rodar em java &lt; 1.5. pelo menos eles desejam <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"><br /> <br /> a gente ta assistindo a mesma coisa que nossos pais e professores assistiram a 20 anos atras, a mudanca de paradigma. tirem fotos para a posterioridade!]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/2251/11123/
</guid>
				<link>http://www.guj.com.br/prepost/2251/11123/
</link>
				<pubDate><![CDATA[Mon, 7 Apr 2003 12:46:34]]> GMT</pubDate>
				<author><![CDATA[ Paulo Silveira]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ [quote="Paulo Silveira"]vai ser legal quando implementarem nativamente e tal. pra ter uma puta performance e padronizado.[/quote]<br /> <br /> Yup, mas acho difícil o Java ganhar essas coisas "na linguagem", pode ser overkill pra definição da linguagem e ia dar ainda mais trabalho do que os generics pra implementar nos compiladores (putz, coitada da galera do Jikes e Eclipse...)<br /> <br /> [quote="Paulo Silveira"]a gente ta assistindo a mesma coisa que nossos pais e professores assistiram a 20 anos atras, a mudanca de paradigma. tirem fotos para a posterioridade![/quote]<br /> <br /> Curioso que, a cada mudança de paradigma, tem menos e menos gente seguindo as novidades... quando assembly era o top, C e outras linguagens conseguiram convencer rapidamente o pessoal de que eram mais eficientes... hoje, ainda tem *muita* gente programando em C coisas que não precisariam ser feitas em linguagens tão low-level...falar de AOP ou programação funcional (heyyy Haskell!) parece loucura pra muitos... <img src="http://www.guj.com.br/images/smilies/ed515dbff23a0ee3241dcc0a601c9ed6.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/2251/11209/
</guid>
				<link>http://www.guj.com.br/prepost/2251/11209/
</link>
				<pubDate><![CDATA[Tue, 8 Apr 2003 08:25:27]]> GMT</pubDate>
				<author><![CDATA[ cv]]></author>
			</item>
			<item>
				<title>Lista sobre AOP e correlatos</title>
				<description><![CDATA[ Olah, existe uma lista de discussao sobre AOP e correlatos...eh uma lista de baixo trafego, contando com cerca de 50 pessoas cadastradas...segue a descricao da lista:<br /> <br /> "Este grupo foi criado para reunir pessoas do Brasil (estrangeiros também são bem-vindos) interessadas em discutir sobre Advanced Separation of Concerns no desenvolvimento de software e suas diversas abordagens (Aspect-oriented Software Development, Multi-Dimensional Separation of Concerns, Composition Filters, Meta-object Protocols etc). "<br /> <br /> Para se inscrever na lista: <a class="snap_shots" href="mailto:asoc-br-subscribe@yahoogroups.com">asoc-br-subscribe@yahoogroups.com</a>  <br /> ou pelo site do yahoo...<br /> <br /> T+<br /> Eduardo Piveta]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/2251/11424/lista-sobre-aop-e-correlatos
</guid>
				<link>http://www.guj.com.br/prepost/2251/11424/lista-sobre-aop-e-correlatos
</link>
				<pubDate><![CDATA[Wed, 9 Apr 2003 15:21:28]]> GMT</pubDate>
				<author><![CDATA[ eduardopiveta]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ Valeu pela dica, Eduardo! <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/2251/11477/
</guid>
				<link>http://www.guj.com.br/prepost/2251/11477/
</link>
				<pubDate><![CDATA[Wed, 9 Apr 2003 19:56:24]]> GMT</pubDate>
				<author><![CDATA[ cv]]></author>
			</item>
			<item>
				<title>AOP?</title>
				<description><![CDATA[ [quote=cv]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 <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0">[/quote]<br /> <br /> Espero que não fiquem chateados comigo por ter recuperado um tópico tão velho, eu não resisti porque a pergunta do cv para mim continua muito atual. Como está o desenvolvimento com Orientação a Aspectos no Brasil? Alguém está usando, quais resultados vocês têm obtido?<br /> <br /> Abraços a todos!]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/2251/420677/aop
</guid>
				<link>http://www.guj.com.br/prepost/2251/420677/aop
</link>
				<pubDate><![CDATA[Mon, 14 Jan 2008 14:32:13]]> GMT</pubDate>
				<author><![CDATA[ bonfarj]]></author>
			</item>
			<item>
				<title>Re:AOP?</title>
				<description><![CDATA[ Eu uso... a implementação do AspectJ é muito boa. Tem os drawbacks que o Paulo comentou, mas não acho isso impeditivo na adoção do framework. O que gosto é a integração com o Eclipse. Ele destaca os métodos que sofrem atuação de advices e se você olhar o aspecto ele também te diz todos os métodos adviced.<br /> <br /> Atualmente tenho usado para fazer DI, Logging, Tracing. Na semana passada estava com um probleminha. Quando você está usando o Hibernate Validator e manda um manager.persist(entity) com uma entidade inválida o EntityManager gospe um RuntimeException que encerra a transação JTA. Minha aplicação precisava que os erros de validação simplesmente fossem uma RuntimeException mas @ApplicationException. Resolví com um Aspecto que observava os métodos do EntityManager (uma solução bem melhor que implementar um EntityManagerFactory).<br /> <br /> Depois que você aprende você começa a enxergar uma outra dimensão nos objetos e começa a aplicar AOP.<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/2251/425494/reaop
</guid>
				<link>http://www.guj.com.br/prepost/2251/425494/reaop
</link>
				<pubDate><![CDATA[Tue, 22 Jan 2008 17:32:57]]> GMT</pubDate>
				<author><![CDATA[ rodrigoy]]></author>
			</item>
			<item>
				<title>Re:AOP?</title>
				<description><![CDATA[ Eai pessoal,<br /> <br /> Estou avaliando a utilização de AOP, mas pelo que percebi, não tem muita gente utilizando.... Brinquei um pouco com aspectJ e queria brincar um pouco com o JBOSS AOP. <br /> Alguem aqui usa algum dos frameworks em projetos comerciais?<br /> <br /> Gostei do aspectJ mas tive dificuldades para utilizá-lo com o maven... não achei nenhum plugin descente.<br /> Pretendo avaliar o JBOSS AOP agora e ver se vale a pena...<br /> <br /> Alguma sugestão?<br /> <br /> []s]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/2251/532319/reaop
</guid>
				<link>http://www.guj.com.br/prepost/2251/532319/reaop
</link>
				<pubDate><![CDATA[Sun, 3 Aug 2008 11:16:24]]> GMT</pubDate>
				<author><![CDATA[ Ferryman]]></author>
			</item>
			<item>
				<title>AOP?</title>
				<description><![CDATA[ [quote=Paulo Silveira]vai ser legal quando implementarem nativamente e tal. pra ter uma puta performance e padronizado.<br /> <br /> bem que eh legal ficar gerando bytecode compativel, neh? porque ai funciona em qualquer JVM. eh que nem generics que vai provavelmente conseguir rodar em java &lt; 1.5. pelo menos eles desejam <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"><br /> <br /> a gente ta assistindo a mesma coisa que nossos pais e professores assistiram a 20 anos atras, a mudanca de paradigma. tirem fotos para a posterioridade![/quote]<br /> <br /> Realmente Paulo, pois tentei montar um esquema de Log automatizado no meu projeto atual, que usa o WebLogic, além da configuração com o servidor ser árdua, a performance do bichinho não é lá essas coisas, acabou inviabilizando minha implementação. <br /> <br /> Costumo pensar em aspectos somente para interesses ortogonais. Esse insight que o CV deu sobre Mix-ins, despertou minha atenção para alguns outros casos, utilizá-lo também em negócios. Mas teríamos que ter nativamente, como você disse. ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/2251/532347/aop
</guid>
				<link>http://www.guj.com.br/prepost/2251/532347/aop
</link>
				<pubDate><![CDATA[Sun, 3 Aug 2008 13:15:39]]> GMT</pubDate>
				<author><![CDATA[ Kenobi]]></author>
			</item>
			<item>
				<title>AOP?</title>
				<description><![CDATA[ [quote=Kenobi][quote=Paulo Silveira]vai ser legal quando implementarem nativamente e tal. pra ter uma puta performance e padronizado.<br /> <br /> bem que eh legal ficar gerando bytecode compativel, neh? porque ai funciona em qualquer JVM. eh que nem generics que vai provavelmente conseguir rodar em java &lt; 1.5. pelo menos eles desejam <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"><br /> <br /> a gente ta assistindo a mesma coisa que nossos pais e professores assistiram a 20 anos atras, a mudanca de paradigma. tirem fotos para a posterioridade![/quote]<br /> <br /> Realmente Paulo, pois tentei montar um esquema de Log automatizado no meu projeto atual, que usa o WebLogic, além da configuração com o servidor ser árdua, a performance do bichinho não é lá essas coisas, acabou inviabilizando minha implementação. <br /> <br /> Costumo pensar em aspectos somente para interesses ortogonais. Esse insight que o CV deu sobre Mix-ins, despertou minha atenção para alguns outros casos, utilizá-lo também em negócios. Mas teríamos que ter nativamente, como você disse. [/quote]<br /> <br /> Mix-ins são realmente muito bons Kenobi  e  ajudam muito, contudo manter longe do negócio e mais perto das necessidades da infra me parece ser uma escolha mais interessante. <br /> <br /> Por exemplo:<br /> <br /> É comum em paginas que usam Datatables JSF, disponibilizar entidades com um atributo isSelect ou algo parecido, que leem  e outros que setam um valor booleano que diz se a linha foi selecionada por um checkbox ou não. Normalmente para tal, insere-se um atributo booleano na Entidade ou cria-se um wrapper para ela. Na primeira um problema é misturar no objeto entidade coisas muito além da modelagem do domínio, como um campo referente a infra da apresentação... e no segundo approach o ruim é que ficar fazendo wrapper sempre que precisar de um conteúdo a ser exibido é um saco. Para isso, fazer "Introduction" de um campo inexistente na modelagem de domínio e um "Mix-in" de uma interface para estas entidades, com implementações de métodos para leitura destes novos campos, torna de maneira única bem simples este serviço para qualquer que seja a entidade. Aspectos de segurança também são bem comuns nesta mesma linha de abordagem.<br /> <br /> Contudo, modelar aspectos para o negócio em sí, acho meio perigoso. Os métodos pertinentes ao domínio tem que ser explícitos neste, e não plugados.<br /> <br /> Quanto ao que o CV disse, só uma observação, é possível sim sobrescrever métodos. Aliás, para classes que compartilham de mesma estratégia comum para equals e hashCode (projetos onde as igualdades podem ser submissas a IDs, por exemplo),  um aspecto pode perfeitamente resolver este crosscuting fazendo as sobrescritas.<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/2251/532455/aop
</guid>
				<link>http://www.guj.com.br/prepost/2251/532455/aop
</link>
				<pubDate><![CDATA[Sun, 3 Aug 2008 21:38:25]]> GMT</pubDate>
				<author><![CDATA[ Alessandro Lazarotti]]></author>
			</item>
			<item>
				<title>Re:AOP?</title>
				<description><![CDATA[ Na maioria das vezes é possível implementar 'aspectos' usando a infraestrutura existente dos frameworks ou containers, através de interceptors ou filters.  Considere utilizar estas funcionalidades sempre que possível.  Você pode acabar descobrindo que jamais vai precisar usar frameworks de aspectos.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/2251/532456/reaop
</guid>
				<link>http://www.guj.com.br/prepost/2251/532456/reaop
</link>
				<pubDate><![CDATA[Sun, 3 Aug 2008 21:40:36]]> GMT</pubDate>
				<author><![CDATA[ domingos.neto]]></author>
			</item>
			<item>
				<title>Re:AOP?</title>
				<description><![CDATA[ [quote=domingos.neto]Na maioria das vezes é possível implementar 'aspectos' usando a infraestrutura existente dos frameworks ou containers, através de interceptors ou filters.  Considere utilizar estas funcionalidades sempre que possível.  Você pode acabar descobrindo que jamais vai precisar usar frameworks de aspectos.[/quote]<br /> <br /> Interceptor e Filters cobrem apenas uma perna da AOP, que é definição de pointcuts e joinpoints.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/2251/532458/reaop
</guid>
				<link>http://www.guj.com.br/prepost/2251/532458/reaop
</link>
				<pubDate><![CDATA[Sun, 3 Aug 2008 21:44:01]]> GMT</pubDate>
				<author><![CDATA[ Alessandro Lazarotti]]></author>
			</item>
	</channel>
</rss>
