<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;D0QCQXg-eyp7ImA9WhRQFEk.&quot;"><id>tag:blogger.com,1999:blog-5995719507173212632</id><updated>2011-12-09T13:42:40.653-02:00</updated><category term="Swing" /><category term="Netbeans" /><category term="Java 7" /><category term="NOSQL" /><category term="GWT" /><category term="Desktop" /><category term="Dicas" /><category term="Java" /><category term="Java Web" /><category term="Web" /><category term="Java 6" /><category term="Cassandra" /><title>Desenvolvimento em Java com SEO, GWT, JSF ou NOSQL Databases é no Java Com Farinha!</title><subtitle type="html">Um Blog que fala sobre o desenvolvimento de aplicações para a plataforma Java. Gostamos de falar sobre Java com SEO, GWT (Google Web Toolkit), JSF (Java Server Faces) e NOSQL Databases.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://javacomfarinha.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://javacomfarinha.blogspot.com/" /><author><name>Emmanuel Silva</name><uri>http://www.blogger.com/profile/09496644325586846465</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_pccZXAPS6OU/TDkPD8DIL6I/AAAAAAAAADc/t_eJFoYnWM8/S220/S2020919.JPG" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha" /><feedburner:info uri="desenvolvimentoemjavacomseogwtjsfounosqldatabasesnojavacomfarinha" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;C0AARXY-eCp7ImA9WhZSF0Q.&quot;"><id>tag:blogger.com,1999:blog-5995719507173212632.post-7645928617762758743</id><published>2011-04-02T21:49:00.000-03:00</published><updated>2011-04-02T21:49:04.850-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-02T21:49:04.850-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Cassandra" /><category scheme="http://www.blogger.com/atom/ns#" term="NOSQL" /><title>Introdução a Bancos NOSQL e Apache Cassandra</title><content type="html">Olá Pessoal;&lt;br /&gt;
&lt;br /&gt;
Hoje, escrevo este post para falar de uma tecnologia um tanto quanto polêmica ainda, porém que vem tendo crescimento na sua utilização em aplicativos WEB, principalmente com alta escabilidade, estou falando de NoSQL Databases.&lt;br /&gt;
&lt;br /&gt;
NoSQL é uma alternativa aos bancos RDBMS para tentar resolver problemas de escabilidade (para RDBMS pode ser caro ou bastante complexo) e desempenho entre outras caracteristicas. A idéia principal é armazenar dados de uma forma denormalizada, utilizando um padrão chamado key-value, ou seja um valor está sempre associado a uma chave.&lt;br /&gt;
Um outro conceito é que cada linha armazenada pode possuir seu&amp;nbsp;próprio&amp;nbsp;esquema, isso facilita a replicação dos dados em vários outros servidores NoSQL.&lt;br /&gt;
&lt;br /&gt;
Empresas como: Facebook, Google, Twitter, Digg, Yahoo utilizam em suas aplicações e são entusiastas de soluções NoSQL.&lt;br /&gt;
&lt;br /&gt;
Eu quero falar especificamente sobre um banco de dados NoSQL que vem crescendo bastante, é o &lt;a href="http://cassandra.apache.org/"&gt;Apache Cassandra&lt;/a&gt;&amp;nbsp;que&amp;nbsp;foi desenvolvido primeiramente pelo Facebook que depois entregou o código fonte para a Apache dar continuidade. Escrito em Java e bastante leve, ganhou bastante espaço porque uniu a arquitetura de um banco da Amazon, chamado de Dynamo com o modelo de dados baseado no BigTable do Google e o resultado final ficou bem interessante.&lt;br /&gt;
&lt;br /&gt;
A Estrutura de dados do Apache Cassandra trabalha da seguinte forma:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Keyspaces&lt;/b&gt;: Comparando com um banco RDBMS é como se fosse um schema, ou seja, em um keyspace, guardamos todas a estrutura de ColumnFamily da nossa aplicação.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ColumnFamily&lt;/b&gt;: Comparado com um banco RDBMS, seria como uma tabela, ou seja irá guardar várias linhas de dados. Cada linha irá possuir uma chave, essa chave serve de identificador da linha e poderá ter colunas ou&amp;nbsp;sub-colunas&amp;nbsp;para guardar suas informações.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Column&lt;/b&gt;: Uma coluna é a menor informação possível, é um valor baseado em uma chave. Pode estar associado a um ColumnFamily ou um SuperColumn.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SuperColumn&lt;/b&gt;: É um conjunto de colunas, ou seja, para cada linha da ColumnFamily, podemos ter SuperColumns que possuam várias colunas.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Para exemplificar, vou demonstrar a estrutura de uma Livraria usando Apache Cassandra, fica assim:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-geT-jHsr9ak/TZesEbTt9XI/AAAAAAAAAHA/Tmcvsk8STOc/s1600/modelo-de-dados-cassandra.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/-geT-jHsr9ak/TZesEbTt9XI/AAAAAAAAAHA/Tmcvsk8STOc/s640/modelo-de-dados-cassandra.png" width="379" /&gt;&lt;/a&gt;&lt;/div&gt;
Nessa estrutura, temos:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Keyspace Livraria&lt;/b&gt;: que irá guardar as informações sobre livros e autores.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ColumnFamily Autores&lt;/b&gt;: Guarda os dados dos autores, aonde a chave de cada linha é o nome do autor.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Column Email&lt;/b&gt;: Coluna que armazena o email para cada autor.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Column Biografia&lt;/b&gt;: Coluna que armazena a biografia para cada autor.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ColumnFamily Livros&lt;/b&gt;: Guarda os dados dos livros, aonde a chave de cada linha é o nome do livro.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Column ISQN&lt;/b&gt;: Coluna que armazena um código qualquer do livro chamado de ISQN.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Column Autor&lt;/b&gt;: Coluna que identifica o autor do livro.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
E nossa introdução a respeito de bancos NoSQL e Apache Cassandra fica por aqui, o intuito foi dar de fato apenas uma breve introdução, porque existem materiais muito bons na internet falando a respeito disso.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
O motivo dessa introdução é que no proxímo post, irei demonstrar a criação de um CRUD em Java com NoSQL e o banco escolhido foi o Apache Cassandra. No CRUD darei continuidade a está introdução para realizar um cadastro de uma livraria.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Até a proxíma.&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
Fontes:&lt;br /&gt;
&lt;a href="http://pt.wikipedia.org/wiki/Apache_Cassandra"&gt;pt.wikipedia.org/wiki/Apache_Cassandra&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blog.caelum.com.br/bancos-de-dados-nao-relacionais-e-o-movimento-nosql/"&gt;blog.caelum.com.br/bancos-de-dados-nao-relacionais-e-o-movimento-nosql/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://imasters.com.br/artigo/17043/bancodedados/nosql_voce_realmente_sabe_do_que_estamos_falando/"&gt;http://imasters.com.br/artigo/17043/bancodedados/nosql_voce_realmente_sabe_do_que_estamos_falando/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5995719507173212632-7645928617762758743?l=javacomfarinha.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ySYGil4x31xfFACD0BhxAsUYTkc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ySYGil4x31xfFACD0BhxAsUYTkc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ySYGil4x31xfFACD0BhxAsUYTkc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ySYGil4x31xfFACD0BhxAsUYTkc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~4/5J9ty9SwMB0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://javacomfarinha.blogspot.com/feeds/7645928617762758743/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5995719507173212632&amp;postID=7645928617762758743" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/7645928617762758743?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/7645928617762758743?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~3/5J9ty9SwMB0/introducao-bancos-nosql-e-apache.html" title="Introdução a Bancos NOSQL e Apache Cassandra" /><author><name>Emmanuel Silva</name><uri>http://www.blogger.com/profile/09496644325586846465</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_pccZXAPS6OU/TDkPD8DIL6I/AAAAAAAAADc/t_eJFoYnWM8/S220/S2020919.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-geT-jHsr9ak/TZesEbTt9XI/AAAAAAAAAHA/Tmcvsk8STOc/s72-c/modelo-de-dados-cassandra.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://javacomfarinha.blogspot.com/2011/04/introducao-bancos-nosql-e-apache.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkABQH04fyp7ImA9WhZTFU0.&quot;"><id>tag:blogger.com,1999:blog-5995719507173212632.post-1829485503523784862</id><published>2011-03-18T20:40:00.001-03:00</published><updated>2011-03-18T23:12:31.337-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-18T23:12:31.337-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Desktop" /><category scheme="http://www.blogger.com/atom/ns#" term="Swing" /><category scheme="http://www.blogger.com/atom/ns#" term="Java 7" /><title>Novidades do Swing no Java 7</title><content type="html">Olá Pessoal;&lt;br /&gt;
&lt;br /&gt;
Enquanto aguardamos anciosamente a espera da versão final do Java 7 (que está prevista para este ano de 2011), e virá com algumas novidades na linguagem.&lt;br /&gt;
Mas queria falar sobre as funcionalidades que virão para incrementar o desenvolvimento desktop em Java. Por isso vamos dar uma olhada em algumas das novidades do Swing que estarão presentes na nova versão do Java.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;JLayer&lt;/b&gt;: O JLayer iniciou do projeto &lt;a href="https://jxlayer.dev.java.net/"&gt;JXLayer &lt;/a&gt;(mais os dois seguem caminhos independentes), que serve para desenhar camadas sobre os seus componentes visuais. O que eu achei legal é que você pode registrar eventos em que o JLayer esteja interessado e repintar a camada como você bem entender quando o evento for disparado. Um exemplo disso seria você adicionar um desenho na tela toda a vez que o mouse se mova por exemplo. Alguns exemplos visuais do JLayer:&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://download.oracle.com/javase/tutorial/figures/uiswing/misc/Wallpaper.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://download.oracle.com/javase/tutorial/figures/uiswing/misc/Wallpaper.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://download.oracle.com/javase/tutorial/figures/uiswing/misc/TapTapTap.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://download.oracle.com/javase/tutorial/figures/uiswing/misc/TapTapTap.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://download.oracle.com/javase/tutorial/figures/uiswing/misc/Myopia.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://download.oracle.com/javase/tutorial/figures/uiswing/misc/Diva.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://download.oracle.com/javase/tutorial/figures/uiswing/misc/Diva.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Criação de Janelas e desenhos translucidos&lt;/b&gt;: Essa é uma funcionalidade que estará disponivel no Java 7 que é para deixar suas janelas translucidas, ou seja, aquele efeito de transparência, você poderá definir o grau de transparência e também o gradiente que deseja e "tha-ram", veja como sua janela pode ficar:&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://download.oracle.com/javase/tutorial/figures/uiswing/misc/GradientWindow.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://download.oracle.com/javase/tutorial/figures/uiswing/misc/GradientWindow.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://download.oracle.com/javase/tutorial/figures/uiswing/misc/ShapedWindow.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="216" src="http://download.oracle.com/javase/tutorial/figures/uiswing/misc/ShapedWindow.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;The Nimbus Look &amp;amp; Feel&lt;/b&gt;: Outra novidade é que será adicionado mais um Look &amp;amp; Feel, o Nimbus que estará disponivel também no javax.swing a partir da versão 7. Uma tela com esse look &amp;amp; Feel fica assim:&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://download.oracle.com/javase/tutorial/figures/uiswing/lookandfeel/nimbus.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="366" src="http://download.oracle.com/javase/tutorial/figures/uiswing/lookandfeel/nimbus.png" width="400" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Outra novidade anunciada será uma maior facilidade em trabalhar com a mistura de componentes tanto AWT e Swing em uma mesma tela.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Estou aguardando a versão final do Java 7, enquanto isso, "brincamos" com as versões betas.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Fonte do conteudo citado aqui está em: &lt;a href="http://download.java.net/jdk7/docs/technotes/guides/swing/7.0/index.html"&gt;http://download.java.net/jdk7/docs/technotes/guides/swing/7.0/index.html&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Abraços e até a proxíma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5995719507173212632-1829485503523784862?l=javacomfarinha.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0rzA3e2FyrtvaIr9sDWqkOgNwNY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0rzA3e2FyrtvaIr9sDWqkOgNwNY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0rzA3e2FyrtvaIr9sDWqkOgNwNY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0rzA3e2FyrtvaIr9sDWqkOgNwNY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~4/psNqEJPmJqU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://javacomfarinha.blogspot.com/feeds/1829485503523784862/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5995719507173212632&amp;postID=1829485503523784862" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/1829485503523784862?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/1829485503523784862?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~3/psNqEJPmJqU/novidades-do-swing-no-java-7.html" title="Novidades do Swing no Java 7" /><author><name>Emmanuel Silva</name><uri>http://www.blogger.com/profile/09496644325586846465</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_pccZXAPS6OU/TDkPD8DIL6I/AAAAAAAAADc/t_eJFoYnWM8/S220/S2020919.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://javacomfarinha.blogspot.com/2011/03/novidades-do-swing-no-java-7.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8ASX09fCp7ImA9WhZTFU0.&quot;"><id>tag:blogger.com,1999:blog-5995719507173212632.post-7539543272387109489</id><published>2011-03-15T21:21:00.001-03:00</published><updated>2011-03-18T23:14:08.364-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-18T23:14:08.364-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GWT" /><category scheme="http://www.blogger.com/atom/ns#" term="Java Web" /><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><title>Algumas formas de melhorar o tempo de compilação do GWT</title><content type="html">Olá Pessoal;&lt;br /&gt;
&lt;br /&gt;
Nest post, estou aqui para dizer que nem tudo é maravilha ao se utilizar o GWT. Como o GWT compila o código Java, gerando código Javascript otimizado para cada browser, pode ser que algum módulo tenha um tempo de compilação nada performático.&lt;br /&gt;
&lt;br /&gt;
Trabalho em uma aplicação que tem em torno de 300 módulos GWT e alguns demoram quase 10 minutos para serem compilados (Por erros de design patterns) , imagina se quanto tempo demora a compilação do projeto.&lt;br /&gt;
&lt;br /&gt;
Por isso, disponibilizo para vocês esse link em que o autor se preocupa em demonstrar a importância e dicas para melhorar o tempo de compilação do seu módulo.&lt;br /&gt;
&lt;br /&gt;
link:&amp;nbsp;&lt;a href="http://supplychaintechnology.wordpress.com/2010/06/04/gwt_compile_times/"&gt;http://supplychaintechnology.wordpress.com/2010/06/04/gwt_compile_times/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Uma outra dica (que eu acho muito importante) é diminuir os "permutations", ou seja quando o GWT compila um módulo ele compila para cada browser e cada locale, por exemplo, se o seu módulo for compilado para 5 browsers e 10 locales diferentes, irá gerar 50 "permutations" e consequentemente uma demora a mais na compilação.&lt;br /&gt;
&lt;br /&gt;
A dica é definir os browsers que realmente serão utilizados pela aplicação (se for uma aplicação disponivel para web esqueça) e definir o locales de sua aplicação (se sua aplicação é mult-linguagem).&lt;br /&gt;
&lt;br /&gt;
As dicas para diminuir os permutations:&amp;nbsp;&lt;a href="http://bazoud.free.fr/post/2008/07/31/Can-I-speed-up-the-GWT-compiler/"&gt;http://bazoud.free.fr/post/2008/07/31/Can-I-speed-up-the-GWT-compiler/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Fica a Dica&lt;br /&gt;
&lt;br /&gt;
Abraços&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5995719507173212632-7539543272387109489?l=javacomfarinha.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6htkH_Pf_JKkZLy5CC_X-uDi-J4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6htkH_Pf_JKkZLy5CC_X-uDi-J4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6htkH_Pf_JKkZLy5CC_X-uDi-J4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6htkH_Pf_JKkZLy5CC_X-uDi-J4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~4/rVLlvUmk4AE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://javacomfarinha.blogspot.com/feeds/7539543272387109489/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5995719507173212632&amp;postID=7539543272387109489" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/7539543272387109489?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/7539543272387109489?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~3/rVLlvUmk4AE/algumas-formas-de-melhorar-o-tempo-de.html" title="Algumas formas de melhorar o tempo de compilação do GWT" /><author><name>Emmanuel Silva</name><uri>http://www.blogger.com/profile/09496644325586846465</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_pccZXAPS6OU/TDkPD8DIL6I/AAAAAAAAADc/t_eJFoYnWM8/S220/S2020919.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://javacomfarinha.blogspot.com/2011/03/algumas-formas-de-melhorar-o-tempo-de.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8CR345fSp7ImA9WhZTFU0.&quot;"><id>tag:blogger.com,1999:blog-5995719507173212632.post-1694131508414557423</id><published>2011-03-15T20:43:00.001-03:00</published><updated>2011-03-18T23:14:26.025-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-18T23:14:26.025-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Web" /><category scheme="http://www.blogger.com/atom/ns#" term="GWT" /><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Netbeans" /><title>Criando seu primeiro aplicativo com GWT e Netbeans</title><content type="html">Pessoal;&lt;br /&gt;
&lt;br /&gt;
Dando continuidade ao artigo sobre &lt;a href="http://javacomfarinha.blogspot.com/2010/07/introducao-ao-gwt.html"&gt;introdução ao GWT&lt;/a&gt;, e conforme prometido, vou demonstrar como criar um aplicativo GWT usando o Netbeans (No proximo post vou mostrar como criar no Eclipse xD).&lt;br /&gt;
&lt;br /&gt;
Para habilitar o suporte do GWT no netbeans, será necessário a instalação do plugin GWT4NB, que você pode fazer o download a partir do site do projeto: &lt;a href="https://gwt4nb.dev.java.net/"&gt;https://gwt4nb.dev.java.net/&lt;/a&gt;, a partir dai é só instalar o plugin que irá aparecer a opção de utilizar o Google Web Toolkit nos projetos web.&lt;br /&gt;
&lt;br /&gt;
Com o plugin instalado, vamos começar a desenvolver o nosso primeiro aplicativo GWT, o primeiro passo é criar um novo projeto WEB, como mostra na imagem:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/_pccZXAPS6OU/TEOc2F_e4tI/AAAAAAAAAEQ/5tHUDCyK9WQ/s1600/passo-1-criando-web-app-gwt-netbeans.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="271" src="http://4.bp.blogspot.com/_pccZXAPS6OU/TEOc2F_e4tI/AAAAAAAAAEQ/5tHUDCyK9WQ/s400/passo-1-criando-web-app-gwt-netbeans.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
A partir dai, é só configurar o nome do projeto, selecionar qual o servidor será instalado, e na ultima etapa, selecionar o plugin do Google Web Toolkit, como mostra na imagem:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/_pccZXAPS6OU/TEOdWI5Q4FI/AAAAAAAAAEY/TcRRzy7h_XE/s1600/passo-4-usando-gwt-projeto-netbeans.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/_pccZXAPS6OU/TEOdWI5Q4FI/AAAAAAAAAEY/TcRRzy7h_XE/s400/passo-4-usando-gwt-projeto-netbeans.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Nesse passo, nos precisamos informar o diretório de instalação do GWT, se não estiver instalado, você pode fazer o download em &lt;a href="http://code.google.com/intl/pt-BR/webtoolkit/"&gt;http://code.google.com/intl/pt-BR/webtoolkit/&lt;/a&gt; ou clicar em "You can download the GWT SDK here"&amp;nbsp; na tela de configuração.&lt;br /&gt;
&lt;br /&gt;
Também definimos o caminho para nosso primeiro modulo, no caso eu preenchi: com.javacomfarinha.gwt.login.Login (Login será o nome do nosso primeiro modulo GWT).&lt;br /&gt;
&lt;br /&gt;
Pronto, o netbeans irá criar o nosso projeto com a seguinte estrutura:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/_pccZXAPS6OU/TEOeP-U0c5I/AAAAAAAAAEg/cR1ub6JlS5w/s1600/passo-5-estrutura-projeto.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="285" src="http://1.bp.blogspot.com/_pccZXAPS6OU/TEOeP-U0c5I/AAAAAAAAAEg/cR1ub6JlS5w/s400/passo-5-estrutura-projeto.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Com isso, temos criado o nosso primeiro modulo GWT criado pelo Netbeans, agora vou explicar o que são esses arquivos:&lt;br /&gt;
&lt;br /&gt;
Cada modulo GWT, possui essa estrutura, na raiz do pacote do projeto, possui um arquivo gwt.xml com o nome do modulo que e guardam as configurações do modulo, o mais importante para você sobre esse arquivo é que nele nós definimos, quando esse modulo for iniciado, qual tela (que é um EntryPoint no GWT) que será carregada e quais outros modulos criados no seu projeto serão utilizados nesse modulo. Também podemos definir várias outras configurações, mais veremos isto em outros posts.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/_pccZXAPS6OU/TEOgw7SDuHI/AAAAAAAAAEw/O86HTZqCnAQ/s1600/gwt-xml.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="280" src="http://4.bp.blogspot.com/_pccZXAPS6OU/TEOgw7SDuHI/AAAAAAAAAEw/O86HTZqCnAQ/s640/gwt-xml.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&amp;nbsp;Todo modulo GWT também tem essa pacote "client", neste pacote temos todas as classes a respeito da criação das telas/componentes visuais e &lt;b&gt;TODAS&lt;/b&gt; as classes que estiverem nesse pacote serão compilados para um código JavaScript.&lt;br /&gt;
&lt;br /&gt;
A Classe LoginEntryPoint é a classe que foi gerada pelo plugin irá exibir nossos componentes na tela do browser, essa classe implementa a interface do GWT chamada EntryPoint. Uma classe EntryPoint será exibida para o usuário quando o modulo for carregado, pois o modulo irá chamar o metodo onModuleLoad que é definido nessa interface, no exemplo gerado pelo plugin, ficou assim:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/_pccZXAPS6OU/TEOgEBwwWXI/AAAAAAAAAEo/1VwRgu5dDVk/s1600/passo-6-explain-entry-point.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/_pccZXAPS6OU/TEOgEBwwWXI/AAAAAAAAAEo/1VwRgu5dDVk/s640/passo-6-explain-entry-point.jpg" width="598" /&gt;&lt;/a&gt;&lt;/div&gt;
Nesse exemplo, está sendo adicionado uma label e um botão direto a pagina WEB que irá chamar esse modulo GWT.&lt;br /&gt;
&lt;br /&gt;
O Plugin também criou uma pagina HTML (welcomeGWT.xml) que será responsavel por chamar esse modulo GWT, o código HTML fica assim:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/_pccZXAPS6OU/TEOhCZk7zoI/AAAAAAAAAE4/5fxN56K-W5Q/s1600/passo-8-estudo-codigo-fonte-gerado.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="185" src="http://2.bp.blogspot.com/_pccZXAPS6OU/TEOhCZk7zoI/AAAAAAAAAE4/5fxN56K-W5Q/s640/passo-8-estudo-codigo-fonte-gerado.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
Através da Tag Meta (utilizado nas versões 1.3 e anteriores do GWT e da chamada ao script nocache.js com o nome do módulo, será invocado o modulo Login do GWT.&lt;br /&gt;
&lt;br /&gt;
Agora é só compilar o projeto que o plugin Gwt4Nb irá realizar a compilação do modulo GWT criado, rodar o projeto e chamar a página welcomeGWT.html o resultado final fica assim:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/_pccZXAPS6OU/TEOhbDlBuLI/AAAAAAAAAFA/fKOkZi2Q0KQ/s1600/passo-7-exemplo-tela.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="346" src="http://3.bp.blogspot.com/_pccZXAPS6OU/TEOhbDlBuLI/AAAAAAAAAFA/fKOkZi2Q0KQ/s640/passo-7-exemplo-tela.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Quando você clica no botão o Label se exibe ou se esconde.&lt;br /&gt;
&lt;br /&gt;
Pronto, um simples e bem abstrato exemplo está funcionando, vou ficar por aqui para deixar vocês criarem os seus primeiros "Hello World" e no proximo post vou continuar com esse mesmo exemplo para criar um exemplo de Login e Senha usando GWT.&lt;br /&gt;
&lt;br /&gt;
Valeu Pessoal&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5995719507173212632-1694131508414557423?l=javacomfarinha.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6JoWbKAoNxG5XSVyEcdeBaPzEc4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6JoWbKAoNxG5XSVyEcdeBaPzEc4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6JoWbKAoNxG5XSVyEcdeBaPzEc4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6JoWbKAoNxG5XSVyEcdeBaPzEc4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~4/IepyXIw7XO8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://javacomfarinha.blogspot.com/feeds/1694131508414557423/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5995719507173212632&amp;postID=1694131508414557423" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/1694131508414557423?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/1694131508414557423?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~3/IepyXIw7XO8/criando-seu-primeiro-aplicativo-com-gwt.html" title="Criando seu primeiro aplicativo com GWT e Netbeans" /><author><name>Emmanuel Silva</name><uri>http://www.blogger.com/profile/09496644325586846465</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_pccZXAPS6OU/TDkPD8DIL6I/AAAAAAAAADc/t_eJFoYnWM8/S220/S2020919.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_pccZXAPS6OU/TEOc2F_e4tI/AAAAAAAAAEQ/5tHUDCyK9WQ/s72-c/passo-1-criando-web-app-gwt-netbeans.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://javacomfarinha.blogspot.com/2011/03/criando-seu-primeiro-aplicativo-com-gwt.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8NQ345fSp7ImA9WhZTFU0.&quot;"><id>tag:blogger.com,1999:blog-5995719507173212632.post-6810737871913504824</id><published>2010-07-20T21:31:00.003-03:00</published><updated>2011-03-18T23:14:52.025-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-18T23:14:52.025-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Dicas" /><title>Dica Java - Como remover elementos nulo de uma coleção</title><content type="html">Olá Pessoal;
&lt;br /&gt;
&lt;br /&gt;
Essa é uma dica que recebi de um amigo meu do trabalho, o &lt;a href="http://josivan.blogspot.com/"&gt;Josivan&lt;/a&gt; (cara faz mestrado na UTFPR e também faz a revisão de vários livros técnicos) e achei interessante disponibilizar para todos que acessam o blog.
&lt;br /&gt;
&lt;br /&gt;
Já deparei algumas vezes com códigos para remover elementos nulo em uma lista por exemplo que fica mais ou menos assim:
&lt;br /&gt;
&lt;br /&gt;
&lt;textarea cols="57" rows="15"&gt;List&amp;lt;String&amp;gt; listaComElementosNulos = new ArrayList&amp;lt;String&amp;gt;();                  listaComElementosNulos.add("A");         
listaComElementosNulos.add("B");         
listaComElementosNulos.add(null);         
listaComElementosNulos.add("C");         
listaComElementosNulos.add("D");         
listaComElementosNulos.add(null);         
listaComElementosNulos.add("E");         
listaComElementosNulos.add("F");         
listaComElementosNulos.add(null);          

List&amp;lt;String&amp;gt; novaListaSemNulos = new ArrayList&amp;lt;String&amp;gt;();         
for (String elemento : listaComElementosNulos) {             
    if (elemento != null) { novaListaSemNulos.add(elemento); }         
}
&lt;/textarea&gt;
&lt;br /&gt;
&lt;br /&gt;
Porém isso pode ser realizado com uma forma que economiza linhas de código além de manter um código mais limpo, e cumprindo o objetivo de remover os elementos nulos da coleção em apenas uma linha, o código fica assim:
&lt;br /&gt;
&lt;br /&gt;
&lt;textarea cols="57"&gt;listaComElementosNulos.removeAll(Collections.singletonList(null));
&lt;/textarea&gt;
&lt;br /&gt;
&lt;br /&gt;
É algo simples e bem cotidiano para um desenvolvedor Java.
&lt;br /&gt;
&lt;br /&gt;
Você tem alguma forma mais pratica? envie nos comentários!
&lt;br /&gt;
&lt;br /&gt;
Abraços e Até a proxíma!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5995719507173212632-6810737871913504824?l=javacomfarinha.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hjmRnQgIfITvJ5oLwBxqdc7UuzE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hjmRnQgIfITvJ5oLwBxqdc7UuzE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hjmRnQgIfITvJ5oLwBxqdc7UuzE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hjmRnQgIfITvJ5oLwBxqdc7UuzE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~4/bak-LrLXa0Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://javacomfarinha.blogspot.com/feeds/6810737871913504824/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5995719507173212632&amp;postID=6810737871913504824" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/6810737871913504824?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/6810737871913504824?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~3/bak-LrLXa0Q/dica-java-como-remover-elementos-nulo.html" title="Dica Java - Como remover elementos nulo de uma coleção" /><author><name>Emmanuel Silva</name><uri>http://www.blogger.com/profile/09496644325586846465</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_pccZXAPS6OU/TDkPD8DIL6I/AAAAAAAAADc/t_eJFoYnWM8/S220/S2020919.JPG" /></author><thr:total>1</thr:total><feedburner:origLink>http://javacomfarinha.blogspot.com/2010/07/dica-java-como-remover-elementos-nulo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYARHs_fSp7ImA9WxFaFEo.&quot;"><id>tag:blogger.com,1999:blog-5995719507173212632.post-5552944458414273380</id><published>2010-07-18T14:12:00.000-03:00</published><updated>2010-07-18T14:12:25.545-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-18T14:12:25.545-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GWT" /><title>Introdução ao GWT</title><content type="html">&amp;nbsp;Pessoal, como tenho bastante interesse em falar sobre o GWT e suas vantagens no Blog, vou começar com esse post falando um pouco sobre o que é o GWT e um pouco do que ele pode fazer, assim mais para frente nós podemos ir avançado sobre o assunto falando sobre componentes e criando GUI avançadas de forma bem pratica. Espero que gostem!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;O que é GWT&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
O Google Web Toolkit é um framework para o desenvolvimento de interfaces ricas com Java. É algo drasticamente diferente desenvolver aplicados web, bem diferente de como usamos com JSP/JSF/Struts... Etc. Pois a idéia principal do GWT é escrever o código de nossas interfaces WEB em código Java, esse código será compilado para um código Javascript já otimizado pelo compilador e funcional para os navegadores utilizados no mercado (IE, Firefox, Safari, Opera ...etc) .&lt;br /&gt;
&lt;br /&gt;
Isso facilita e agiliza bastante o desenvolvimento de aplicativos WEB, pois não precisamos ficar escrevendo Javascript&amp;nbsp; que tenha suporte em todos os navegadores e podemos usufruir de todas as funcionalidades presentes no Javascript e da reutilização de componentes de uma forma bem pratica, podemos utilizar também ferramentas de testes para verificar se uma interface está cumprindo o que prometeu.&lt;br /&gt;
&lt;br /&gt;
Possui também um mecanismo de comunicação com o código cliente e servidor assíncrono, chamado de RPC (Remote Procedure Call) que pode trabalhar com vários protocolos como JSON ou XML é bem parecido com um código RMI de forma bem mais simples, que na pratica a pagina web gerada se comunica com o servidor utilizando o AJAX de forma transparente.&lt;br /&gt;
&lt;br /&gt;
Você conferir a própria pagina do GWT, que está em Português e pode ajudar bastante: &lt;a href="http://code.google.com/intl/pt-BR/webtoolkit/overview.html."&gt;http://code.google.com/intl/pt-BR/webtoolkit/overview.html.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Casos de aplicativos que usam o GWT&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Você pode ver alguns exemplos de aplicativos que foram feitos em GWT nesse link &lt;a href="http://gwtgallery.appspot.com/"&gt;http://gwtgallery.appspot.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Alguns pontos positivos&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Possui todos os componentes HTML como botões, input text, checkbox e alguns outros compoonentes como Tree, Menu e também já existem bastantes bibliotecas com vários recursos e componentes interessantes (mais para frente falo sobre eles).&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Possui recursos de internacionalização&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Suporte a analise de documentos XML.&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Possui suporte a todos os tipos primitivos (byte, char, short, int) e suas classes wrappers (Byte, Char, Short, Integer), a única exceção é o long que é convertido para o tipo Double no javascript e por isso é recomendado a usar Int ao invés de long.&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Pode se trabalhar diretamente com exceções, checadas e não checadas, as existentes na API do Java e também pode se criar novas exceções.&lt;/li&gt;
&lt;li&gt;Plugin para as IDE´s do mercado como Eclipse, Netbeans, IntelliJ, você pode debugar, compilar, criar novos Widgtes de forma pratica e rápida em seu ambiente de desenvolvimento preferido.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;b&gt;Alguns pontos negativos&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Como nem tudo é um mar de rosas, também possui algumas desvantagens:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Se estiver pensando em desenvolver um pagina WEB com foco em SEO, não use o GWT, pois o código gerado não é nenhum pouco entendível para os buscadores, pois trabalha com Javascript, existem algumas formas que pode ajudar mais irá perder bastante com relação a uma pagina com HTML bem semântico.&lt;/li&gt;
&lt;li&gt;O processo de compilação do GWT ainda não é o mais performático, dependendo de como sua aplicação foi desenhada, a compilação pode ficar lenta.&lt;/li&gt;
&lt;li&gt;O tamanho da aplicação (seu arquivo de distribuição .war ou .ear), é maior do que comparado com um aplicativo que utiliza JSF ou qualquer framework baseado em tag´s.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Por enquanto é isso, nos próximos posts vou demonstrar na pratica todo esse bla-bla-bla que foi dito ai em cima criando um exemplo simples utilizando o Netbeans e o Eclipse.&lt;br /&gt;
&lt;br /&gt;
Abraços e até a próxima.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5995719507173212632-5552944458414273380?l=javacomfarinha.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NI-x8KdqHZkuD7totwMza2uiyQ8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NI-x8KdqHZkuD7totwMza2uiyQ8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NI-x8KdqHZkuD7totwMza2uiyQ8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NI-x8KdqHZkuD7totwMza2uiyQ8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~4/5K6aPT4JlL4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://javacomfarinha.blogspot.com/feeds/5552944458414273380/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5995719507173212632&amp;postID=5552944458414273380" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/5552944458414273380?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/5552944458414273380?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~3/5K6aPT4JlL4/introducao-ao-gwt.html" title="Introdução ao GWT" /><author><name>Emmanuel Silva</name><uri>http://www.blogger.com/profile/09496644325586846465</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_pccZXAPS6OU/TDkPD8DIL6I/AAAAAAAAADc/t_eJFoYnWM8/S220/S2020919.JPG" /></author><thr:total>1</thr:total><feedburner:origLink>http://javacomfarinha.blogspot.com/2010/07/introducao-ao-gwt.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUMR38_eyp7ImA9WxFbGE0.&quot;"><id>tag:blogger.com,1999:blog-5995719507173212632.post-2430238562655405580</id><published>2010-07-10T21:10:00.001-03:00</published><updated>2010-07-10T21:31:26.143-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-10T21:31:26.143-03:00</app:edited><title>O Java Com Farinha Voltou!!!</title><content type="html">Pessoal;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_pccZXAPS6OU/TDkQsg08AFI/AAAAAAAAAEE/NZ83iuMVCVE/s1600/java-com-farinha-voltou.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="133" src="http://2.bp.blogspot.com/_pccZXAPS6OU/TDkQsg08AFI/AAAAAAAAAEE/NZ83iuMVCVE/s200/java-com-farinha-voltou.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
É com grande prazer que quero comunicar que irei voltar a atualizar o Blog! Isso mesmo o Java Com Farinha está de volta, a pedidos de muitos (não são tantos assim ... rsrs).&lt;br /&gt;
&lt;br /&gt;
E voltará melhor do que nunca, já que agora vamos abordar alguns posts interessantes a respeito do desenvolvimento Java &amp;amp; Afins.&lt;br /&gt;
&lt;br /&gt;
Alguns dos temas que iremos abordar nos próximos postos são:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Java Com SEO&lt;/b&gt; - Isso mesmo, o Java também é bom para o SEO, vamos mostrar alguns artigos para ajudar no desenvolvimento de sites com Java e também pensando na otimização para os mecanismos de buscas.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;GWT&lt;/b&gt; - Quem diria, eu que era contra a esse tal de Google Web Toolkit, fui rendido a ele. A produtividade para desenvolvimento de aplicativos WEB utilizando AJAX escrito em código Java com o Google Web Toolkit é muito interessante, e o resultado final é muito legal também, mais para frente vamos falar sobre isso.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;JSF&lt;/b&gt; - O "queridinho" dos desenvolvedores Java para WEB não poderia ser esquecido. Vamos falar de algumas coisas legais como a sua novoa versão (2.0) e algumas coisas interessantes. Aguardem!&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;NOSQL Databases&lt;/b&gt; - Caraca!!! um assunto polêmico (pelo menos no meu trabalho e com pessoas que converso). Vamos falar também um pouco desse novo paradigma de banco de dados, no qual eu acho muito interessante e tem um futuro muito promissor, irei mostrar alguns dos principais bancos NOSQL utilizados hoje em dia e exemplos com clientes Java (é claro).&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Espero que gostem, enquanto os novos posts não chegam, &lt;b&gt;você pode responder a minha enquete (No canto direito) - Você usa ou já usou GWT?&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
É Isso pessoal, fico por aqui e ja na próxima semana irei começar os posts!&lt;br /&gt;
&lt;b&gt; &lt;/b&gt;&lt;br /&gt;
Abraços e até a próxima!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5995719507173212632-2430238562655405580?l=javacomfarinha.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bK7Dmx-ikuJqA_f5oKxRW1p_Juc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bK7Dmx-ikuJqA_f5oKxRW1p_Juc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bK7Dmx-ikuJqA_f5oKxRW1p_Juc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bK7Dmx-ikuJqA_f5oKxRW1p_Juc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~4/Daj3EDZICj8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://javacomfarinha.blogspot.com/feeds/2430238562655405580/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5995719507173212632&amp;postID=2430238562655405580" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/2430238562655405580?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/2430238562655405580?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~3/Daj3EDZICj8/o-java-com-farinha-voltou.html" title="O Java Com Farinha Voltou!!!" /><author><name>Emmanuel Silva</name><uri>http://www.blogger.com/profile/09496644325586846465</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_pccZXAPS6OU/TDkPD8DIL6I/AAAAAAAAADc/t_eJFoYnWM8/S220/S2020919.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_pccZXAPS6OU/TDkQsg08AFI/AAAAAAAAAEE/NZ83iuMVCVE/s72-c/java-com-farinha-voltou.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://javacomfarinha.blogspot.com/2010/07/o-java-com-farinha-voltou.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcFQHg5cSp7ImA9WBFbGU4.&quot;"><id>tag:blogger.com,1999:blog-5995719507173212632.post-4710991997678152218</id><published>2007-05-09T20:03:00.000-03:00</published><updated>2007-05-11T22:06:51.629-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-05-11T22:06:51.629-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java 6" /><title>Java 6 - Criando uma aplicação na SystemTray</title><content type="html">Olá, continuando com a sequência "O que o Java 6 trouxe de novo" irei falar um pouquinho de uma importante nova funcionalidade adicionada na nova versão do Java, O SystemTray.&lt;br /&gt;O SystemTray é para deixar os programas em um icone que fica na  bandeja do sistema operacional (aquela do lado do relógio), o Java na versão 6 trouxe isso nativo na JDK, nas versões anteriores isso era feito utilizando a biblioteca &lt;a href="http://jdic.dev.java.net/"&gt;JDIC&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;E para ilustar vou dar um exemplo de como criar uma aplicação na bandeja, como várias pessoas me pediram isso, está ai, é bem simples:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       import java.awt.Image;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;import java.awt.MenuItem;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;import java.awt.MenuShortcut;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;import java.awt.PopupMenu;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;import java.awt.SystemTray;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;import java.awt.Toolkit;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;import java.awt.TrayIcon;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;import java.awt.event.ActionEvent;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;import java.awt.event.ActionListener;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;import javax.swing.ImageIcon;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;import javax.swing.JOptionPane;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;* @author Emmanuel Silva&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public class TestTray {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   /** Creates a new instance of SisTray */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   public TestTray() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       createSystemTray();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   public static void main(String[] args) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       new TestTray();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   private void createSystemTray() {&lt;/span&gt;&lt;br /&gt;   &lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       //criando a classe que gerencia a bandeja&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       SystemTray tray = SystemTray.getSystemTray();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       if(!tray.isSupported()) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           System.err.println("Não é possível rodar a aplicação");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           System.exit(0);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       }&lt;/span&gt;&lt;br /&gt;   &lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       //icone que será exibido na bandeja&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       Image icon     = Toolkit.getDefaultToolkit().createImage( getClass().getResource("informacao.gif").getPath());&lt;/span&gt;&lt;br /&gt;   &lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       PopupMenu menu = new PopupMenu();&lt;/span&gt;&lt;br /&gt;   &lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       //item para sair&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       MenuItem itemSair = new MenuItem("Sair");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       itemSair.addActionListener(new ActionListener() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           public void actionPerformed(ActionEvent e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;               System.exit(0);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       });&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       menu.add(itemSair);&lt;/span&gt;&lt;br /&gt;   &lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       //item para uma opção qualquer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       MenuItem itemOption = new MenuItem("Opção");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       itemOption.addActionListener(new ActionListener() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           public void actionPerformed(ActionEvent e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;               JOptionPane.showMessageDialog(null, "E ai gostou?");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       });&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       menu.add(itemOption);&lt;/span&gt;&lt;br /&gt;   &lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       TrayIcon trayIcon = new TrayIcon(icon, "Tooltip", menu);&lt;/span&gt;&lt;br /&gt;   &lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       try {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           //adiciona na bandeja do sistema&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           tray.add(trayIcon);&lt;/span&gt;&lt;br /&gt;       &lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           //exibindo um "tooltip" para o tray&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           trayIcon.displayMessage("SystemTray Demo", "Você gostou do SystemTray nativo do java?", TrayIcon.MessageType.INFO);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       } catch(Exception ex) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           ex.printStackTrace();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;O resultado dessa classe é:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_pccZXAPS6OU/RkJW0SQwcZI/AAAAAAAAABE/SLsjsXB9_CM/s1600-h/tray.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_pccZXAPS6OU/RkJW0SQwcZI/AAAAAAAAABE/SLsjsXB9_CM/s320/tray.PNG" alt="" id="BLOGGER_PHOTO_ID_5062704387373166994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ao clicar com o botão direito em cima do icone:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_pccZXAPS6OU/RkJW0iQwcaI/AAAAAAAAABM/81XZcLmFU-g/s1600-h/options.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_pccZXAPS6OU/RkJW0iQwcaI/AAAAAAAAABM/81XZcLmFU-g/s320/options.PNG" alt="" id="BLOGGER_PHOTO_ID_5062704391668134306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Bom, espero que gostem;&lt;br /&gt;&lt;br /&gt;Até a proxíma!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5995719507173212632-4710991997678152218?l=javacomfarinha.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gxNRtN2GOcg5jPa3JTxdkcMVfQg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gxNRtN2GOcg5jPa3JTxdkcMVfQg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gxNRtN2GOcg5jPa3JTxdkcMVfQg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gxNRtN2GOcg5jPa3JTxdkcMVfQg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~4/h6TA21SLvzw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://javacomfarinha.blogspot.com/feeds/4710991997678152218/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5995719507173212632&amp;postID=4710991997678152218" title="5 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/4710991997678152218?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/4710991997678152218?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~3/h6TA21SLvzw/java-6-parte-2.html" title="Java 6 - Criando uma aplicação na SystemTray" /><author><name>Emmanuel Silva</name><uri>http://www.blogger.com/profile/09496644325586846465</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_pccZXAPS6OU/TDkPD8DIL6I/AAAAAAAAADc/t_eJFoYnWM8/S220/S2020919.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_pccZXAPS6OU/RkJW0SQwcZI/AAAAAAAAABE/SLsjsXB9_CM/s72-c/tray.PNG" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://javacomfarinha.blogspot.com/2007/05/java-6-parte-2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYASXs6eip7ImA9WBFbFks.&quot;"><id>tag:blogger.com,1999:blog-5995719507173212632.post-8722180457868211516</id><published>2007-05-08T20:15:00.000-03:00</published><updated>2007-05-08T20:32:28.512-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-05-08T20:32:28.512-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java 6" /><title>Java 6</title><content type="html">Irei em alguns artigos mostrar o que o Java na versão 6 trouxe de novo para os desenvolvedores java, hoje queria começar com a classe Desktop, essa classe era pertencente a biblioteca chamada &lt;a href="http://jdic.dev.java.net"&gt;JDIC&lt;/a&gt;, que realmente era uma biblioteca muito boa e acabou sendo incorporada dentro do JDK.&lt;br /&gt;&lt;br /&gt;Features que essa biblioteca trouxe para o Java 6, com um exemplo de como utiliza-la:&lt;br /&gt;&lt;br /&gt;   &lt;span style="font-family:courier new;"&gt;java.awt.Desktop desktop =  java.awt.Desktop.getDesktop();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    if(!desktop.isDesktopSupported()) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            System.err.println("Desktop não é suportado.");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            System.exit(0);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     }  &lt;/span&gt;    &lt;br /&gt;       &lt;br /&gt;&lt;ul&gt;&lt;li&gt;      &lt;span style="font-weight: bold;"&gt;Suporte para abrir o navegador padrão do sistema operacional&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;            &lt;span style="font-family:courier new;"&gt;desktop.browse(new URI("http://www.javacomfarinha.blogspot.com"));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="font-weight: bold;"&gt;&lt;li&gt;Abrir arquivos para edição com programas padrões do sistema operacional&lt;/li&gt;&lt;/ul&gt;         &lt;span style="font-family:courier new;"&gt;desktop.edit(new File("C:\\DV.txt"));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="font-weight: bold;"&gt;&lt;li&gt;Abrir o programa de leitor de correio padrão do sistema operacional para enviar e-mails&lt;/li&gt;&lt;/ul&gt;            &lt;span style="font-family:courier new;"&gt;desktop.mail(new URI("mailto:emmanuel.silva@gmail.com"));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="font-weight: bold;"&gt;&lt;li&gt;Ele pode abrir um arquivo para visualização&lt;/li&gt;&lt;/ul&gt;       &lt;span style="font-family:courier new;"&gt;  desktop.open(new File("C:\\compilador_java.pdf"));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="font-weight: bold;"&gt;&lt;li&gt;Ele pode enviar arquivos para a impressão&lt;/li&gt;&lt;/ul&gt;            &lt;span style="font-family:courier new;"&gt;desktop.print(new File("C:\\compilador_java.pdf"));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Por hoje é só, nos proximos artigos sobre o Java 6 irei falar um pouco sobre como criar aplicação que ficam no Tray (Do lado do relogio), Trabalhar um pouco com Threads no Swing utilizando a classe SwingWorker.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5995719507173212632-8722180457868211516?l=javacomfarinha.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YXvZYYY7UCC44SLnuloAbdFzehg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YXvZYYY7UCC44SLnuloAbdFzehg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YXvZYYY7UCC44SLnuloAbdFzehg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YXvZYYY7UCC44SLnuloAbdFzehg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~4/aR-krGxBGpE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://javacomfarinha.blogspot.com/feeds/8722180457868211516/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5995719507173212632&amp;postID=8722180457868211516" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/8722180457868211516?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/8722180457868211516?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~3/aR-krGxBGpE/java-6.html" title="Java 6" /><author><name>Emmanuel Silva</name><uri>http://www.blogger.com/profile/09496644325586846465</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_pccZXAPS6OU/TDkPD8DIL6I/AAAAAAAAADc/t_eJFoYnWM8/S220/S2020919.JPG" /></author><thr:total>2</thr:total><feedburner:origLink>http://javacomfarinha.blogspot.com/2007/05/java-6.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUHQns6eyp7ImA9WBFbE08.&quot;"><id>tag:blogger.com,1999:blog-5995719507173212632.post-6088676799443109582</id><published>2007-05-04T19:57:00.000-03:00</published><updated>2007-05-04T20:10:33.513-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-05-04T20:10:33.513-03:00</app:edited><title>Netbeans 6 M9</title><content type="html">Pessoal;&lt;br /&gt;&lt;br /&gt;A versão 6 do Netbeans está começando a mostrar as caras do eles tinham imaginado para essa nova versão da IDE.&lt;br /&gt;Eles adicionaram muitas novidades, o suporte a desenvolvimento de telas swing com o matisse está muito bom, o Editor foi totalmente reformulando, está muito mais agil trabalhar com ele, mas a novidade que eu gostaria de destacar é:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Javascript Editor &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Muito bom, pois sentia falta de uma boa IDE para desenvolver javascript, questões como exibir erros, refactoring, code completion, o Netbeans 6 tras tudo isso ai:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_pccZXAPS6OU/Rju7iSQwcXI/AAAAAAAAAA0/y7iDmzo8GNs/s1600-h/syntax_coloring.png"&gt;&lt;img style="cursor: pointer; width: 434px; height: 323px;" src="http://3.bp.blogspot.com/_pccZXAPS6OU/Rju7iSQwcXI/AAAAAAAAAA0/y7iDmzo8GNs/s400/syntax_coloring.png" alt="" id="BLOGGER_PHOTO_ID_5060844803972952434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pccZXAPS6OU/Rju8AyQwcYI/AAAAAAAAAA8/SZZvZI_YhFE/s1600-h/code_completion.png"&gt;&lt;img style="cursor: pointer; width: 431px; height: 334px;" src="http://1.bp.blogspot.com/_pccZXAPS6OU/Rju8AyQwcYI/AAAAAAAAAA8/SZZvZI_YhFE/s400/code_completion.png" alt="" id="BLOGGER_PHOTO_ID_5060845327958962562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Lembrando que ainda está em versão de desenvolvimento.&lt;br /&gt;&lt;br /&gt;Mais para quem quiser baixar é só seguir o link &lt;a href="http://bits.nbextras.org/download/6.0/m9/"&gt;http://bits.nbextras.org/download/6.0/m9/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;E para quem quer ver todas as features inclusas: &lt;a href="http://wiki.netbeans.org/wiki/view/NewAndNoteWorthyMilestone9"&gt;http://wiki.netbeans.org/wiki/view/NewAndNoteWorthyMilestone9&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5995719507173212632-6088676799443109582?l=javacomfarinha.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dMUJL8ZFuGpgmmFXKefWyRhI-CE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dMUJL8ZFuGpgmmFXKefWyRhI-CE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dMUJL8ZFuGpgmmFXKefWyRhI-CE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dMUJL8ZFuGpgmmFXKefWyRhI-CE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~4/ISB8dM8Z514" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://javacomfarinha.blogspot.com/feeds/6088676799443109582/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5995719507173212632&amp;postID=6088676799443109582" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/6088676799443109582?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/6088676799443109582?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~3/ISB8dM8Z514/netbeans-6-m9.html" title="Netbeans 6 M9" /><author><name>Emmanuel Silva</name><uri>http://www.blogger.com/profile/09496644325586846465</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_pccZXAPS6OU/TDkPD8DIL6I/AAAAAAAAADc/t_eJFoYnWM8/S220/S2020919.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_pccZXAPS6OU/Rju7iSQwcXI/AAAAAAAAAA0/y7iDmzo8GNs/s72-c/syntax_coloring.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://javacomfarinha.blogspot.com/2007/05/netbeans-6-m9.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08FSXc9fSp7ImA9WBFbEkk.&quot;"><id>tag:blogger.com,1999:blog-5995719507173212632.post-288251075026379418</id><published>2007-05-03T22:50:00.000-03:00</published><updated>2007-05-03T23:30:18.965-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-05-03T23:30:18.965-03:00</app:edited><title>Annotations</title><content type="html">&lt;span style="font-family: verdana;font-size:85%;" &gt;&lt;span style="color: rgb(51, 51, 51);"&gt;Olá,&lt;/span&gt; hoje vou falar um pouquinho das Annotations, que está disponibilizado desde a versão 5.0 do Java.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Annotation são meta-informações que guardam informações de dados dentro do proprio código-fonte,  isso é muito util em frameworks por exemplo, porque não precisamos ter mais bilhões de arquivos xml guardando configurações e isso pode estar dentro do código, ficando mais facil e rapido de configurar o framework.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Bom para ilustrar melhor as annotations e o seu uso resolvi fazer um exemplo de validação de java beans utilizando elas.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Para começar, o código da Annotation:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left; font-weight: bold; font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;/*&lt;br /&gt;* Validation.java&lt;br /&gt;*&lt;br /&gt;* Created on 5 de Abril de 2007, 21:55&lt;br /&gt;*&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;import java.lang.annotation.ElementType;&lt;br /&gt;import java.lang.annotation.Retention;&lt;br /&gt;import java.lang.annotation.RetentionPolicy;&lt;br /&gt;import java.lang.annotation.Target;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Annotation para validar campos em beans.&lt;br /&gt;* @author Emmanuel Silva&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;@Retention(RetentionPolicy.RUNTIME)&lt;br /&gt;@Target(value=ElementType.FIELD)&lt;br /&gt;public @interface Validation {&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Tipo da validação guardada em um Enum que será realizada, por padrão será&lt;br /&gt;  * checagem de not null&lt;br /&gt;  **/&lt;br /&gt; ValidationType type() default ValidationType.NOT_NULL;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Se a validação for do tipo max_length, aqui eu guardo o tamanho maximo&lt;br /&gt;  **/&lt;br /&gt; int maxlength() default 0;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Proximo passo é a criação do Enum que define os tipos de validações que serão validadas:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left; font-weight: bold; font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;/**&lt;br /&gt;*&lt;br /&gt;* @author Emmanuel Silva&lt;br /&gt;*/&lt;br /&gt;public enum ValidationType {&lt;br /&gt;&lt;br /&gt;MAX_LENGTH,&lt;br /&gt;&lt;br /&gt;NOT_NULL;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana; color: rgb(0, 0, 0);"&gt;Agora, temos o nosso Java Bean que será validado, repare que as annotations são chamadas através de um &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; font-family: verdana; color: rgb(0, 0, 0);"&gt;@ &lt;/span&gt;&lt;span style="font-family: verdana; color: rgb(0, 0, 0);"&gt;e porque a Annotation é para field ela está em cima dos atributos:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left; font-weight: bold; font-family: courier new;"&gt;&lt;br /&gt;/**&lt;br /&gt;*&lt;br /&gt;* @author Emmanuel Silva&lt;br /&gt;*/&lt;br /&gt;public class PessoaBean {&lt;br /&gt;&lt;br /&gt;  @Validation()&lt;br /&gt;  private String nome;&lt;br /&gt;  private String login;&lt;br /&gt;  @Validation(type=ValidationType.MAX_LENGTH, maxlength=6)&lt;br /&gt;  private String senha;&lt;br /&gt;&lt;br /&gt;  /** Creates a new instance of PessoaBean */&lt;br /&gt;  public PessoaBean() {&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public String getNome() {&lt;br /&gt;      return nome;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void setNome(String nome) {&lt;br /&gt;      this.nome = nome;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public String getLogin() {&lt;br /&gt;      return login;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void setLogin(String login) {&lt;br /&gt;      this.login = login;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public String getSenha() {&lt;br /&gt;      return senha;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void setSenha(String senha) {&lt;br /&gt;      this.senha = senha;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;Agora temos a classe responsavel por validar os Java Beans, essa classe utiliza de um recurso muito poderoso presente no Java chamado &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 51);"&gt;Reflection&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;, o reflection serve para que através de código Java eu consiga manipular uma classe como: Listar seus atributos, ler/modificar seus valores, entre outras coisas:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left; font-weight: bold; font-family: courier new;"&gt;&lt;br /&gt;import java.lang.reflect.Field;&lt;br /&gt;import java.lang.reflect.Method;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;*&lt;br /&gt;* @author Emmanuel Silva&lt;br /&gt;*/&lt;br /&gt;public class ValidatorUtil {&lt;br /&gt; &lt;br /&gt;   private Object obj;&lt;br /&gt; &lt;br /&gt;   public void validate(Object obj) {&lt;br /&gt;       this.obj = obj;&lt;br /&gt;       Class classe = obj.getClass();&lt;br /&gt;       Field[] fields = classe.getDeclaredFields();&lt;br /&gt;     &lt;br /&gt;       for(Field field : fields) {&lt;br /&gt;           if(field.isAnnotationPresent(Validation.class)) {&lt;br /&gt;               Validation validation = field.getAnnotation(Validation.class);&lt;br /&gt;               validateField(validation, field);&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   private void validateField(Validation v, Field field) {&lt;br /&gt;       field.setAccessible(true);&lt;br /&gt;       if(v.type() == ValidationType.NOT_NULL) {&lt;br /&gt;           boolean result = checkNotNull(field);&lt;br /&gt;           if(!result) {&lt;br /&gt;               System.out.println("Campo " + field.getName() + " nao foi preenchido corretamente.");&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;     &lt;br /&gt;       if(v.type() == ValidationType.MAX_LENGTH) {&lt;br /&gt;           boolean result = checkMaxLength(field, v.maxlength());&lt;br /&gt;           if(!result) {&lt;br /&gt;               System.out.println("Quantidade de caracteres permitido para o campo " + field.getName() + " é de "+ v.maxlength() +".");&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;   private boolean checkNotNull(Field field) {&lt;br /&gt;       try {&lt;br /&gt;           if(field.get(this.obj) == null)&lt;br /&gt;               return false;&lt;br /&gt;            else&lt;br /&gt;               return true;&lt;br /&gt;       } catch(Exception ex) {&lt;br /&gt;           return false;&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   private boolean checkMaxLength(Field field, int max) {&lt;br /&gt;       try {&lt;br /&gt;           if(field.get(this.obj) != null &amp;&amp;amp; field.get(this.obj).toString().length() &gt; max)&lt;br /&gt;               return false;&lt;br /&gt;           else&lt;br /&gt;               return true;&lt;br /&gt;       } catch(Exception ex) {&lt;br /&gt;           return false;&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;Por final, criei uma classe para testar as validações, criando 2 instancias do Java Bean "PessoaBean", uma instancia está com os dados incorretos e a outra instancia está com os dados corretos, assim que a instancia que estiver incorreta passar pelo validador será impressa os seus erros:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left; font-weight: bold; font-family: courier new;"&gt;&lt;br /&gt;/**&lt;br /&gt;*&lt;br /&gt;* @author Emmanuel Silva&lt;br /&gt;*/&lt;br /&gt;public class Main {&lt;br /&gt;  &lt;br /&gt;   /** Creates a new instance of Main */&lt;br /&gt;   public Main() {&lt;br /&gt;      &lt;br /&gt;       System.out.println("Validando primeira pessoa");&lt;br /&gt;       //pessoa com cadastro invalido&lt;br /&gt;       PessoaBean pessoa = new PessoaBean();&lt;br /&gt;       pessoa.setLogin("login");&lt;br /&gt;       pessoa.setSenha("1234567");&lt;br /&gt;      &lt;br /&gt;       ValidatorUtil valida = new ValidatorUtil();&lt;br /&gt;       valida.validate(pessoa);&lt;br /&gt;      &lt;br /&gt;       //pessoa com cadastro correto&lt;br /&gt;       System.out.println("");&lt;br /&gt;       System.out.println("");&lt;br /&gt;       System.out.println("Validando segunda pessoa");&lt;br /&gt;       PessoaBean pessoaCorreta = new PessoaBean();&lt;br /&gt;       pessoaCorreta.setNome("Emmanuel Silva");&lt;br /&gt;       pessoaCorreta.setLogin("login");&lt;br /&gt;       pessoaCorreta.setSenha("123456");&lt;br /&gt;       valida.validate(pessoaCorreta);&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;   /**&lt;br /&gt;    * @param args the command line arguments&lt;br /&gt;    */&lt;br /&gt;   public static void main(String[] args) {&lt;br /&gt;       new Main();&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Bom pessoal, acho que é isso espero que tenham gostado do material.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Até a proxíma!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5995719507173212632-288251075026379418?l=javacomfarinha.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wmb2rVymCkCW9AbxTx0onKq4_1w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wmb2rVymCkCW9AbxTx0onKq4_1w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wmb2rVymCkCW9AbxTx0onKq4_1w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wmb2rVymCkCW9AbxTx0onKq4_1w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~4/c5MFVPoAluo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://javacomfarinha.blogspot.com/feeds/288251075026379418/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5995719507173212632&amp;postID=288251075026379418" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/288251075026379418?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/288251075026379418?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~3/c5MFVPoAluo/annotations.html" title="Annotations" /><author><name>Emmanuel Silva</name><uri>http://www.blogger.com/profile/09496644325586846465</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_pccZXAPS6OU/TDkPD8DIL6I/AAAAAAAAADc/t_eJFoYnWM8/S220/S2020919.JPG" /></author><thr:total>2</thr:total><feedburner:origLink>http://javacomfarinha.blogspot.com/2007/05/annotations.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QMRHc6eCp7ImA9WBFbEU8.&quot;"><id>tag:blogger.com,1999:blog-5995719507173212632.post-3271894039250510407</id><published>2007-05-02T12:53:00.000-03:00</published><updated>2007-05-02T12:56:25.910-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-05-02T12:56:25.910-03:00</app:edited><title>IPhone</title><content type="html">Dispensa comentários. &lt;br/&gt; &lt;center&gt;&lt;br/&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/YgW7or1TuFk"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/YgW7or1TuFk" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br/&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5995719507173212632-3271894039250510407?l=javacomfarinha.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/O7Td5S6UaNbFbWQ24NeJEJA5FdY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/O7Td5S6UaNbFbWQ24NeJEJA5FdY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/O7Td5S6UaNbFbWQ24NeJEJA5FdY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/O7Td5S6UaNbFbWQ24NeJEJA5FdY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~4/lL70sXDLnH8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://javacomfarinha.blogspot.com/feeds/3271894039250510407/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5995719507173212632&amp;postID=3271894039250510407" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/3271894039250510407?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/3271894039250510407?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~3/lL70sXDLnH8/iphone.html" title="IPhone" /><author><name>Emmanuel Silva</name><uri>http://www.blogger.com/profile/09496644325586846465</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_pccZXAPS6OU/TDkPD8DIL6I/AAAAAAAAADc/t_eJFoYnWM8/S220/S2020919.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://javacomfarinha.blogspot.com/2007/05/iphone.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIASHY_eSp7ImA9WBFQE0w.&quot;"><id>tag:blogger.com,1999:blog-5995719507173212632.post-8520734543039471125</id><published>2007-03-07T21:22:00.000-03:00</published><updated>2007-03-07T21:25:49.841-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-03-07T21:25:49.841-03:00</app:edited><title>Procurando um exemplo de código java?</title><content type="html">Esse site tem uma lista de exemplos de códigos em Java, é bem interessante pois você pode buscar por pacotes, e tem exemplos de "quase tudo" que a gente precisa, salvou a minha vida algumas vezes.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.exampledepot.com/"&gt;Link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5995719507173212632-8520734543039471125?l=javacomfarinha.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PXxiion13Nltub4lsPFYK_pw9E8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PXxiion13Nltub4lsPFYK_pw9E8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PXxiion13Nltub4lsPFYK_pw9E8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PXxiion13Nltub4lsPFYK_pw9E8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~4/hOTKHkd9LPA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://javacomfarinha.blogspot.com/feeds/8520734543039471125/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5995719507173212632&amp;postID=8520734543039471125" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/8520734543039471125?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/8520734543039471125?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~3/hOTKHkd9LPA/procurando-um-exemplo-de-cdigo-java.html" title="Procurando um exemplo de código java?" /><author><name>Emmanuel Silva</name><uri>http://www.blogger.com/profile/09496644325586846465</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_pccZXAPS6OU/TDkPD8DIL6I/AAAAAAAAADc/t_eJFoYnWM8/S220/S2020919.JPG" /></author><thr:total>1</thr:total><feedburner:origLink>http://javacomfarinha.blogspot.com/2007/03/procurando-um-exemplo-de-cdigo-java.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYNRX05eSp7ImA9WBFQE0w.&quot;"><id>tag:blogger.com,1999:blog-5995719507173212632.post-5176275085124958954</id><published>2007-03-07T20:33:00.000-03:00</published><updated>2007-03-07T21:03:14.321-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-03-07T21:03:14.321-03:00</app:edited><title>Componentes JSF com Ajax</title><content type="html">Descobri um framework chamado &lt;span style="font-weight: bold;"&gt;JMaki&lt;/span&gt; para trabalhar com componentes JSF como:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;data table ordenada&lt;/li&gt;&lt;li&gt;calendario&lt;/li&gt;&lt;li&gt;editor html&lt;/li&gt;&lt;li&gt;Galeria de imagens&lt;/li&gt;&lt;li&gt;chat&lt;/li&gt;&lt;li&gt;Entre vários&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; Ele usa a notação &lt;a href="http://pt.wikipedia.org/wiki/Json"&gt;JSON&lt;/a&gt; para interagir com seus componentes, simplesmente um show, e o melhor tem um plugin  sensacional para o Netbeans.&lt;br /&gt;&lt;br /&gt;Nesse &lt;a href="https://ajax.dev.java.net/screencast/jMakiDemo/jMakiDemo.html"&gt;link&lt;/a&gt; você pode encontrar uma demonstração dos componentes trabalhando com o Netbeans 5.5.&lt;br /&gt;&lt;br /&gt;A pagina do projeto esta &lt;a href="https://ajax.dev.java.net/"&gt;aqui&lt;/a&gt;.&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://pt.wikipedia.org/wiki/Json"&gt; &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5995719507173212632-5176275085124958954?l=javacomfarinha.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ikBWaRH2N6ZAchol2dwI7bVZhck/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ikBWaRH2N6ZAchol2dwI7bVZhck/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ikBWaRH2N6ZAchol2dwI7bVZhck/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ikBWaRH2N6ZAchol2dwI7bVZhck/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~4/h66YwXbQ5oQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://javacomfarinha.blogspot.com/feeds/5176275085124958954/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5995719507173212632&amp;postID=5176275085124958954" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/5176275085124958954?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/5176275085124958954?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~3/h66YwXbQ5oQ/componentes-jsf-com-ajax.html" title="Componentes JSF com Ajax" /><author><name>Emmanuel Silva</name><uri>http://www.blogger.com/profile/09496644325586846465</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_pccZXAPS6OU/TDkPD8DIL6I/AAAAAAAAADc/t_eJFoYnWM8/S220/S2020919.JPG" /></author><thr:total>1</thr:total><feedburner:origLink>http://javacomfarinha.blogspot.com/2007/03/componentes-jsf-com-ajax.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQHSXk-cCp7ImA9WBFQE0w.&quot;"><id>tag:blogger.com,1999:blog-5995719507173212632.post-8136851707590908015</id><published>2007-03-07T20:29:00.000-03:00</published><updated>2007-03-07T21:05:38.758-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-03-07T21:05:38.758-03:00</app:edited><title>Drag and Drop com Javascript</title><content type="html">Achei esse artigo que ensina como fazer componentes que tenham um efeito drag and drop na web, muito interessante, vale a pena conferir isso, nesse novo mundo da "web 2.0" não podemos ficar para traz.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.webreference.com/programming/javascript/mk/column2/index.html"&gt;Link com artigo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://http//www.webreference.com/programming/javascript/mk/column2/index.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5995719507173212632-8136851707590908015?l=javacomfarinha.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8Q51WCXF7BVFoM19roi8U8Rg2qk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8Q51WCXF7BVFoM19roi8U8Rg2qk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8Q51WCXF7BVFoM19roi8U8Rg2qk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8Q51WCXF7BVFoM19roi8U8Rg2qk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~4/3U59KKeyy_M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://javacomfarinha.blogspot.com/feeds/8136851707590908015/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5995719507173212632&amp;postID=8136851707590908015" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/8136851707590908015?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/8136851707590908015?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~3/3U59KKeyy_M/drag-and-drop-com-javascript.html" title="Drag and Drop com Javascript" /><author><name>Emmanuel Silva</name><uri>http://www.blogger.com/profile/09496644325586846465</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_pccZXAPS6OU/TDkPD8DIL6I/AAAAAAAAADc/t_eJFoYnWM8/S220/S2020919.JPG" /></author><thr:total>2</thr:total><feedburner:origLink>http://javacomfarinha.blogspot.com/2007/03/drag-and-drop-com-javascript.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQARHo9fyp7ImA9WBFRFk4.&quot;"><id>tag:blogger.com,1999:blog-5995719507173212632.post-9062672402432923444</id><published>2007-02-27T23:34:00.000-03:00</published><updated>2007-02-27T23:39:05.467-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-02-27T23:39:05.467-03:00</app:edited><title>Debugando javascript</title><content type="html">Para quem precisa debugar javascript e não aguenta mais ficar dando "alert" para saber o valor das suas variaveis, pois é criaram uma extensão ao firefox que acreditem se quiser debuga javascript entre outras coisas, poderia dizer que é um canivete suiço. Para baixar é só seguir o link:&lt;a href="https://addons.mozilla.org/firefox/1843/"&gt; https://addons.mozilla.org/firefox/1843/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5995719507173212632-9062672402432923444?l=javacomfarinha.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pAqTDFazrb9iPcq9A6FEwbfT_Bc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pAqTDFazrb9iPcq9A6FEwbfT_Bc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pAqTDFazrb9iPcq9A6FEwbfT_Bc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pAqTDFazrb9iPcq9A6FEwbfT_Bc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~4/odwJ6rq0D7w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://javacomfarinha.blogspot.com/feeds/9062672402432923444/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5995719507173212632&amp;postID=9062672402432923444" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/9062672402432923444?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/9062672402432923444?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~3/odwJ6rq0D7w/debugando-javascript.html" title="Debugando javascript" /><author><name>Emmanuel Silva</name><uri>http://www.blogger.com/profile/09496644325586846465</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_pccZXAPS6OU/TDkPD8DIL6I/AAAAAAAAADc/t_eJFoYnWM8/S220/S2020919.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://javacomfarinha.blogspot.com/2007/02/debugando-javascript.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUNRX0_fCp7ImA9WBFRFk8.&quot;"><id>tag:blogger.com,1999:blog-5995719507173212632.post-6439526716436576220</id><published>2007-02-27T22:57:00.000-03:00</published><updated>2007-02-27T23:04:54.344-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-02-27T23:04:54.344-03:00</app:edited><title>Até que enfim!</title><content type="html">Realizando o desejo de muitas pessoas estou criando o meu blog, vou tentar compartilhar o meu aprendizado com a plataforma Java, usabilidade, web-semântica e também um pouquinho de javascript (que todos odeiam mais eu gosto muito), espero que gostem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5995719507173212632-6439526716436576220?l=javacomfarinha.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Nxfufp_3yOv26Z7bBxf_ZuBXolQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Nxfufp_3yOv26Z7bBxf_ZuBXolQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Nxfufp_3yOv26Z7bBxf_ZuBXolQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Nxfufp_3yOv26Z7bBxf_ZuBXolQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~4/6f-WEs1VRGM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://javacomfarinha.blogspot.com/feeds/6439526716436576220/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5995719507173212632&amp;postID=6439526716436576220" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/6439526716436576220?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5995719507173212632/posts/default/6439526716436576220?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DesenvolvimentoEmJavaComSeoGwtJsfOuNosqlDatabasesNoJavaComFarinha/~3/6f-WEs1VRGM/at-que-enfim.html" title="Até que enfim!" /><author><name>Emmanuel Silva</name><uri>http://www.blogger.com/profile/09496644325586846465</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_pccZXAPS6OU/TDkPD8DIL6I/AAAAAAAAADc/t_eJFoYnWM8/S220/S2020919.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://javacomfarinha.blogspot.com/2007/02/at-que-enfim.html</feedburner:origLink></entry></feed>

