<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-16207305</id><updated>2011-11-02T20:40:16.484-02:00</updated><title type='text'>MacJava - Think different, think Java.</title><subtitle type='html'>Neste blog serão inseridas opiniões acerca da tecnologia Java, desenvolvimento de sistemas e Java no MAC OS X, que na minha opinião é o melhor ambiente para desenvolvimento com Java. Equestões referente a minha participação no Expert Group da JSR-255 (JMX Specification 2.0)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://macjava.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://macjava.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Carlos Santiago</name><uri>http://www.blogger.com/profile/04196764729776585955</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-D1kx4TSNJfQ/TrHGx7a4KZI/AAAAAAAAAww/GNPRBtG7glI/s220/Foto_Ateneo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-16207305.post-115669238324106451</id><published>2006-08-27T12:18:00.000-03:00</published><updated>2006-08-27T12:26:23.833-03:00</updated><title type='text'>Gerencia de Testes</title><content type='html'>Tenho tido algumas discussões com alguns especialistas acerca de testes de aplicações.&lt;br /&gt;O que tenho notado é que a maioria tem a sua própria concepção de testes de um sistema.&lt;br /&gt;As pessoas sabem utilizar o JUnit, por exemplo, mas geralmente não saber o que testar e nem o que testar.&lt;br /&gt;Num dos fóruns de discussões que tenho participado alguém me recomendou dar uma olhada do site da Borland (http://www.borland.com/br/products/silk/test_management.html) e acebei descobrindo algumas coisas interessantes.&lt;br /&gt;As questões que relaciono a baixo foram tiradas do referido site.&lt;br /&gt;&lt;br /&gt;What is the requirements test coverage for an application?&lt;br /&gt;Have all high-priority requirements been met?&lt;br /&gt;What are the optimal schedule, priorities and resource allocation for each test?&lt;br /&gt;What progress is being made against the testing strategy?&lt;br /&gt;What are the test results for a specific build?&lt;br /&gt;Where are the defects? What are the necessary steps to resolve them?&lt;br /&gt;What is the status of each defect? Is an open issue holding up the release?&lt;br /&gt;Is the application ready for deployment?&lt;br /&gt;Are certain features likely to compromise the quality of the overall release?&lt;br /&gt;What are the quality trends for an application?&lt;br /&gt;&lt;br /&gt;Alguém se habilita a comentar?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16207305-115669238324106451?l=macjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macjava.blogspot.com/feeds/115669238324106451/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16207305&amp;postID=115669238324106451' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/115669238324106451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/115669238324106451'/><link rel='alternate' type='text/html' href='http://macjava.blogspot.com/2006/08/gerencia-de-testes.html' title='Gerencia de Testes'/><author><name>Carlos Santiago</name><uri>http://www.blogger.com/profile/04196764729776585955</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-D1kx4TSNJfQ/TrHGx7a4KZI/AAAAAAAAAww/GNPRBtG7glI/s220/Foto_Ateneo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16207305.post-115668949308089398</id><published>2006-08-27T11:19:00.000-03:00</published><updated>2006-08-27T11:38:13.446-03:00</updated><title type='text'>Ja tem novidades para o Java 7 - Dolphin</title><content type='html'>Ainda tem gente que nem usou todas as novidades do Java 5 e já estamos esperando pelo Mustang - eu sou um deles ;-) . &lt;br /&gt;O Java 5 é o que mais mudanças trouxe para od desenvolvedores Java e a maioria dessas mudanças foram muito bem aceitas. &lt;br /&gt;O Mustang chega com a expectativa de ser extremanente performático, e isso eu já comprovei. O JIT do Mustang chega a ser até 10x mais perfomático do que o Java 5.&lt;br /&gt;Nem saiu o Java 6 e já tem novidade para o &lt;a href="https://jdk7.dev.java.net/"&gt;Java 7&lt;/a&gt;. Uma delas é a evolução do JMX. A especificação virá com algumas novidades e permitirá monitoramento remoto de forma mais eficaz. Mas a novidade mesmo é a proposta de Gilad Bracha, Neal Gafter, James Gosling e Peter von der Ahé para o &lt;a href="https://jdk7.dev.java.net/"&gt;Java 7&lt;/a&gt;. A proposta (vc pode ver o pdf &lt;a href="http://blogs.sun.com/ahe/resource/closures.pdf"&gt;aqui&lt;/a&gt;) define métodos locais e o outro o chamado "closures" (não sei bem ainda como traduzir o termo).&lt;br /&gt;Eu curti a parada dos métodos locais, vejam um exemplo:&lt;br /&gt;&lt;br /&gt;public static void main(String[] args) {&lt;br /&gt;    int soma2(int x) { return x+2; }&lt;br /&gt;    int(int) soma2b = soma2;&lt;br /&gt;    System.out.println(soma2b(2));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Já os "closures" é assim:&lt;br /&gt;&lt;br /&gt;int(int) soma2b = (int x) {return x+2; };&lt;br /&gt;&lt;br /&gt;Agora é só esperar se isso vai vingar mesmo ou não no &lt;a href="https://jdk7.dev.java.net/"&gt;Java 7&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16207305-115668949308089398?l=macjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macjava.blogspot.com/feeds/115668949308089398/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16207305&amp;postID=115668949308089398' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/115668949308089398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/115668949308089398'/><link rel='alternate' type='text/html' href='http://macjava.blogspot.com/2006/08/ja-tem-novidades-para-o-java-7-dolphin.html' title='Ja tem novidades para o Java 7 - Dolphin'/><author><name>Carlos Santiago</name><uri>http://www.blogger.com/profile/04196764729776585955</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-D1kx4TSNJfQ/TrHGx7a4KZI/AAAAAAAAAww/GNPRBtG7glI/s220/Foto_Ateneo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16207305.post-115668802214368214</id><published>2006-08-27T10:47:00.001-03:00</published><updated>2006-08-27T11:18:06.593-03:00</updated><title type='text'>Qual o custo de monitorar uma aplicação com jconsole</title><content type='html'>Bom, como estou participando das discussões acerca do JMX estou publicando aqui um artigo(de livre tradução) do &lt;a href="http://weblogs.java.net/blog/emcmanus/"&gt;Eamonn McManus&lt;/a&gt; (líder do grupo de discussão do JMX 2.0). Segue o artigo:&lt;br /&gt;&lt;br /&gt;Qual o custo de monitorar uma aplicação com jconsole ?&lt;br /&gt;&lt;br /&gt;Recentemente, muitas pessoas tem me perguntado qual o custo de monitorar uma aplicação com JMX. &lt;br /&gt;Se eu rodo a aplicação com –Dcom.sun.management.jmxremote e conecto o jconsole, quanto isso afetará a performance da minha aplicação ? &lt;br /&gt;Aqui estão alguns resultados baseados em experimentos não muito rigorosos.&lt;br /&gt;Uma resposta rápida seria: Rodando com –Dcom.sun.management.jmxremote não tem impacto significante. Conectando o jconsole há um impacto de 3 a 4%.&lt;br /&gt;A resposta a esta questão depende muito da natureza da aplicação e o que ela está fazendo na máquina onde está rodando.&lt;br /&gt;Minhas medidas foram feitas brincando com a constante e (neperiano) usando BigInteger. Não tive a intenção de ilustrar o uso apropriado de técnicas matemáticas. Eu quis um caminho simples para criar uma aplicação que fizesse muita computação e alocasse muitos objetos com curto tempo de vida. Então, minhas medidas são interessantes para esta aplicação e, provavelmente, totalmente irrelevantes para outras.&lt;br /&gt;A seguir o método que consome mais tempo na aplicação:&lt;br /&gt;&lt;br /&gt;    private static void computeE(int digits) {&lt;br /&gt;        BigInteger one = BigInteger.TEN.pow(digits);&lt;br /&gt;        BigInteger e = BigInteger.ZERO;&lt;br /&gt;        BigInteger invfact = one;&lt;br /&gt;        BigInteger n = BigInteger.ONE;&lt;br /&gt;        while (invfact.compareTo(BigInteger.ZERO) &gt; 0) {&lt;br /&gt;            e = e.add(invfact);&lt;br /&gt;            invfact = invfact.divide(n);&lt;br /&gt;            n = n.add(BigInteger.ONE);&lt;br /&gt;        }&lt;br /&gt;        System.out.println(e);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt; Note que os dígitos não são precisos devido ao truncamento dos resultados da divisão.&lt;br /&gt;Eu rodei este método com o parâmetro digits igual a 30000 numa máquina SPARC antiga. M eloguei nesta máquina numa sessão X-Windows, logo houve uma atividade de background. Eu rodei cada medida duas ou três vezes para cada configuração e peguei o menor tempo. (Eu avisei que os teste não foram rigorosos. De que condições de teste e padrões de desvio estamos falando ?)&lt;br /&gt;Criei uma thread por CPU para fazer com que a máquina fosse usada no limite. Se não nós poderíamos ter um overhead zero para permitindo monitoramento porque ele poderia estar usando uma CPU não ativa.&lt;br /&gt;O tempo de startup é ligeiramente grande quando se permite o monitoramento porque é necessário algum trabalho extra como criar um conector RMI. Eu supus, a título de interesse, que isto é um custo enquanto a aplicação está rodando. Então eu medi o tempo entre a criação das threads computeE e sua finalização.&lt;br /&gt;Eu usei duas plataformas Java para medidas: JDK 1.5.0_07 da Sun e o Mustang 1.6.0-rc-b92. O tempo de computação foi 37% melhor no Mustang, provavelmente devido ao compilador JIT e/ou gerenciamento de memória. O tempo é melhor ainda se você roda com a opção –server. Mas, o que estamos interessados é a relativa diferença entre monitorar e não monitorar a aplicação.&lt;br /&gt;A primeira medição da aplicação foi feita sem nenhum parâmetro de especial de linha de comando. Então, o monitoramento não foi permitido. Esta é a referência para outras medidas.&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Tiger&lt;/td&gt;&lt;td&gt;Mustang&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;28.3&lt;/td&gt;&lt;td&gt;18.0&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;Então eu rodei a aplicação com –Dcom.sun.management.jmxremote, o qual teve dois efeitos:&lt;br /&gt;&lt;br /&gt;Criou a plataforma MBean Server e a populou com um conjunto de Mbeans contendo instrumentações  de JVM.&lt;br /&gt;Criou e iniciou um conector RMI Server e colocou seu endereço onde o jconsole pudesse encontrá-lo.&lt;br /&gt;Com esta opção nós podemos conectar o jconsole a partir de uma máquina local. Mas eu não conectei o jconsole para fazer as medidas. O efeito sobre a performance foi menor que 1% neste caso,  de fato toda diferença observada foi menor que a margem de erro. Logo não houve diferença significante no tempo de computação. Em outras palavras, sem conectar o jconsole, permitindo o monitoramento, não teria efeito sobre performance da sua aplicação.&lt;br /&gt;Eu obtive o mesmo resultado quando rodei com:&lt;br /&gt;&lt;br /&gt;-Dcom.sun.management.jmxremote.port=9999 &lt;br /&gt;-Dcom.sun.management.jmxremote.authenticate=false &lt;br /&gt;-Dcom.sun.management.remote.ssl=false &lt;br /&gt;permitindo ao jconsole conectar remotamente, mas sem segurança, sem afetar a performance. Note que nós desencorajamos fortemente rodar aplicações desta forma em ambiente de produção.&lt;br /&gt;Rodando com&lt;br /&gt;&lt;br /&gt;-Dcom.sun.management.jmxremote.port=9999 &lt;br /&gt;-Dcom.sun.management.jmxremote.password.file=jmxremote.password&lt;br /&gt;(criando socket SSL seguro)&lt;br /&gt;&lt;br /&gt;o impacto também foi menor do que 1%.&lt;br /&gt;Então eu rodei a opção não-segura novamente, mas desta vez conectando o jconsole do Tiger a partir de uma outra máquina. Eu obtive:&lt;table&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Tiger&lt;/td&gt;&lt;td&gt;Mustang&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;29.85 (+5.5%)&lt;/td&gt;&lt;td&gt;19.1 (+6.1%)&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;Aqui temos um grande impacto. Isso pode ter a ver com o polling de vários Mbeans na JVM que o jconsole usa para mostrar os gráficos dos valores de heap size e o número de threads por tempo. Não há como parar o jconsole, mesmo que você não esteja interessado nestas informações, mas você pode mudar o intervalo de polling. Se você muda o intervalo de 4 segundos (default) para 1000 segundos, então você não terá muito impacto do polling. (Isso implica também no intervalo de amostragem dos gráficos, ou seja, se você quiser ver as informações vai ter que pagar o preço a JVM).&lt;br /&gt;Rodando o jconsole do Tiger com –interval=1000 temos:&lt;table&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Tiger&lt;/td&gt;&lt;td&gt;Mustang&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;29.28 (+3.5%)&lt;/td&gt;&lt;td&gt;18.7 (+3.9%)&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;O jconsole não está no polling, mas ainda temos algum overhead, provavelmente alguma atividade de background do RMI e/ou acréscimo de memória usado pela conexão aberta.&lt;br /&gt;O jconsole do Mustang, que é visualmente mais agradável, possui uma otimização para obter os vários atributos da JVM de forma mais eficiente, logo o impacto do polling é menor. Se você não puder migrar suas aplicações para o Mustang agora, você poderá fazer o download do JDK do Mustang só para rodar o jconsole!&lt;br /&gt;Aqui estão so resultados rodando a aplicação com a opção não-segura e conectando ao jconsole do Mustang a partir de uma outra máquina:&lt;table&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Tiger&lt;/td&gt;&lt;td&gt;Mustang&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;29.6 (+4.5%)&lt;/td&gt;&lt;td&gt;18.8 (+4.4%)&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;Já temos um comportamento melhor do jconsole aqui. Claro, ainda não uasmos o –interval=1000, usando-o:&lt;table&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Tiger&lt;/td&gt;&lt;td&gt;Mustang&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;29.2 (+3.2%)&lt;/td&gt;&lt;td&gt;18.7 (+3.9%)&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;Finalmente eu tentei uma opção mais fraca de segurança(-Dcom.sun.management.jmxremote.ssl=true &lt;br /&gt;-Dcom.sun.management.jmxremote.authenticate=true, que é o default) e não observei qualquer diferença significante. Mesmo com o polling do jconsole com 4 segundos, não foi observado nenhum overhead devido ao SSL.&lt;br /&gt;&lt;br /&gt;Observação&lt;br /&gt;Estes resultados não são conclusivos! Eles meramente são um indicativo de um conjunto de medidas sobre um tipo de aplicação. O impacto poderia ser muito maior se a adição da conexão JMX empurrasse a aplicação num modo diferente de operação. Por exemplo, o uso adicional de memória poderia ser o bastante para mudar o comportamento do gabage collector significativamente e provavelmente negativamente. Mas,você teria que operar bem no limite desta situação, e isso poderia acontecer sem uma conexão JMX se, por exemplo, a aplicação precisasse manipular um pouco mais de objetos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16207305-115668802214368214?l=macjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macjava.blogspot.com/feeds/115668802214368214/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16207305&amp;postID=115668802214368214' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/115668802214368214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/115668802214368214'/><link rel='alternate' type='text/html' href='http://macjava.blogspot.com/2006/08/qual-o-custo-de-monitorar-uma_27.html' title='Qual o custo de monitorar uma aplicação com jconsole'/><author><name>Carlos Santiago</name><uri>http://www.blogger.com/profile/04196764729776585955</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-D1kx4TSNJfQ/TrHGx7a4KZI/AAAAAAAAAww/GNPRBtG7glI/s220/Foto_Ateneo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16207305.post-115668641502924792</id><published>2006-08-27T10:41:00.000-03:00</published><updated>2006-08-27T10:46:55.043-03:00</updated><title type='text'>De volta as atividades</title><content type='html'>Olá a todos que visitam meu blog.&lt;br /&gt;Depois de um bom tempo sem ter tido a oportunidade de atualizar as notícias e idéias postadas aqui, estou de volta para poder trocar idéias com os amigos(as) novamente.&lt;br /&gt;Recentemente fui aceito como um "expert" no grupo que elabora a especificação do JMX 2.0 e admitido no quadro de funcionários da NET TV a Cabo como arquiteto Java EE. &lt;br /&gt;Com base nessas exepriências acumuladas pretendo publicar notícias e informações que possam ajudar a todos que desenvolvem sistemas usando Java como linguagem.&lt;br /&gt;Abraço a todos.&lt;br /&gt;Carlos Santiago&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16207305-115668641502924792?l=macjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macjava.blogspot.com/feeds/115668641502924792/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16207305&amp;postID=115668641502924792' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/115668641502924792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/115668641502924792'/><link rel='alternate' type='text/html' href='http://macjava.blogspot.com/2006/08/de-volta-as-atividades.html' title='De volta as atividades'/><author><name>Carlos Santiago</name><uri>http://www.blogger.com/profile/04196764729776585955</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-D1kx4TSNJfQ/TrHGx7a4KZI/AAAAAAAAAww/GNPRBtG7glI/s220/Foto_Ateneo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16207305.post-112920798528119081</id><published>2005-10-13T09:44:00.000-03:00</published><updated>2005-10-13T09:53:05.286-03:00</updated><title type='text'>Spring e WebWork, juntos</title><content type='html'>O WebWork da Open Synphony padronizou o uso do Spring em sua middle-tier.&lt;br /&gt;Patrick Lightbody, um dos líderes do projeto WebWork, disse:  "as the most complete 'lightweight container' available today, Spring is the de facto standard for the management of the internal architecture of a J2EE application.  We are excited to ship official Spring integration with WebWork 2.2, which is nearing final release.  This integration will make it even easier for WebWork users to use Spring."&lt;br /&gt;Mais detalhes &lt;a href=http://wiki.opensymphony.com/display/WW/Spring&gt;aqui&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16207305-112920798528119081?l=macjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macjava.blogspot.com/feeds/112920798528119081/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16207305&amp;postID=112920798528119081' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/112920798528119081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/112920798528119081'/><link rel='alternate' type='text/html' href='http://macjava.blogspot.com/2005/10/spring-e-webwork-juntos.html' title='&lt;font color=red&gt;Spring e WebWork, juntos&lt;/font&gt;'/><author><name>Carlos Santiago</name><uri>http://www.blogger.com/profile/04196764729776585955</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-D1kx4TSNJfQ/TrHGx7a4KZI/AAAAAAAAAww/GNPRBtG7glI/s220/Foto_Ateneo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16207305.post-112907998195520113</id><published>2005-10-11T21:55:00.000-03:00</published><updated>2005-10-11T22:20:32.570-03:00</updated><title type='text'>Spring e a inicializacao de beans</title><content type='html'>É possivel inicializar um bean com com determinados parâmetros usando o Spring.&lt;br /&gt;O Spring é responsável por criar as instâncias dos beans da nossa aplicação, mas em algumas vezes, antes mesmo da aplicação entrar no ar, temos que garantir que determinadas condições sejam satisfeitas, uma delas é a correta incialização de um bean.&lt;br /&gt;O próprio Spring verifica as dependências para criação de um singleton do seu bean, mas podemos passar parâmetros para este nosso bean no tempo em que o Spring estiver verificando as suas dependências.&lt;br /&gt;Isso pode ser importânte se vc tem que setar determinadas variáveis de seu bean, por exemplo, antes dele ser criado e estar disponibilizado na aplicação.&lt;br /&gt;Este recurso se parece bastante com a idéia de blocos estáticos disponível em java.&lt;br /&gt;Vc pode passar parâmetros de incialização de duas maneiras para o seu bean. &lt;br /&gt;Usando o método init() e a outra é implementando a interface InicializingBean.&lt;br /&gt;Os dois tem basicamente a mesma função. No primeiro vc terá que acrescentar na bean o atributo init-method e indicar o nome do método. No segundo caso vc não precisa fazer isso, pois como vc será obrigado a implementar o método afterPropertiesSet(), o Spring sabe que é este o método que possui as inicializações.&lt;br /&gt;Como era de se esperar é dentro destes métodos que vc irá colocar as incializações necessária ao seu bean.&lt;br /&gt;O cap. 5 do livro Pro Spring de Rob Horrop traz mais detalhes sobre este recurso.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16207305-112907998195520113?l=macjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macjava.blogspot.com/feeds/112907998195520113/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16207305&amp;postID=112907998195520113' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/112907998195520113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/112907998195520113'/><link rel='alternate' type='text/html' href='http://macjava.blogspot.com/2005/10/spring-e-inicializacao-de-beans.html' title='&lt;font color=red&gt;Spring e a inicializacao de beans&lt;/font&gt;'/><author><name>Carlos Santiago</name><uri>http://www.blogger.com/profile/04196764729776585955</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-D1kx4TSNJfQ/TrHGx7a4KZI/AAAAAAAAAww/GNPRBtG7glI/s220/Foto_Ateneo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16207305.post-112894693349687148</id><published>2005-10-10T09:17:00.000-03:00</published><updated>2005-10-10T09:22:13.503-03:00</updated><title type='text'>Spring: A Developer's Notebook</title><content type='html'>O capítulo 1 do livro Spring: A Developer's Notebook está disponível para &lt;a href=http://www.oreilly.com/catalog/springadn/excerpt/ch01.pdf&gt;download&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16207305-112894693349687148?l=macjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macjava.blogspot.com/feeds/112894693349687148/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16207305&amp;postID=112894693349687148' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/112894693349687148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/112894693349687148'/><link rel='alternate' type='text/html' href='http://macjava.blogspot.com/2005/10/spring-developers-notebook.html' title='&lt;font color=red&gt;Spring: A Developer&apos;s Notebook&lt;/font&gt;'/><author><name>Carlos Santiago</name><uri>http://www.blogger.com/profile/04196764729776585955</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-D1kx4TSNJfQ/TrHGx7a4KZI/AAAAAAAAAww/GNPRBtG7glI/s220/Foto_Ateneo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16207305.post-112852542362533093</id><published>2005-10-05T11:46:00.000-03:00</published><updated>2005-10-12T10:03:52.333-03:00</updated><title type='text'>DisplayTag</title><content type='html'>No projeto LinkPeças que estou desenvolvendo para o Grupo Rodobens apareceu a necessidade de fazer paginação de jsp. &lt;br /&gt;Todos nós sabemos o quanto isso é chato, sem contar a montoeira de código que tem que ser inserido na camada de apresentação e todas aquelas idas e vindas ao banco pra buscar os registros.&lt;br /&gt;Conversando com meu amigo Gilmar, da Kaffa, ele me indicou o uso da &lt;a href=http://displaytag.sourceforge.net/&gt; DisplayTag&lt;/a&gt;.&lt;br /&gt;Achei fantástico o fato de poder disponibilizar os dados de uma collection sem precisar iterar por ela. &lt;br /&gt;Outro grande lance dessa API é que ela faz a paginação dos registros de forma muito simples.&lt;br /&gt;Formatar a apresentação dos registros também é possível, por exemplo, inserir máscaras a um dado campo, formatar datas, criar links dinâmicamente.&lt;br /&gt;Tudo isso é feito através do padrão Decorator. Você escreve uma classe, isso mesmo uma classe,  que será a responsável por estas formatações. Não rola javascript para ficar formatando os dados. Eu achei isso MARAVILHOSO !&lt;br /&gt;DisplayTag, me permitiu renderizar uma página que apresenta registros paginados de 10 em 10, onde cada linha da tabela tem uma caracterísitca específica, por exemplo, um link apontanto pra um controlador específico, dependendo do status do registro. Além disso o registro recebe um flag (uma imagem) que indica se o prazo de verificação do pedido está vencido ou não.&lt;br /&gt;A colletion passa pelo Decorator antes de ser renderizada. No Decorator, então, faço as verificações e formatações necessárias a cada registro na colletion.&lt;br /&gt;A única dificuldade que encontrei com relação a esta API é a documentação. Apesar de ter fartos exemplos de utilização da API e um &lt;a href=http://displaytag.sourceforge.net/displaytag.pdf&gt;tutorial&lt;/a&gt; ainda é necessário dedicar algum tempo para entender como funciona os meandros da API, ou seja, é indispensável as consultas ao JavaDoc da API.&lt;br /&gt;Mas vale muito a pena conhecer e utilizar esta API.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16207305-112852542362533093?l=macjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macjava.blogspot.com/feeds/112852542362533093/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16207305&amp;postID=112852542362533093' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/112852542362533093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/112852542362533093'/><link rel='alternate' type='text/html' href='http://macjava.blogspot.com/2005/10/displaytag.html' title='&lt;font color=red&gt;DisplayTag&lt;/font&gt;'/><author><name>Carlos Santiago</name><uri>http://www.blogger.com/profile/04196764729776585955</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-D1kx4TSNJfQ/TrHGx7a4KZI/AAAAAAAAAww/GNPRBtG7glI/s220/Foto_Ateneo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16207305.post-112697828750270396</id><published>2005-09-17T14:21:00.000-03:00</published><updated>2005-10-12T10:01:30.133-03:00</updated><title type='text'>Quantos são os frameworks de MVC em Java ?</title><content type='html'>Essa é uma questão que me despertou interesse depois que eu li o capítulo 10 do livro Spring in Action (ver minha resenha neste blog).&lt;br /&gt;Lendo como era possível integrar o IoC do Spring às Actions do Struts, o autor, em determinado momento, indica o site &lt;a href="http://www.manageability.org/blog/stuff/how-many-java-web-frameworks/view"&gt;manageability&lt;/a&gt; onde são listados mais de 50 frameworks de MVC escritos em Java.&lt;br /&gt;Oras, pra mim isso foi uma surpresa, pois,  eu já havia ouvido falar em, no máximo,  meia dúzia deles - Struts, Webwork, Spring MVC, Tapestry, MentaWai, Cocoon.&lt;br /&gt;Aí me lembrei de uma enquete feita com 1537 (até o momento em que vi a enquete) no PortalJava com  o título&lt;a href="http://www.portaljava.com/home/modules.php?name=Surveys&amp;op=results&amp;pollID=54"&gt; "Qual o seu framework de MVC ? "&lt;/a&gt;. Como se poderá ver nessa enquete a maioria (43,07%) sequer sabe o que é um framework de MVC.&lt;br /&gt;O segundo maior índice é do Struts. Mas, acho que mais por "ouvir falar" do que por uso efetivo em aplicações.&lt;br /&gt;Então fica a questão porque tantos frameworks de MVC ?&lt;br /&gt;Meu amigo Sérgio do &lt;a href="http://mentawai.lohis.com.br/"&gt;MentaWai&lt;/a&gt; , argumenta que o uso ostencivo de XML para configuração desses framewoks, como Strus, Spring MVC, Tapestry etc, são um complicometro a mais. Talvez ele esteja certo. O MentaWai na sua versão 1.1 já tem até suporte a IoC, o que, para mim, é fundamental em um framework, com o mínimo de XML.&lt;br /&gt;Será que fale a pena o esforço de desenvolver um framework só pelo fato de desenvolver um framework ?&lt;br /&gt;Reinventar a roda é inútil, mas seria possível aperfeiçoá-la ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16207305-112697828750270396?l=macjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macjava.blogspot.com/feeds/112697828750270396/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16207305&amp;postID=112697828750270396' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/112697828750270396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/112697828750270396'/><link rel='alternate' type='text/html' href='http://macjava.blogspot.com/2005/09/quantos-so-os-frameworks-de-mvc-em.html' title='&lt;font color=red&gt;Quantos são os frameworks de MVC em Java ?&lt;/font&gt;'/><author><name>Carlos Santiago</name><uri>http://www.blogger.com/profile/04196764729776585955</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-D1kx4TSNJfQ/TrHGx7a4KZI/AAAAAAAAAww/GNPRBtG7glI/s220/Foto_Ateneo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16207305.post-112661666175555736</id><published>2005-09-13T09:48:00.000-03:00</published><updated>2005-09-13T10:05:26.550-03:00</updated><title type='text'>Do PowerPC ao Intel</title><content type='html'>No último evento da Apple em São francisco Stve Jobs fez um key note que chocou vários usuários de MAC.&lt;br /&gt;Neste evento foi anunciado que a Apple irá abandonar seus processadores RISC em prol dos processadores CISC da Intel.&lt;br /&gt;Eu mesmo, numa primeira instância fiquei idignado com isso, pois sou um fã obstinado de produtos Apple e sou um feliz usário de um iBook G4 de 1.2Ghz com 768Mb de RAM e desenvolve em Java muito bem com ele, obrigado.&lt;br /&gt;Mas depois de assistir ao key note de Stve Jobs as coisas fizeram mais sentido.&lt;br /&gt;É clara a estratégia da Apple, a de finalmente entrar no mercado de PC CISC com grande poder de fogo.&lt;br /&gt;O que isso tem a ver com Java ? Oras, tudo, pois como Java é uma linguagem multiplataforma os aplicativos desenvolvidos nessa linguagem não sofrerão nenhuma altereção com a nova plataforma da Apple.&lt;br /&gt;Outro grande lance de Jobs é que o usário agora poderá escolher entre Windows, Linux e MAC OS pra instalar em sua máquina !!!&lt;br /&gt;Isso irá trazer fortes dores de cabeça para Microsoft, assim espero.&lt;br /&gt;O Aqua, a intereface gráfica do MAC OS, é muito mais intuitira do que o Windows e muito mais fácil de configurar, sem falar que o sistema por traz disso tudo é um UNIX, para felicidades daqueles que sempre quiseram usar o LINUX, mas não o fazem pelas dificuldades de configuração que este ainda apresneta para os simples mortais usuários de PC.&lt;br /&gt;A previsão é de que os primeiros MAC com processador Intel saim em junho de 2006 e a migração completa seja feita até junho de 2007.&lt;br /&gt;Para os desenvolvedores a Apple já está diponibilizando uma série de soluções que permitiram "converter" suas aplicação para nova plataforma, &lt;a href="http://developer.apple.com/transition/index.html"&gt;veja aqui o site&lt;/a&gt;. no caso do Java, como já dissemos, isso é totalmente transparente ;-)&lt;br /&gt;De resto eu recomento fortemente a quem se interessar pelo assunto a aassitir o key note do Steve Jobs, você poderá baixá-lo em &lt;a href="http://www.apple.com/quicktime/qtv/wwdc05/"&gt;http://www.apple.com/quicktime/qtv/wwdc05/&lt;/a&gt;.&lt;br /&gt;Agora só nos resta aguardar e ver no que via dar esta estória e torcer para que, mais uma vez, a Apple esteja no caminho certo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16207305-112661666175555736?l=macjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macjava.blogspot.com/feeds/112661666175555736/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16207305&amp;postID=112661666175555736' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/112661666175555736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/112661666175555736'/><link rel='alternate' type='text/html' href='http://macjava.blogspot.com/2005/09/do-powerpc-ao-intel.html' title='&lt;font color=red&gt;Do PowerPC ao Intel&lt;/font&gt;'/><author><name>Carlos Santiago</name><uri>http://www.blogger.com/profile/04196764729776585955</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-D1kx4TSNJfQ/TrHGx7a4KZI/AAAAAAAAAww/GNPRBtG7glI/s220/Foto_Ateneo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16207305.post-112656904176049323</id><published>2005-09-12T20:41:00.000-03:00</published><updated>2005-09-12T20:50:41.766-03:00</updated><title type='text'>Spring in Action</title><content type='html'>O uso de frameworks no desenvolvimento de aplicações corporativas é imprescindível. Hoje não se pode falar de aplicações corporativas sérias sem associá-las a algum framework.&lt;br /&gt; O desenvolvedor deve estar sempre atento às novas ondas tecnologicas que surgem a todos os dias, o que às vezes, é impossível!&lt;br /&gt; Existem vários frameworks para diversas finalidades dentro de um projeto. Um desenvolvedor experiente tem que conhecer pelos menos uns 3 frameworks para desenvolver aplicaões corporativas para web.&lt;br /&gt; Aí fica a questão: mais um framework pra que ? Os que existem já não dão conta do recado, já não estão super experimentados e aprovados pela comunidade de desenvolvedores por toda parte ? Então porque ter que aprender mais um framework ?&lt;br /&gt; O Spring não é mais um framework. &lt;br /&gt; O &lt;a href="http://www.springframework.org/"&gt;Spring&lt;/a&gt; proporciona ao desenvolvedor implementar suas aplicações de forma clara e robusta. Para isso um dos fortes conceitos empregados por este framework é o de IoC – Invertion of Control (ou como prefere Martin Fowler: dependency injection).&lt;br /&gt; Para que um framework tenha uma boa aceitação na comunidade de desenvolvedores não basta que ele seja bom, ele tem que ser bem documentado. Tem que existir várias fontes de referência acerca de seu uso, bons exemplos, cases, etc. Tudo ao fácil e ao  alcance daqueles que estão afim  de aprender seus recursos.&lt;br /&gt; Pois bem, no caso do Spring isso não é tarefa tão simples assim. Primeiro porque não existe, ainda uma ampla gama de referências sobre o Spring em língua portuguesa. Segundo que é difícil de enontrar cases de sucesso que usaram amplamente este framework, e isso se deve porque o Spring é um framework relativamente novo no mercado.&lt;br /&gt; Procuraremos aqui expor as nossas impressões acerca de uma das referências bibliográficas sobre o Spring: Spring in Action.&lt;br /&gt; O livro é dividido em 3 partes com 11 capítulos ao todo cobrindo a versão 1.0.x do Spring.&lt;br /&gt; A primeira parte, Spring Essencials, que procura cobrir os aspectos básicos do framework. O fundamental para se aprender a usar o Spring é obter um sólido conhecimento acerca de IoC, e isso o primeiro capítulo do livro trata bem.&lt;br /&gt; Um dos capítulos de destaque desta obra é o que trata de AOP. O Spring provê um amplo suporte a AOP e no capítulo 3 o leitor encontrará uma boa introdução a este tema.&lt;br /&gt; Spring in the Business Layer, que enfoca como o Spring pode trabalhar com banco de dados (JDBC,  Hibernate, JDO, JTA etc), gerenciando transações, acessando métodos remotamente e acessando servicos. Nesta parte vale muito a pena a leitura do capítulo 5, sobre gerenciamento de transações, pois o desenvolvedor ficará surpreso de como o Spring pode proporcionar um controle de transação sem ser intrusivo no código da aplicação, tornando-a assim mais desacoplada.&lt;br /&gt; A terceira parte do livro é uma das que mais desperta interesse por parte dos desenvolvedores, a saber: Spring in the Web Tier.&lt;br /&gt; Hoje desenvolvero pra web com Java é quase que uma regra, claro que é crescente o desenvolvimento para desktop com Java, mas o desenvolvimento para web é predominante.&lt;br /&gt; Nesta terceira parte os capítulos 8 e 11 são destaques, pena que não são tão elucidativos assim.&lt;br /&gt; Aqui cabem as críticas. &lt;br /&gt; Os exemplos do livro não são assim tão claros, principalmente na terceira parte do livro onde esperaríamos ter uma grande gama de exemplos de códigos etc. Mas não é o que encontramos.  Os exemplos de código nesta terceira parte são fracos e não exploram todas as possibilidades do framework. Lendo, acabei tendo a impressão que os autores já estavam meio que de saco cheio de escrever e vão atropelando tudo.&lt;br /&gt; O resultado disso é que o leitor tem que dedicar um bom tempo para poder entender o que está rolando.&lt;br /&gt; Seja como for para um primeira aproximação sobre o Spring o livro tem lá sua serventia, não resolve tudo, não mostra todos os secredos (para isso o leitor/aprendiz terá que participar dos fóruns), mas ajuda a entender qual a proposta do framework e ajuda a decidir se ele serve ou não para o seu projeto de desenvolvimento.&lt;br /&gt; Por falar em fóruns, o &lt;a href="http://forum.springframework.org/"&gt; fórum do Spring&lt;/a&gt; é muito bom. Lá o desenvolvedor porderá trocar idéias e até  ter suas dúvidas respondidas pelos próprios desenvolvedores do Spring.&lt;br /&gt; Vamos aguardar para que surja uma tradução desta obra, como aconteceu com o caso do Struts em Ação e o Hibernate em Ação, ampliando assim as chances deste framework ser um pouco mais conhecido por aqui.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16207305-112656904176049323?l=macjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macjava.blogspot.com/feeds/112656904176049323/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16207305&amp;postID=112656904176049323' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/112656904176049323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/112656904176049323'/><link rel='alternate' type='text/html' href='http://macjava.blogspot.com/2005/09/spring-in-action.html' title='&lt;font color=red&gt;Spring in Action&lt;/font&gt;'/><author><name>Carlos Santiago</name><uri>http://www.blogger.com/profile/04196764729776585955</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-D1kx4TSNJfQ/TrHGx7a4KZI/AAAAAAAAAww/GNPRBtG7glI/s220/Foto_Ateneo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16207305.post-112575324946520855</id><published>2005-09-03T10:14:00.000-03:00</published><updated>2005-09-03T10:14:09.466-03:00</updated><title type='text'>foto</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt; &lt;a href="http://www.flickr.com/photos/72619618@N00/39796084/" title="photo sharing"&gt;&lt;img src="http://static.flickr.com/30/39796084_250e988409_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;  &lt;a href="http://www.flickr.com/photos/72619618@N00/39796084/"&gt;foto&lt;/a&gt;  &lt;br /&gt;  Originally uploaded by &lt;a href="http://www.flickr.com/people/72619618@N00/"&gt;java_carlos&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16207305-112575324946520855?l=macjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macjava.blogspot.com/feeds/112575324946520855/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16207305&amp;postID=112575324946520855' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/112575324946520855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/112575324946520855'/><link rel='alternate' type='text/html' href='http://macjava.blogspot.com/2005/09/foto.html' title='foto'/><author><name>Carlos Santiago</name><uri>http://www.blogger.com/profile/04196764729776585955</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-D1kx4TSNJfQ/TrHGx7a4KZI/AAAAAAAAAww/GNPRBtG7glI/s220/Foto_Ateneo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16207305.post-112568099025725588</id><published>2005-09-02T12:39:00.000-03:00</published><updated>2005-09-02T14:12:49.893-03:00</updated><title type='text'>Desenvolvimento com Spring</title><content type='html'>Tenho usado o &lt;a href=http://www.springframework.org/&gt;Spring&lt;/a&gt; no desenvolvimento de uma aplicação pequena para o Grupo Rodobens, o LinkPeças.&lt;br /&gt;&lt;br /&gt;Decidi usar este framework basicamente pelo fato de usar o conteito de IoC (ou &lt;a href=http://www.martinfowler.com/articles/injection.html&gt;dependency injection&lt;/a&gt; como prefere Martin Fowler), mas decobri que ele poderia fazer muito mais por mim nesse projeto.&lt;br /&gt;&lt;br /&gt;Estou usando Spring de cabo a rabo nesse projeto e tenho gostado muito dos resultados que tenho obtido. Fácil manutenção, escalabilidade, clareza de código, são alguns dos benefícios que o Spring tem me proporcionado.&lt;br /&gt;&lt;br /&gt;Ao invés do Struts tenho usando o SpringMVC e o achei bem mais fácil de se usar do que o próprio Struts. Ainda neste projeto tenho utilizado o &lt;a href=http://hotwork.sourceforge.net/hotwork/manual/displaytag/displaytag-user-guide.html#Table_-_http:__displaytag_sourceforge_net_tagreference_html#table&gt;DisplayTag&lt;/a&gt; para fazer a paginação de List e agora estou implementando &lt;a href=http://struts-menu.sourceforge.net/&gt;Struts-menu&lt;/a&gt; para criar dinamicamente menus.&lt;br /&gt;&lt;br /&gt;O Spring é tudo de bom para o desenvolvimento de aplicações de forma clara , orientada a objetos, e de fácil manutenabilidade.&lt;br /&gt;&lt;br /&gt;O que o meu colega Sérgio, um dos criadores do &lt;a href=http://mentawai.lohis.com.br/&gt;Mentawai&lt;/a&gt;, reclama, e com razão, é a quantidade de arquivos XML  para configurar o Spring.&lt;br /&gt;&lt;br /&gt;Ele tem uma certa razão nesse quesito, mas como sou um fã de XML, não me importo em ter que escrever definiçòes nestes arquivos, eu até acredito que isto me ajude a entender melhor ofuncionamento do framework, e quem sabe, até me dar condições de buscar aspectos melhores de desenvolvimento, como pode ser o caso do próprio Mentawai.&lt;br /&gt;&lt;br /&gt;Mas por enquanto tenho me saido bem com o uso do Spring, mas pretendo fazer alguns ensaios com o Mentawai. IoC pra mim hoje é uma das principais características que um framework deve proporcionar, e me parece que o Mentawai vai bem nessa direção.&lt;br /&gt;&lt;br /&gt;Vamos aguardar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16207305-112568099025725588?l=macjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://macjava.blogspot.com/feeds/112568099025725588/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16207305&amp;postID=112568099025725588' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/112568099025725588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16207305/posts/default/112568099025725588'/><link rel='alternate' type='text/html' href='http://macjava.blogspot.com/2005/09/desenvolvimento-com-spring.html' title='&lt;font color=red&gt;Desenvolvimento com Spring&lt;/font&gt;'/><author><name>Carlos Santiago</name><uri>http://www.blogger.com/profile/04196764729776585955</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-D1kx4TSNJfQ/TrHGx7a4KZI/AAAAAAAAAww/GNPRBtG7glI/s220/Foto_Ateneo.jpg'/></author><thr:total>2</thr:total></entry></feed>
