<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-26794523</id><updated>2012-02-09T09:24:44.194-02:00</updated><category term='Programação Baseada em Componentes'/><category term='SCWCD 1.4'/><category term='SCJP 5'/><category term='JPA'/><category term='Livros'/><category term='Dicas'/><category term='NetBeans'/><category term='Pesquisa e Ordenação de Dados em Java'/><category term='SCBCD 5.0'/><category term='JavaFX'/><category term='Scrum'/><title type='text'>Conhecimento Aberto</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>37</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-26794523.post-8354454038765985365</id><published>2009-12-20T12:42:00.001-02:00</published><updated>2009-12-20T12:42:02.597-02:00</updated><title type='text'>SCJA</title><content type='html'>&lt;div style="width:425px;text-align:left" id="__ss_2753693"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/rafaelsakurai/scja" title="SCJA"&gt;SCJA&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=scja-091220083315-phpapp02&amp;stripped_title=scja" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=scja-091220083315-phpapp02&amp;stripped_title=scja" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/rafaelsakurai"&gt;Rafael Sakurai&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-8354454038765985365?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/8354454038765985365/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=8354454038765985365&amp;isPopup=true' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/8354454038765985365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/8354454038765985365'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2009/12/scja.html' title='SCJA'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-1499779380697715428</id><published>2009-09-18T15:32:00.005-03:00</published><updated>2009-10-27T15:39:16.006-02:00</updated><title type='text'>TDC 2009</title><content type='html'>Ae pessoal,&lt;br /&gt;&lt;br /&gt;Já está disponivel as incrições para o The Developer Conference 2009&lt;br /&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.thedevelopersconference.com.br/" target="_blank" style="text-decoration:none;"&gt;&lt;img src="http://www.thedevelopersconference.com.br/banners/banner_tdc2009_180x150.gif" style="border:none;" title=" The Developers Conference 2009, um evento organizado pela Globalcode" alt=" The Developers Conference 2009, um evento organizado pela Globalcode" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Mais informações: &lt;a href="http://www.thedevelopersconference.com.br/tdc/2009/index.seam"&gt;http://www.thedevelopersconference.com.br/tdc/2009/index.seam&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-1499779380697715428?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/1499779380697715428/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=1499779380697715428&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/1499779380697715428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/1499779380697715428'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2009/09/tdc-2009.html' title='TDC 2009'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-8322675169966465168</id><published>2009-04-10T14:25:00.003-03:00</published><updated>2009-04-10T14:33:31.359-03:00</updated><title type='text'>Palestra - UML: Criando diagramas eficientes</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Esses dias participei do evento &lt;a href="http://www.metodista.br/focat/eventos/sestinfo-2009/"&gt;SESTINFO/2009&lt;/a&gt; da &lt;a href="http://www.metodista.br"&gt;Universidade Metodista de São Paulo&lt;/a&gt;, este evento são alguns dias com diversas palestras e mini-cursos sobre tecnologia.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="width: 425px; text-align: left;" id="__ss_1204852"&gt;&lt;a style="margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;" href="http://www.slideshare.net/rodrigocasca/uml-criando-diagramas-eficientes?type=powerpoint" title="UML - Criando Diagramas Eficientes"&gt;UML - Criando Diagramas Eficientes&lt;/a&gt;&lt;object style="margin: 0px;" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=uml-090326143545-phpapp01&amp;amp;stripped_title=uml-criando-diagramas-eficientes"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=uml-090326143545-phpapp01&amp;amp;stripped_title=uml-criando-diagramas-eficientes" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"&gt;View more &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/rodrigocasca"&gt;Rodrigo Cascarrolho&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-8322675169966465168?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/8322675169966465168/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=8322675169966465168&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/8322675169966465168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/8322675169966465168'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2009/04/palestra-uml-criando-diagramas.html' title='Palestra - UML: Criando diagramas eficientes'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-7523472244397328593</id><published>2008-12-31T01:05:00.002-02:00</published><updated>2008-12-31T01:22:24.545-02:00</updated><title type='text'>Framework, IDE e blablabla</title><content type='html'>É pessoal, mais um ano se passou, e a cada momento uma tecnologia nova surge.&lt;br /&gt;&lt;br /&gt;Nesse ano usei bastante JSF, AJAX, JPA, EJB 3, infelizmente tive que terminar um projeto usando Struts 1 e usei varios bancos de dados diferentes Oracle, DB2, AS400, SQLServer e MySQL.&lt;br /&gt;&lt;br /&gt;Uma combinação interessante para camada web foi utilizar JSF + Facelets + RichFaces, facilita bastante a criação das páginas, tive que criar uma coisa ou outra personalizada, mas grande parte já estava pronto das APIs, tem plug-in para o Eclipse de JSF e RichFaces para quem gosta de desenhar telas arrastando e soltando, mas prefiro ainda fazer na mão mesmo, da um pouco mais de trabalho, mas acho que aprendo mais também.&lt;br /&gt;&lt;br /&gt;Montei um projeto utilizando NetBeans + Glassfish que ficou bem legal, facil integração com o servidor, NetBeans com JBoss ainda tenho um pouco mais de trabalho, não sei se é eu que não soube configurar direito mas o Hot Deploy não rola legal.&lt;br /&gt;&lt;br /&gt;Falando em NetBeans aproveitei para tirar a Sun Certified Specialist NetBeans IDE, que era de GRATIS e já que faz algum tempo que eu uso o NetBeans. A versão 6.5 ficou bem legal reparei algumas alterações na parte do editor Java e curti bastante as alterações na parte de modelagem UML, acho que ficou bem mais simples criar diagramas UML.&lt;br /&gt;&lt;br /&gt;Acho que só isso mesmo, e 2009 será bem corrido, varios projetos para desenvolver, varias tecnologias para estudar e Feliz 2009 para todos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-7523472244397328593?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/7523472244397328593/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=7523472244397328593&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/7523472244397328593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/7523472244397328593'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2008/12/framework-ide-e-blablabla.html' title='Framework, IDE e blablabla'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-2500938401193601134</id><published>2008-06-27T22:43:00.010-03:00</published><updated>2008-06-27T23:14:54.105-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pesquisa e Ordenação de Dados em Java'/><title type='text'>Bubble Sort em Java</title><content type='html'>O Bubble-Sort é um dos algoritmos de ordenação mais simples.&lt;br /&gt;&lt;br /&gt;O algoritmo consiste de percorrer os N elementos de um vetor, para cada vez percorrida, todos os elementos são comparados com o seu próximo, para verificar se estão na ordem desejada.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: bold;"&gt;Execução do algoritmo de Bubble Sort&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TdHDrMmBxF4/SGWZD_h_FZI/AAAAAAAAABc/RJXmEumqGnM/s1600-h/bubblesort_01.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_TdHDrMmBxF4/SGWZD_h_FZI/AAAAAAAAABc/RJXmEumqGnM/s400/bubblesort_01.jpg" alt="" id="BLOGGER_PHOTO_ID_5216744037251224978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Na primeira iteração, é encontrado o maior elemento e o mesmo é deslocado até a ultima posição.&lt;br /&gt;&lt;br /&gt;- Na segunda iteração, é encontrado o segundo maior elemento e o mesmo é deslocado até a penúltima posição.&lt;br /&gt;&lt;br /&gt;- Continua até que todos os elementos serem ordenados.&lt;br /&gt;&lt;br /&gt;OBS: Não é obrigatório colocar sempre o maior elemento no final do vetor, dependendo da sua lógica de programação, é possível deixar os maiores elementos no começo e os menores elementos no final.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Implementação do Bubble Sort&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_TdHDrMmBxF4/SGWZ3FQX7RI/AAAAAAAAABk/6JgVnQbGf2s/s1600-h/bubblesort_02.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_TdHDrMmBxF4/SGWZ3FQX7RI/AAAAAAAAABk/6JgVnQbGf2s/s400/bubblesort_02.jpg" alt="" id="BLOGGER_PHOTO_ID_5216744914961296658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Na linha 19 temos a assinatura do método que ordena um vetor de inteiros.&lt;br /&gt;Na linha 21 temos um &lt;span style="font-weight: bold;"&gt;for&lt;/span&gt; para controlar a quantidade de vezes que esse vetor será ordenado, no caso &lt;span style="font-weight: bold;"&gt;(v.length – 1)&lt;/span&gt; vezes.&lt;br /&gt;Na linha 23 temos um &lt;span style="font-weight: bold;"&gt;for&lt;/span&gt; para ordenar os elementos do vetor, este &lt;span style="font-weight: bold;"&gt;for&lt;/span&gt; irá ordenar &lt;span style="font-weight: bold;"&gt;(v.length – 1 – i)&lt;/span&gt; vezes. Na quantidade de vezes que o vetor é ordenado subtraímos pela quantidade de iterações que será realizada no caso a variável i, porque sabemos que quando uma iteração termina o ultimo elemento já está ordenado.&lt;br /&gt;Na linha 26 verificamos se o valor da posição atual do vetor é maior que o próximo valor do vetor, se for maior trocamos os valores de lugar.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Uma forma melhorada do Bubble Sort:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Se repararmos na execução do Bubble Sort demonstrado no exemplo anterior, podemos perceber que se o vetor já estiver ordenado antes de chamar o método que ordena, será realizado as &lt;span style="font-weight: bold;"&gt;(v.length – 1)&lt;/span&gt; vezes iterações sobre ele e será comparado todos elementos dele para ver se está ordenado.&lt;br /&gt;Podemos melhorar isso adicionando uma variável de controle que verifica se houve troca de valores no vetor, porque se durante uma iteração não houver nenhuma troca de valor, significa que o vetor já está ordenado.&lt;br /&gt;&lt;br /&gt;Abaixo está a versão melhorada do Bubble Sort:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TdHDrMmBxF4/SGWbUNxmcgI/AAAAAAAAABs/20rtfZCplRM/s1600-h/bubblesort_03.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_TdHDrMmBxF4/SGWbUNxmcgI/AAAAAAAAABs/20rtfZCplRM/s400/bubblesort_03.jpg" alt="" id="BLOGGER_PHOTO_ID_5216746514975977986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Na linha 23 foi criada uma variável boolean para controlar se o vetor está ordenado.&lt;br /&gt;Na linha 32 se houve alguma troca de valor, então o vetor ainda não está totalmente ordenado, e a variável de controle é alterada para falso.&lt;br /&gt;Na linha 36 se o vetor estiver ordenado então para a execução do &lt;span style="font-weight: bold;"&gt;for&lt;/span&gt; que controla a quantidade de vezes que o vetor será ordenado.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Exemplo de ordenação de vetor de objetos:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Neste exemplo temos uma classe Animal e cada animal tem uma especie e um nome.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_TdHDrMmBxF4/SGWc4-yYY1I/AAAAAAAAAB0/DekozdY2Bho/s1600-h/bubblesort_04.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_TdHDrMmBxF4/SGWc4-yYY1I/AAAAAAAAAB0/DekozdY2Bho/s400/bubblesort_04.jpg" alt="" id="BLOGGER_PHOTO_ID_5216748246119506770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;A partir da classe animal, criamos um vetor de animais e queremos ordenar os animais pelo nome.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_TdHDrMmBxF4/SGWc9sAVsPI/AAAAAAAAAB8/Q5LEKP_T6q0/s1600-h/bubblesort_05.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_TdHDrMmBxF4/SGWc9sAVsPI/AAAAAAAAAB8/Q5LEKP_T6q0/s400/bubblesort_05.jpg" alt="" id="BLOGGER_PHOTO_ID_5216748326977122546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Segue abaixo a implementação do programa que ordena o vetor de animais utilizando o algoritmo de Bubble Sort.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_TdHDrMmBxF4/SGWdCrv1c9I/AAAAAAAAACE/FFAg_XbzpVU/s1600-h/bubblesort_06.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_TdHDrMmBxF4/SGWdCrv1c9I/AAAAAAAAACE/FFAg_XbzpVU/s400/bubblesort_06.jpg" alt="" id="BLOGGER_PHOTO_ID_5216748412807246802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Na linha 28 temos a assinatura do método que ordena um vetor de animais.&lt;br /&gt;Na linha 30 temos um &lt;span style="font-weight: bold;"&gt;for&lt;/span&gt; para controlar a quantidade de vezes que esse vetor será ordenado, no caso &lt;span style="font-weight: bold;"&gt;(animais.length – 1)&lt;/span&gt; vezes.&lt;br /&gt;Na linha 32 foi criada uma variável boolean para controlar se o vetor está ordenado.&lt;br /&gt;Na linha 34 temos um &lt;span style="font-weight: bold;"&gt;for&lt;/span&gt; para ordenar os elementos do vetor, este &lt;span style="font-weight: bold;"&gt;for&lt;/span&gt; irá ordenar &lt;span style="font-weight: bold;"&gt;(animais.length – 1 – i)&lt;/span&gt; vezes. Na quantidade de vezes que o vetor é ordenado subtraímos pela quantidade de iterações que será realizada no caso a variável &lt;span style="font-weight: bold;"&gt;i&lt;/span&gt;, porque sabemos que quando uma iteração termina o ultimo elemento já está ordenado.&lt;br /&gt;Na linha 37 verificamos se nome do animal da posição atual do vetor é maior que o nome do próximo animal do vetor, se for maior trocamos os animais de lugar.&lt;br /&gt;Na linha 41 se houve alguma troca de animal, então o vetor ainda não está totalmente ordenado, e a variável de controle é alterada para falso.&lt;br /&gt;Na linha 45 se o vetor estiver ordenado então para a execução do &lt;span style="font-weight: bold;"&gt;for&lt;/span&gt; que controla a quantidade de vezes que o vetor será ordenado.&lt;br /&gt;&lt;br /&gt;Também podemos ordenar os animais pela espécie e depois pelo nome do animal:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TdHDrMmBxF4/SGWdHHZ5vJI/AAAAAAAAACM/e1xS5p5jP7k/s1600-h/bubblesort_07.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_TdHDrMmBxF4/SGWdHHZ5vJI/AAAAAAAAACM/e1xS5p5jP7k/s400/bubblesort_07.jpg" alt="" id="BLOGGER_PHOTO_ID_5216748488950922386" border="0" /&gt;&lt;/a&gt;Na linha 65 verifica se o nome da espécie do animal na posição atual do vetor é maior que o nome da espécie do próximo animal, se for então troca os animais de lugar.&lt;br /&gt;Na linha 74 verifica se o nome da espécie do animal na posição atual do vetor é igual ao nome da espécie do próximo animal, se as espécies forem iguais, então verifica se o nome do animal na posição atual do vetor é maior que o nome do próximo animal, se for maior então troca os animais de lugar no vetor.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Bibliografia&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Estrutura de Dados e Algoritmos em Java – Michal T. Goodrich e Roberto Tamassia&lt;br /&gt;&lt;br /&gt;Algoritmos: Teoria e Prática – Thomas H. Cormen, Charles E. Leiserson, Ronald L.Rivest e Clifford Stein&lt;br /&gt;&lt;br /&gt;Bubble Sort - http://pt.wikipedia.org/wiki/Bubble_sort&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-2500938401193601134?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/2500938401193601134/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=2500938401193601134&amp;isPopup=true' title='6 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/2500938401193601134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/2500938401193601134'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2008/06/bubble-sort-em-java.html' title='Bubble Sort em Java'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_TdHDrMmBxF4/SGWZD_h_FZI/AAAAAAAAABc/RJXmEumqGnM/s72-c/bubblesort_01.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-7147553312657574704</id><published>2008-05-28T01:03:00.006-03:00</published><updated>2008-05-28T01:31:32.736-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pesquisa e Ordenação de Dados em Java'/><title type='text'>Recursividade - O inicio</title><content type='html'>&lt;span style=";font-family:verdana;font-size:85%;"  &gt;Muitas pessoas quando começam a programar tem uma certa dificuldade em entender como funciona um método recursivo, mas creio eu que está dificuldade é mais em relação a “como” funciona a chamada de método.&lt;br /&gt;&lt;br /&gt;Deste modo resolvi fazer mais um post bem simples, para tentar explicar aos iniciantes como funciona uma chamada de método.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:85%;"  &gt;Chamada de método&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;br /&gt;Quando um método precisa utilizar a funcionalidade de outro método, precisamos fazer com que um método chame outro método, no exemplo vamos criar um programa que imprima a soma dos números pares entre 1 e x (onde x é um número inteiro positivo).&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;br /&gt;Vamos criar um método &lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:85%;"  &gt;main()&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt; que é por onde começa a execução do programa, depois vamos criar um método chamado &lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:85%;"  &gt;imprimir()&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt; que irá somar os números pares entre &lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:85%;"  &gt;1 e x&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;a style="font-family: verdana;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_TdHDrMmBxF4/SDzcg1KZt3I/AAAAAAAAABE/PxYpeStSgiQ/s1600-h/Recurs%C3%A3o_2_1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_TdHDrMmBxF4/SDzcg1KZt3I/AAAAAAAAABE/PxYpeStSgiQ/s400/Recurs%C3%A3o_2_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5205277725918082930" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;imagem 1=""  style="font-family:verdana;"&gt;&lt;br /&gt;Na linha 4 foi criado o método &lt;span style="font-weight: bold;"&gt;main()&lt;/span&gt; por onde vai começar a execução do método.&lt;br /&gt;&lt;br /&gt;Na linha 5 vamos imprimir a frase &lt;span style="font-weight: bold;"&gt;"Inicio do programa."&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Na linha 6 é criado um objeto da classe &lt;span style="font-weight: bold;"&gt;ImprimirPares&lt;/span&gt; para podermos chamar o método &lt;span style="font-weight: bold;"&gt;imprimir() &lt;/span&gt;dessa classe.&lt;br /&gt;&lt;br /&gt;Na linha 7 chama o método &lt;span style="font-weight: bold;"&gt;imprimir()&lt;/span&gt; passando o valor &lt;span style="font-weight: bold;"&gt;5&lt;/span&gt; como parâmetro. Quando a execução do programa chega nesta linha o método &lt;span style="font-weight: bold;"&gt;imprimir()&lt;/span&gt; é chamado e a execução do método vai para a linha 12.&lt;br /&gt;&lt;br /&gt;Da linha 12 a 17 temos o algoritmo que soma os números pares.&lt;br /&gt;&lt;br /&gt;Na linha 19 imprime a soma dos números pares entre 1 e 5, ou seja, vai imprimir &lt;span style="font-weight: bold;"&gt;"Soma dos pares: 6"&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Na linha 20 acaba o método &lt;span style="font-weight: bold;"&gt;imprimir()&lt;/span&gt;, agora a execução do programa volta para o método &lt;span style="font-weight: bold;"&gt;main()&lt;/span&gt;, pois foi ele que chamou o método &lt;span style="font-weight: bold;"&gt;imprimir()&lt;/span&gt;, repare também que a execução do método volta para a linha posterior a chamada do método, ou seja, vai para a linha 8.&lt;br /&gt;&lt;br /&gt;Na linha 8 vamos imprimir a frase &lt;span style="font-weight: bold;"&gt;"Fim do programa."&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Na linha 9 acaba o método &lt;span style="font-weight: bold;"&gt;main()&lt;/span&gt; e encerra o programa.&lt;br /&gt;&lt;br /&gt;Quando o programa é encerrado temos a seguinte saída no console:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;Inicio do programa.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;Soma dos pares: 6&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;Fim do programa.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Lembre-se: toda vez que um método termina sua execução, o fluxo de execução do programa volta para a linha posterior a qual ele foi chamada.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O mesmo é valido para quando um método chama ele mesmo, quando a execução do método terminar ele deve voltar para o mesmo método, só preste atenção pois o estado do método pode ser diferente para cada vez que ele se chama.&lt;br /&gt;&lt;br /&gt;Mas o que isso quer dizer?&lt;br /&gt;Os valores das variáveis passadas por parâmetro podem ser diferentes para cada vez que o método se chama, no exemplo abaixo vamos reescrever o método imprimir, mas agora vamos criar seu código de forma recursiva.&lt;br /&gt;&lt;br /&gt;Antes de começar a escrever o código um método recursivo, precisamos pensar qual condição será interrompido a chamada recursiva, ou seja, quando o método precisa parar de se chamar.&lt;br /&gt;&lt;br /&gt;Neste caso ele precisa parar a chamada do método quando terminarmos de percorrer o intervalo de &lt;span style="font-weight: bold;"&gt;1 até x&lt;/span&gt; ou de &lt;span style="font-weight: bold;"&gt;x até 1&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Depois precisamos pensar no objetivo do método que é somar números pares.&lt;br /&gt;&lt;br /&gt;Segue abaixo o código do método recursivo, o método ira somar os números pares de &lt;span style="font-weight: bold;"&gt;x até 1&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;imagem2&gt;&lt;/imagem2&gt;&lt;/imagem&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;a style="font-family: verdana;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_TdHDrMmBxF4/SDzc41KZt4I/AAAAAAAAABM/wIecp58xT3g/s1600-h/Recurs%C3%A3o_2_2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_TdHDrMmBxF4/SDzc41KZt4I/AAAAAAAAABM/wIecp58xT3g/s400/Recurs%C3%A3o_2_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5205278138234943362" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;imagem 1=""  style="font-family:verdana;"&gt;&lt;imagem2&gt;Na linha 7 chama o método &lt;span style="font-weight: bold;"&gt;imprimirRecursivo()&lt;/span&gt; passando o valor &lt;span style="font-weight: bold;"&gt;5&lt;/span&gt; como parâmetro. Quando a execução do programa chega nesta linha o método &lt;span style="font-weight: bold;"&gt;imprimirRecursivo()&lt;/span&gt; é chamado e a execução do método vai para a linha 11.&lt;br /&gt;&lt;br /&gt;Na linha 11 declaramos o método recursivo, &lt;span style="font-weight: bold;"&gt;perceba que agora o método está retornando um número inteiro&lt;/span&gt;, dessa forma podemos calcular o valor da soma dos números pares e retornar este valor.&lt;br /&gt;&lt;br /&gt;Na linha 13 verificamos se o valor de x é igual a 0 (zero), porque não queremos somar nenhum número menor que zero, e a soma do número 0 (zero) não irá alterar a resposta. Então se o valor de x for zero na linha 14 retorna o valor zero.&lt;br /&gt;&lt;br /&gt;Na linha 18 verificamos se o valor de x é par, porque queremos somar apenas os números pares, e se for par então na linha 19 soma o valor de x com o valor do resultado da chamada recursiva do método &lt;span style="font-weight: bold;"&gt;imprimirRecursivo()&lt;/span&gt; passando como parâmetro &lt;span style="font-weight: bold;"&gt;x – 1&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;A linha 23 será executada quando o valor de x for diferente de zero e também quando o número for impar.&lt;br /&gt;&lt;br /&gt;Então teremos as seguintes chamadas de método:&lt;br /&gt;&lt;br /&gt;&lt;imagem3&gt;&lt;/imagem3&gt;&lt;/imagem2&gt;&lt;/imagem&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TdHDrMmBxF4/SDzdDlKZt5I/AAAAAAAAABU/Eina3SXwlPc/s1600-h/Recurs%C3%A3o_2_3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_TdHDrMmBxF4/SDzdDlKZt5I/AAAAAAAAABU/Eina3SXwlPc/s400/Recurs%C3%A3o_2_3.jpg" alt="" id="BLOGGER_PHOTO_ID_5205278322918537106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;imagem 1=""&gt;&lt;imagem2&gt;&lt;imagem3&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;O método &lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:85%;"  &gt;main()&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt; vai chamar o método &lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:85%;"  &gt;imprimirRecursivo(5)&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;, que por sua vez vai chamar o método &lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:85%;"  &gt;imprimirRecursivo(4)&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt; até chegar no &lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:85%;"  &gt;imprimirRecursivo(0)&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;, que irá parar as chamadas recursivas e volta para quem chamou ele passando o resultado da soma recursiva.&lt;br /&gt;&lt;br /&gt;Se quiser também podemos melhorar um pouco este código, por exemplo quando encontrar o número par, chama o método recursivo para &lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:85%;"  &gt;x – 2&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;, pois assim só chamará o método para números pares.&lt;br /&gt;&lt;br /&gt;Falows&lt;/span&gt;&lt;br /&gt;&lt;/imagem3&gt;&lt;/imagem2&gt;&lt;/imagem&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-7147553312657574704?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/7147553312657574704/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=7147553312657574704&amp;isPopup=true' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/7147553312657574704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/7147553312657574704'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2008/05/recursividade-o-inicio.html' title='Recursividade - O inicio'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_TdHDrMmBxF4/SDzcg1KZt3I/AAAAAAAAABE/PxYpeStSgiQ/s72-c/Recurs%C3%A3o_2_1.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-5032952086823350375</id><published>2008-05-12T21:29:00.008-03:00</published><updated>2008-05-12T22:04:48.072-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pesquisa e Ordenação de Dados em Java'/><title type='text'>Recursividade em Java</title><content type='html'>&lt;span style="font-family:arial;"&gt;Recursão é um método de programação no qual um função chama a si mesma.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;A recursão é utilizada quando queremos resolver um subproblema do mesmo tipo menor.&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: arial;"&gt;&lt;li&gt;Se o problema é pequeno&lt;/li&gt;&lt;/ul&gt;&lt;ul style="font-family: arial;"&gt;&lt;ul&gt;&lt;li&gt;Então resolva o problema diretamente&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul style="font-family: arial;"&gt;&lt;li&gt;Senão&lt;/li&gt;&lt;/ul&gt;&lt;ul style="font-family: arial;"&gt;&lt;ul&gt;&lt;li&gt;Reduza o problema em um problema menor, chame novamente o método para o problema menor e volte ao problema original.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;&lt;br /&gt;Chamando um método dentro dele mesmo:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;A chamada de um método para ele mesmo, é igual a chamada de qualquer outro método, exemplo de método recursivo que calcula o fatorial n!:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;O fatorial de um número é dado pela multiplicação de seus antecessores, ou seja, se n é igual 3, então seu fatorial será &lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;3 * 2 * 1&lt;/span&gt;&lt;span style="font-family:arial;"&gt;. O fatorial de &lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;0! (zero)&lt;/span&gt;&lt;span style="font-family:arial;"&gt; é igual a &lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;1&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;O método recursivo fica da seguinte forma:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TdHDrMmBxF4/SCjizopM_HI/AAAAAAAAAAk/xN4Rz7sRo2k/s1600-h/recursao1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_TdHDrMmBxF4/SCjizopM_HI/AAAAAAAAAAk/xN4Rz7sRo2k/s400/recursao1.JPG" alt="" id="BLOGGER_PHOTO_ID_5199655146510679154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Dentro de um método recursivo é muito importante definirmos como será a condição base para que o método pare a recursão, ou seja, como o método vai parar de se chamar.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Neste caso queremos que o método para de chamar ele mesmo, quando o valor que será calculado o fatorial for igual a 0 (zero), pois neste caso sabemos a resposta direta sem ter que fazer cálculos.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Testando o método recursivo:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TdHDrMmBxF4/SCjizopM_II/AAAAAAAAAAs/uI0hvGxVjQ4/s1600-h/recursao2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_TdHDrMmBxF4/SCjizopM_II/AAAAAAAAAAs/uI0hvGxVjQ4/s400/recursao2.JPG" alt="" id="BLOGGER_PHOTO_ID_5199655146510679170" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;Chamando o método fatorial(3), queremos calcular 3 * 2 * 1.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;-&gt; 3 * fatorial(2) &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-family:arial;" &gt;retorna (6)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;-&gt; -&gt; 2 * fatorial(1)&lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-family:arial;" &gt;retorna (2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;-&gt; -&gt; -&gt; 1 * fatorial(0)&lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-family:arial;" &gt;retorna (1)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Explicando o fluxo do programa:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;1) &lt;/span&gt;&lt;span style="font-family:arial;"&gt;O método fatorial recebe o valor de x igual a 3, verifica se x é igual a 0 (zero), como não é igual a 0 (zero), então calcula 3 multiplicado por fatorial(2), neste ponto estamos fazendo uma chamada recursiva.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;&lt;br /&gt;2)&lt;/span&gt;&lt;span style="font-family:arial;"&gt; O método fatorial recebe o valor de x igual a 2, verifica se x é igual a 0 (zero), como não é igual a 0 (zero), então calcula 2 multiplicado por fatorial(1).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;&lt;br /&gt;3)&lt;/span&gt;&lt;span style="font-family:arial;"&gt; O método fatorial recebe o valor de x igual a 1, verifica se x é igual a 0 (zero), como não é igual a 0 (zero), então calcula 1 multiplicado por fatorial(0).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;&lt;br /&gt;4)&lt;/span&gt;&lt;span style="font-family:arial;"&gt; O método fatorial recebe o valor de x igual a 0 (zero), verifica se x é igual a 0 (zero), então para a execução do método e retorna o valor 1.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;&lt;br /&gt;5)&lt;/span&gt;&lt;span style="font-family:arial;"&gt; Volta para o método fatorial(1) na linha 26 e faz a multiplicação de x que vale 1 pelo resultado do fatorial(0) que é 1, ou seja 1 * 1 e retorna o valor 1.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;&lt;br /&gt;6) &lt;/span&gt;&lt;span style="font-family:arial;"&gt;Volta para o método fatorial(2) na linha 26 e faz a multiplicação de x que vale 2 pelo resultado do fatorial(1) que é 1, ou seja 2 * 1 e retorna o valor 2.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;7) &lt;/span&gt;&lt;span style="font-family:arial;"&gt;Volta para o método fatorial(3) na linha 26 e faz a multiplicação de x que vale 3 pelo resultado do fatorial(2) que é 2, ou seja 3 * 2 e retorna o valor 6.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;&lt;br /&gt;8) &lt;/span&gt;&lt;span style="font-family:arial;"&gt;Volta para o método que chamou o fatorial(3), neste caso o método main na linha 7, guarda o resultado do fatorial(3) que é 6, dentro da variável resp, e imprime o resultado da variável resp na linha 8.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Outro exemplo de recursão: Ordem decrescente&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Método recursivo que recebe um número x por parâmetro e imprime seu valor em ordem decrescente até 1.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_TdHDrMmBxF4/SCjkoIpM_JI/AAAAAAAAAA0/bKarklhtzj4/s1600-h/recursao3.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_TdHDrMmBxF4/SCjkoIpM_JI/AAAAAAAAAA0/bKarklhtzj4/s400/recursao3.JPG" alt="" id="BLOGGER_PHOTO_ID_5199657147965439122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Quando usamos recursão, precisamos definir o momento de parada, quando a função não deve ser mais chamada.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;No caso do exemplo anterior queremos que o método não si chame novamente quando o x for igual a 0 (zero), porque queremos apenas os números entre [x ... 1]:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div  style="text-align: center;font-family:arial;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;if&lt;/span&gt;(x == 0)&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;return&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Agora precisamos definir o que nosso método deve fazer, neste caso deve imprimir o valor de x, e em seguida chama a si mesma diminuindo em 1 o valor de x.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;System.&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0); font-weight: bold;font-family:arial;" &gt;out&lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;.println(x);&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;imprimirSequencia(x - 1);&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;A próxima vez que a função &lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;imprimirSequencia(int x)&lt;/span&gt;&lt;span style="font-family:arial;"&gt; for chamada, o valor de x diminui 1 até chegar a 0 (zero) e parar a execução do código.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TdHDrMmBxF4/SCjlf4pM_KI/AAAAAAAAAA8/XDa7l4upQuk/s1600-h/recursao4.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_TdHDrMmBxF4/SCjlf4pM_KI/AAAAAAAAAA8/XDa7l4upQuk/s400/recursao4.JPG" alt="" id="BLOGGER_PHOTO_ID_5199658105743146146" border="0" /&gt;&lt;/a&gt;&lt;span style=";font-family:arial;font-size:13;color:black;"   &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="text-align: justify; font-family: arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=";color:black;" &gt;Bibliografia&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: arial;"&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: arial;"&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Estrutura de Dados e Algoritmos em Java – Michal T. Goodrich e Roberto Tamassia&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify; font-family: arial;"&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Algoritmos: Teoria e Prática – Thomas H. Cormen, Charles E. Leiserson, Ronald L.Rivest e Clifford Stein&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify; font-family: arial;"&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;Recursividade - &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://pt.wikipedia.org/wiki/Recurs%C3%A3o"&gt;&lt;span style=""&gt;http://pt.wikipedia.org/wiki/Recurs%C3%A3o&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify; font-family: arial;"&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Fatorial - &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://pt.wikipedia.org/wiki/Fatorial"&gt;&lt;span style=""&gt;http://pt.wikipedia.org/wiki/Fatorial&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="font-family: arial;"&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Recursão e algoritmos recursivos - &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://www.ime.usp.br/%7Epf/algoritmos/aulas/recu.html"&gt;&lt;span style=""&gt;http://www.ime.usp.br/~pf/algoritmos/aulas/recu.html&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-5032952086823350375?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/5032952086823350375/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=5032952086823350375&amp;isPopup=true' title='6 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/5032952086823350375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/5032952086823350375'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2008/05/recursividade-em-java.html' title='Recursividade em Java'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_TdHDrMmBxF4/SCjizopM_HI/AAAAAAAAAAk/xN4Rz7sRo2k/s72-c/recursao1.JPG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-6556291686771852158</id><published>2008-01-10T23:11:00.000-02:00</published><updated>2008-01-10T23:27:15.209-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>NetBeans 6.0</title><content type='html'>Ae pessoal,&lt;br /&gt;acho que não é nenhuma novidade falar que saiu o NetBeans 6.0... mas queria comentar sobre os tutoriais que tem no site do NetBeans http://www.netbeans.org/kb/ ... tem varios tutoriais sobre varios assuntos não só envolvendo Java.. mas também C/C++, Ruby, SOA, UML, etc...&lt;br /&gt;Os tutoriais são muito bons.. bem facil de seguir e mostra que o NetBeans está cada dia melhor... ainda estou brincando com o NetBeans, mas ja vi varias facilidades nele, principalmente quando vc baixa a versão Full dele tem muitos recursos.&lt;br /&gt;A versão "&lt;a class="bundle_display_name"&gt;Web &amp;amp; Java EE&lt;/a&gt;" já vem com o servidor web GlassFish que também está ficando cada dia melhor, muito facil fazer as aplicações no NetBeans e publica-las no GlassFish... fazer WebServices está bem simples no NetBeans, um next, next, finish,Deploy,Test... pronto... tutoriais de WebService: http://www.netbeans.org/kb/60/websvc/jax-ws.html&lt;br /&gt;Já brinquei um pouco com essa parte de WebServices ... agora vou brincar um pouco com SOA...&lt;br /&gt;&lt;br /&gt;Falows ^-^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-6556291686771852158?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/6556291686771852158/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=6556291686771852158&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/6556291686771852158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/6556291686771852158'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2008/01/netbeans-60.html' title='NetBeans 6.0'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-2688477490986146584</id><published>2007-11-19T10:12:00.000-02:00</published><updated>2007-11-19T10:17:47.075-02:00</updated><title type='text'>Piores codigos java</title><content type='html'>&lt;span style="font-family: verdana;font-size:85%;" &gt;Segue abaixo alguns codigos que eu ja tive a infelicidade de encontrar enquanto fazia manutenção em sistemas.&lt;br /&gt;&lt;br /&gt;Acho que nem o POG permitiria fazer algumas dessas coisas:&lt;br /&gt;&lt;br /&gt;Esse quer ter certeza 2 vezes que o VALOR é realmente S&lt;br /&gt;&lt;br /&gt;if (&lt;span style="font-weight: bold;"&gt;VALOR.equals("S")&lt;/span&gt;){&lt;br /&gt;   if(OUTROVALOR.equals("S")){&lt;br /&gt;     if(&lt;span style="font-weight: bold;"&gt;VALOR.equals("S")&lt;/span&gt;){&lt;br /&gt;&lt;br /&gt;---------------------------&lt;br /&gt;&lt;br /&gt;Esse não ta nem ae para tratar exceção... depois passa o mês inteiro tentando descobri porque não está inserindo um registro no banco de dados.&lt;br /&gt;&lt;br /&gt;try {&lt;br /&gt;    //Executa algumas linhas de codigos onde pode lançar exceção.&lt;br /&gt;} catch (Exception e){&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;----------------------&lt;br /&gt;&lt;br /&gt;Esse é o método ... deita tudo no jeito bunitinho...&lt;br /&gt;&lt;br /&gt;private void &lt;span style="font-weight: bold;"&gt;deixaNoJeito()&lt;/span&gt; throws Exception {&lt;br /&gt;    //...&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;---------------------------&lt;br /&gt;&lt;br /&gt;Esse metodo verificaQuantidade chama outros 2 metodos... da +ou- umas 70 linhas de codigo, incluindo consulta na base de dados... que o servidor gosta de ficar executando porque não tem mais o que fazer.&lt;br /&gt;&lt;br /&gt;long quantidade = this.&lt;span style="font-weight: bold;"&gt;verificaQuantidade&lt;/span&gt;(parametro);&lt;br /&gt;&lt;br /&gt;if (RETORNOCONSULTA.longValue() &gt; quantidade) {&lt;br /&gt;    &lt;span style="font-weight: bold;"&gt;//está comentado todo o codigo interno do if&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;---------------------------&lt;br /&gt;&lt;br /&gt;Isso que é nome de variavel.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;isAlteracaoDoFulano &lt;/span&gt;= true;&lt;br /&gt;&lt;br /&gt;no lugar do Fulano tinha o nome do solicitante da alteração.&lt;br /&gt;&lt;br /&gt;---------------------------&lt;br /&gt;&lt;br /&gt;Esse não deve saber ler codigo, para ver o que aconteçe.&lt;br /&gt;&lt;br /&gt;log.debug("\n\n\n\n\t&lt;span style="font-weight: bold;"&gt;O QUE ACONTECE DAQUI PARA FRENTE?????&lt;/span&gt;");&lt;br /&gt;&lt;br /&gt;---------------------------&lt;br /&gt;&lt;br /&gt;A memoria do servidor é infinita mesmo, mete tudo na sessão.&lt;br /&gt;&lt;br /&gt;putSession(&lt;span style="font-weight: bold;"&gt;"NOME", "NAO ESTA TRAZENDO"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;-----------------------&lt;br /&gt;&lt;br /&gt;Imagina o que uma pessoa que faz esses comentarios pode fazer...&lt;br /&gt;&lt;br /&gt;//&lt;span style="font-weight: bold;"&gt;NAO SEI EXPLICAR O QUE ACONTECEU AQUI&lt;/span&gt;&lt;br /&gt;//&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-family: verdana;font-size:85%;" &gt;caso algo ruim acontecer, descomentar a linha abaixo&lt;/span&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/26794523-2688477490986146584?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/2688477490986146584/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=2688477490986146584&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/2688477490986146584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/2688477490986146584'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2007/11/piores-codigos-java.html' title='Piores codigos java'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-1988070374998076803</id><published>2007-09-19T00:56:00.000-03:00</published><updated>2007-09-19T00:59:40.511-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação Baseada em Componentes'/><title type='text'>Instalando o JBOSS 4.2.1.GA</title><content type='html'>&lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;Ae pessoal,&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;Tutorial simples de como instalar o JBOSS 4.2.1GA.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;1- Esse é o link de onde baixar o JBOSS-4.2.1.GA:&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;a href="http://sourceforge.net/project/showfiles.php?group_id=22866&amp;amp;package_id=16942&amp;amp;release_id=523619"&gt;&lt;span style="font-size:85%;"&gt;http://sourceforge.net/project/showfiles.php?group_id=22866&amp;amp;package_id=16942&amp;amp;release_id=523619&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;Só fazer download do arquivo &lt;strong&gt;jboss-4.2.1.GA.zip&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;2- Como instalar o jboss???&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;O JBOSS não tem nenhum instalador, é somente extrair os arquivos que estão dentro do jboss-4.2.1.GA.zip, para algum diretorio do seu computador.&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;3- Configurando a variavel de ambiente &lt;strong&gt;JBOSS_HOME&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;Antes de rodar o servidor web jboss pela 1 vez, é preciso criar uma variavel de ambiente para que ele saiba onde procurar suas bibliotecas, para criar essa variavel de ambiente siga os seguintes passo:&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;    3.1 - Abra o &lt;strong&gt;Windows Explorer&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;    3.2 - Clique com o botão direito em cima de &lt;strong&gt;Meu Computador&lt;/strong&gt;, e clique em &lt;strong&gt;Propriedades&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;    3.3 - Vai na aba &lt;strong&gt;Avançado &lt;/strong&gt;e clique em &lt;strong&gt;Variaveis de Ambiente&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;    3.4 - Na parte de &lt;strong&gt;Variaveis de Sistema&lt;/strong&gt;, clique em &lt;strong&gt;Novo&lt;/strong&gt;:&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;        3.4.1 - Nome da Variavel: &lt;strong&gt;JBOSS_HOME&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;        3.4.2 - Valor da Variavel: &lt;strong&gt;C:\jboss-4.2.1.GA&lt;/strong&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#ff0000;"&gt;(Essa caminho é onde vc extraiu os arquivos no seu computador).&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;color:#ff0000;"&gt;&lt;span style="color:#000000;"&gt;     3.5 - Clique em OK na tela de Nova Variavel de Ambiente.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;color:#ff0000;"&gt;&lt;span style="color:#000000;"&gt;     3.6 - Clique em OK na tela de Variaveis de Ambiente.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;color:#ff0000;"&gt;&lt;span style="color:#000000;"&gt;4 - Como eu verifico se o JBOSS está funcionando ???&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;color:#ff0000;"&gt;&lt;span style="color:#000000;"&gt;    No seu computador, vá até a pasta onde você extraiu os arquivos do jboss, exemplo C:\jboss.4.2.1.GA.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;color:#ff0000;"&gt;&lt;span style="color:#000000;"&gt;    - Entre no diretorio C:\jboss-4.2.1.GA\bin&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;color:#ff0000;"&gt;&lt;span style="color:#000000;"&gt;    - Execute o arquivo run.bat&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;color:#ff0000;"&gt;&lt;span style="color:#000000;"&gt;    Quando o jboss terminar de startar aparecerá a seguinte mensagem:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;    11:03:22,250 &lt;strong&gt;INFO  [Server] JBoss (MX MicroKernel) [4.2.0.GA (build: SVNTag=JBoss_4_2_0_GA date=200705111440)] Started in&lt;/strong&gt; 47s:938ms&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: verdana;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;Falows&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-1988070374998076803?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/1988070374998076803/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=1988070374998076803&amp;isPopup=true' title='10 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/1988070374998076803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/1988070374998076803'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2007/09/instalando-o-jboss-421ga.html' title='Instalando o JBOSS 4.2.1.GA'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-3928842239631022366</id><published>2007-09-17T22:15:00.000-03:00</published><updated>2007-09-17T22:38:25.181-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scrum'/><title type='text'>Reunião com os clientes.</title><content type='html'>Reunião para definição das estórias iniciais.&lt;br /&gt;&lt;br /&gt;Estória -&gt; São textos curtos de no máximo três sentenças, que descrevem o que o usuário quer que o sistema faça, as estórias são criadas pelos próprios usuários, não necessitando de formalidade. Normalmente as estórias são escritas em cartões de papel mesmo. Em um método tradicional de desenvolvimento de software, as estórias podem ser comparadas aos requisitos.&lt;br /&gt;&lt;br /&gt;Hoje fizemos a reunião com os clientes (no caso nós mesmos da empresa), para definirmos o que queremos que nossa aplicação faça. Partimos de algumas estórias criadas por mim e pela Priscila, mas cada vez que reunimos um pessoal, o escopo aumenta... rs... bom definimos que com essa reunião, teremos o escopo inicial do nosso projeto e caso tenhamos mais alguma funcionalidade que precisa ser implementada, vamos decidir se vale a pena implementar nessa primeira etapa do projeto ou esperar que tenhamos terminado grade parte do projeto para adicionarmos novas funcionalidades.&lt;br /&gt;&lt;br /&gt;Claro que se aparecer alguma funcionalidade nova e que seja imprecindível para o sistema, acho que talvez possa aparecer algumas dessas durante o andamento do projeto, iremos priorizá-las junto as outras funcionalidades. Mas o que tentamos fechar hoje, foi uma gama de funcionalidades que podem suprir grande parte das necessidades esperadas com esse novo sistema.&lt;br /&gt;&lt;br /&gt;Agora com as estórias iniciais já prontas, vamos preparar alguns hands-on (exemplos práticos) com as tecnologias que iremos utilizar nesse projeto, para deixar todos os desenvolvedores meio que no mesmo nível.&lt;br /&gt;&lt;br /&gt;E depois que a equipe estiver um pouco mais nivelada, iremos priorizar as estórias do cliente.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-3928842239631022366?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/3928842239631022366/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=3928842239631022366&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/3928842239631022366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/3928842239631022366'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2007/09/reunio-com-os-clientes.html' title='Reunião com os clientes.'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-6844547171708255907</id><published>2007-09-14T09:02:00.000-03:00</published><updated>2007-09-14T09:04:38.485-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scrum'/><title type='text'>Projeto usando Scrum e XP</title><content type='html'>Esse é um blog que me motivou a criar esse e os futuros posts: &lt;a href="http://mudandoumapequenaempresa.blogspot.com"&gt;Mudando uma pequena empresa&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Então vamos lá...&lt;br /&gt;&lt;br /&gt;Definição dos perfis no projeto:&lt;br /&gt;&lt;br /&gt;Sakurai -&gt; Faz tudo ... rs...  cliente, arquiteto, programador e ajudante de scrum master.&lt;br /&gt;&lt;br /&gt;Priscila -&gt; Analista e scrum master.&lt;br /&gt;&lt;br /&gt;Alguns desses perfis foi nós que nos demos, porque nunca trabalhamos com Scrum então definimos quem seria o Scrum Master, Client e Team, e eu to meio que nós três perfis... rs... nós também nunca fizemos curso nenhum de Scrum ou XP, estamos correndo atrás de material na internet, lendo livros, blogs, assistindo palestras on-line.&lt;br /&gt;&lt;br /&gt;Recentemente fiz a sugestão de criarmos um sistema interno (sabe quando da 5 min que vc fica a toa e viaja nos pensamentos... deu nisso.. rs), que auxiliaria no controle e agilidade de algumas tarefas internas do departamento e minha gerencia aceitou a sugestão, me pedindo para dizer quanto tempo levaria para desenvolver a aplicação.&lt;br /&gt;Lá vai eu pensar... há acho que o sistema tem que fazer isso e aquilo outro e mais isso... bla bla bla... e conversando com a Priscila estipulamos um prazo de desenvolvimento... Pra falar a verdade é um CHUTE e dos grandes... 59 dias úteis utilizando 10 pessoas no projeto.&lt;br /&gt;&lt;br /&gt;Conversando com a gerencia... propus esse prazo... como o sistema é um sistema interno... não tem muito a pressão do prazo de entrega... mas é claro que um dia tem que terminar...&lt;br /&gt;Continuando a conversa fui informado que os desenvolvedores que podem participar do projeto, não podem estar fixos somente nesse projeto... pois todos eles tem um projeto de maior prioridade para o cliente... Maravilha... Quem consegue montar um prazo sem saber quantas pessoas vai ter durante o projeto ??? Simplesmente num da para definir um prazo final... somente estipular algo...&lt;br /&gt;&lt;br /&gt;Mas beleza... acho que sou meio louco mesmo... então conversando com as pessoas que fazem parte e pedindo para que seus lideres de projeto liberem eles um pouco para mim... tivemos uma situação um pouco melhor... 10 desenvolvedores.. sendo que 1 vai participar somente 1 dia + tempo livre (no caso eu), 8 vai participar por 2 dias e 1 vai participar por 4 dias... Mas lembrando que se o trabalho apertar no outro projeto eles param o desenvolvimento...&lt;br /&gt;&lt;br /&gt;Continuando... temos 5 pares de desenvolvedores... isso é outra coisa que ninguém nunca fez foi trabalhar em par (achei a idéia de trabalhar em par boa, porque algumas pessoas não tem um nível alto de conhecimento)... dividimos 2 grupos... um para trabalhar segunda e terça e outro para trabalhar quarta e quinta (Ae pode vir a pergunta.. porque quarta e quinta e não quinta e sexta ? Simples, porque até o fim do ano tem 3 feriados na sexta).&lt;br /&gt;&lt;br /&gt;Ae depois disso, como eu já vinha lendo algumas coisas sobre Scrum e XP... sugeri de usarmos essa metodologia ágil para o desenvolvimento desse projeto.&lt;br /&gt;Blz... Conseguimos os desenvolvedores... meio capenga, mas ta lá... e também conseguimos conversar com algumas pessoas que podem ajudar no levantamento das estórias (também nunca trabalhamos com estórias... somente com montes de requisitos e use cases)... ae juntamos o povo e a Priscila e eu fizemos uma reunião para explicar o que seria o projeto e como seria a metodologia e os métodos ágeis utilizados no projeto.&lt;br /&gt;&lt;br /&gt;Depois disso fui pedir a criação para os ambientes de fontes e base de dados... lá vai o marinheiro de primeira viagem tomar na cabeça... a resposta dos administradores foi: "Traz a arquitetura dos ambientes." ... tomei né... fui de mão abanando... só com idéias... ae usei uma pratica do XP que achei bem interessante... rs... desenhei no papel a arquitetura dos ambientes, tirei uma foto e mandei para eles... rs... Com isso já consegui o repositório para as fontes da aplicação e a solicitação para criar o ambiente de Teste Integrado da aplicação (Servidor Web + Banco de Dados).&lt;br /&gt;&lt;br /&gt;Ontem foi um dia meio que de reuniões informais... peguei algumas... começamos a conversar sobre o projeto... ae expliquei alguns pontos do projeto... e sugestão vem.. sugestão vai... ae nessas de sugestão.. o escopo sempre aumenta... mas pelo menos a aplicação fica mais dinâmica e pode realmente trazer uma economia de tempo grande para o departamento.&lt;br /&gt;&lt;br /&gt;E hoje vou conversar com mais algumas pessoas, para fechar as estorias iniciais do projeto, para fazermos a reunião de planejamento e priorização.&lt;br /&gt;&lt;br /&gt;Algumas conclusões que eu tirei disso tudo:&lt;br /&gt;Comecei meio errado.. se eu vou seguir os padrões do desenvolvimento ágil... primeiro teria que ter me reunido com algumas pessoas envolvidas nos processos que são automatizados pela ferramenta gerada pelo Projeto (isso para criar as estórias)... segundo, conseguir as pessoas que participaram do desenvolvimento para priorizarmos as estórias e ai SIM, definir um prazo talvez mais razoável para a gerencia.&lt;br /&gt;E que esses primeiros dias são realmente importantes, para o sucesso do projeto e vamos começar a fazer direito.&lt;br /&gt;&lt;br /&gt;OBS: Já até comprei a cartolina para fazer o quadro da Sprint... rs... depois posto aqui a foto dele...&lt;br /&gt;&lt;br /&gt;E antes de começar a escrever esse post... me veio uma outra idéia ... vou sugerir uns Hands-on de EJB 3, JPA e JSF ... para tentar nivelar um pouco o conhecimento dos desenvolvedores... espero que eles gostem...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Falows... ^-^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-6844547171708255907?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/6844547171708255907/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=6844547171708255907&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/6844547171708255907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/6844547171708255907'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2007/09/projeto-usando-scrum-e-xp.html' title='Projeto usando Scrum e XP'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-8481975403132711832</id><published>2007-09-10T10:11:00.000-03:00</published><updated>2007-09-10T16:26:13.758-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scrum'/><title type='text'>Scrum</title><content type='html'>Ae pessoal,&lt;br /&gt;esses dias estou estudando um pouco de XP e SCRUM, segue abaixo alguns links uteis.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.implementingscrum.com/"&gt;Implementing Scrum&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.infoq.com/minibooks/scrum-xp-from-the-trenches"&gt;Scrum and XP from de Trenches&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://amagno.blogspot.com/"&gt;aXmagno Blog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.fragmental.com.br/"&gt;Fragmental Blog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.caelum.com.br/caelum/treinamento-pm-81-gerenciamento-de-projetos-de-software-com-scrum.jsp"&gt;Caelum - Scrum&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.improveit.com.br/"&gt;Improve IT&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://queroseragil.wordpress.com/tag/scrum/"&gt;Quero ser Ágil&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dojofloripa.wordpress.com/tag/scrum/"&gt;Coding Dojo Floripa&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://scrum.squarespace.com/"&gt;Scrum - Journal&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.visaoagil.com/"&gt;Visão Ágil&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mudandoumapequenaempresa.blogspot.com/"&gt;Implantando mudança em uma pequena empresa de TI&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://agilethinking.net/blog/category/scrum/"&gt;Agile Thoughts&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Falows&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-8481975403132711832?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/8481975403132711832/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=8481975403132711832&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/8481975403132711832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/8481975403132711832'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2007/09/scrum.html' title='Scrum'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-8788309324607564810</id><published>2007-08-08T10:52:00.000-03:00</published><updated>2007-08-08T13:25:54.376-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação Baseada em Componentes'/><title type='text'>Componente de Software</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana;font-family:Verdana;font-size:85%;"  lang="EN-US" &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-family: verdana;font-family:Verdana;font-size:85%;"  &gt;Um componente é um pedaço reutilizável de software, normalmente criado de forma genérica e independente de sistemas podendo ser um único arquivo ou um conjunto de.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-family: verdana;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;p style="font-family: verdana;" class="MsoNormal"&gt;&lt;span style=";font-size:85%;" &gt;A reutilização de código tem alguns benefícios muito significantes como redução do custo e tempo de desenvolvimento, uma vez que o componente está pronto e testado, caso você precise em outro lugar do software ou em software diferente utilizar a mesma funcionalidade, basta reutilizá-lo novamente.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="font-family: verdana;" class="MsoNormal"&gt;&lt;span style=";font-size:85%;" &gt;Segundo Grady Booch “Um componente é uma parte do sistema que seja não trivial, quase independente e substituível, desempenhando funções claras no contexto de uma arquitetura bem definida. Um componente obedece e provê a realização física de um conjunto de interfaces que especificam alguma abstração lógica.”&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div style="text-align: center;"&gt;&lt;span style="font-family: verdana;font-size:85%;" &gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_TdHDrMmBxF4/RrnLtEBgeUI/AAAAAAAAAAM/6qP-3OpDZ6o/s1600-h/componenteuml.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_TdHDrMmBxF4/RrnLtEBgeUI/AAAAAAAAAAM/6qP-3OpDZ6o/s320/componenteuml.JPG" alt="" id="BLOGGER_PHOTO_ID_5096328428381043010" border="0" /&gt;&lt;/a&gt;Componente UML&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;  &lt;p style="font-family: verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-weight: bold;"&gt;Prós e contras da criação e utilização de componentes:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="font-family: verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size: 10pt;"&gt;Prós:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style=""&gt; &lt;/span&gt;- Reutilização do componente, uma vez criado e homologado ele pode ser utilizado em vários sistemas diferentes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style=""&gt; &lt;/span&gt;- Redução de custo, depois que o componente já foi criado ele é reaproveitado em outros sistemas.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style=""&gt; &lt;/span&gt;- Desenvolvimento em paralelo, no projeto pode ter diversas equipes trabalhando no mesmo projeto e criando componentes separados.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="font-family: verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size: 10pt;"&gt;Contras:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style=""&gt; &lt;/span&gt;- Encontrar o componente certo, encontrar qual parte do sistema que pode ser desenvolvida de forma a ser reaproveitada em outros sistemas ou procurar um componente que tenha qualidade para ser utilizado no seu sistema.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style=""&gt; &lt;/span&gt;- Qualidade do componente, quando você resolve utilizar um componente que não foi desenvolvido pela sua empresa, é preciso testar esse componente para saber se ele vai ser compatível com o seu sistema.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;span style="font-size:85%;"&gt;&lt;span style="font-size: 10pt; font-family: verdana;"&gt;&lt;span style=""&gt; &lt;/span&gt;- Custo de tempo de desenvolvimento, na criação do componente ele precisa ser feito de forma genérica, para que possa ser reaproveitado e isso nem sempre é fácil de fazer.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-8788309324607564810?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/8788309324607564810/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=8788309324607564810&amp;isPopup=true' title='5 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/8788309324607564810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/8788309324607564810'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2007/08/componente-de-software.html' title='Componente de Software'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_TdHDrMmBxF4/RrnLtEBgeUI/AAAAAAAAAAM/6qP-3OpDZ6o/s72-c/componenteuml.JPG' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-4063081101237412044</id><published>2007-07-27T09:55:00.000-03:00</published><updated>2008-01-10T23:27:38.446-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX'/><title type='text'>JavaFX</title><content type='html'>Ae Pessoal,&lt;br /&gt;&lt;br /&gt;Alguns links legais sobre JavaFX:&lt;br /&gt;https://openjfx.dev.java.net/&lt;br /&gt;&lt;br /&gt;Link de instalação do plugin do JavaFX no Netbeans:&lt;br /&gt;https://openjfx.dev.java.net/javafx-nb55-plugin-install.html&lt;br /&gt;&lt;br /&gt;Link com tutorial introdutorio ao JavaFX:&lt;br /&gt;https://openjfx.dev.java.net/Getting_Started_With_JavaFX.html&lt;br /&gt;&lt;br /&gt;Falow ^-^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-4063081101237412044?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/4063081101237412044/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=4063081101237412044&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/4063081101237412044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/4063081101237412044'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2007/07/javafx.html' title='JavaFX'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-6790111007543608189</id><published>2007-04-22T14:32:00.000-03:00</published><updated>2007-07-01T11:35:31.880-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SCWCD 1.4'/><title type='text'>Passei na SCWCD 1.4</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: verdana;"&gt;    Aeeeeeee... mais uma... passei na SCWCD 1.4 com 73% ... to meio atrasado.. rs... passei na prova no dia 30/03/07... mas to meio sem tempo para escrever aqui no blog.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    Vamos lá.. eu tinha começado a estudar em setembro do ano passado.. mas ae devido ao serviço e a pós, parei de estudar para a certificação... voltei a estudar no final de fevereiro e peguei firme durante 1 mês, estava estudando de 2 a 3 horas por dia (isso fora os dias que eu tinha aulas na pós)... Li o livro Head First Servlet e JSP, esse livro é bem didatico... eu li ele apenas 1 vez e fiz algumas anotações... depois fiz alguns simulados que encontrei na internet... e no final fiz o simulado que vem no livro HFSJ, o simulado do livro é mais dificil que a prova.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    Meu score foi 73% não foi muito, mas acho que por ter estudado apenas 1 mês foi uma nota boa, se tive-se estudado mais, concerteza a nota teria sido bem melhor... &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    A prova em si não é muito dificil, não tem pegadinhas como a de programador... caiu um pouco de tudo que pede a prova, recomendo entender todas as tags do web.xml e entenda bem como funciona a criação de tags personalizadas.&lt;br /&gt;&lt;br /&gt;    Site com os requisitos da prova: &lt;a href="http://www.sun.com/training/catalog/courses/CX-310-081.xml"&gt;http://www.sun.com/training/catalog/courses/CX-310-081.xml&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    Falows ^-^&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-6790111007543608189?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/6790111007543608189/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=6790111007543608189&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/6790111007543608189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/6790111007543608189'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2007/04/passei-na-scwcd-14.html' title='Passei na SCWCD 1.4'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-8242412364069760802</id><published>2007-02-14T20:08:00.000-02:00</published><updated>2007-07-01T11:34:23.943-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JPA'/><title type='text'>JPA - Criando uma Entity</title><content type='html'>Vou começar a postar alguns pequenos exemplos de como usar o JPA, neste exemplo vou mostrar como cria uma Entity.&lt;br /&gt;&lt;br /&gt;Uma Entity é um objeto de dominio que foi ou será persitido no banco de dados (BD), vc pode pensar na entity como uma coluna de uma tabela do BD.&lt;br /&gt;&lt;br /&gt;Essa Entity esta representando a seguinte tabela:&lt;br /&gt;&lt;br /&gt;Tabela: Usuario&lt;br /&gt;&lt;br /&gt;create table Usuario {&lt;br /&gt;    id         number(10)    not null,&lt;br /&gt;    nome       varchar2(100) not null,&lt;br /&gt;    dataNasc   date          not null,&lt;br /&gt;    email      varchar2(150) not null,&lt;br /&gt;    ativo      number(1)     not null,&lt;br /&gt;    comentario varchar2(200),&lt;br /&gt;    constraint pk_usuario primary key (id)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Classe: Usuario&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;import &lt;/span&gt;java.io.Serializable;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;import &lt;/span&gt;java.util.Date;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;import static&lt;/span&gt; javax.persistence.GenerationType.&lt;span style="color: rgb(51, 51, 255);"&gt;SEQUENCE&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;import &lt;/span&gt;javax.persistence.Column;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;import &lt;/span&gt;javax.persistence.Entity;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;import &lt;/span&gt;javax.persistence.GeneratedValue;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;import &lt;/span&gt;javax.persistence.Id;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;import &lt;/span&gt;javax.persistence.SequenceGenerator;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//Uma Entity não pode ser final.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//Normalmente sua entity implementa Serializable, para que ele possa &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//  ser trafegado em diversas camadas do seu sistema.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;@Entity&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;@SequenceGenerator&lt;/span&gt;(name = &lt;span style="color: rgb(51, 51, 255);"&gt;"USU_SEQ"&lt;/span&gt;, sequenceName = &lt;span style="color: rgb(51, 51, 255);"&gt;"USUARIO_SEQ"&lt;/span&gt;, initialValue = 1, allocationSize = 1)&lt;br /&gt;public class Usuario implements Serializable {&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  //Seguindo o post anterior, criei uma sequence para gerar o id.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  //Toda Entity precisa ter uma chave primaria, e a anotação @Id &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  //  serve para definir uma simples chave primaria.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  //Depois vou mostrar como criar chave composta.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  @Id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  @GeneratedValue&lt;/span&gt;(strategy = &lt;span style="color: rgb(51, 51, 255);"&gt;SEQUENCE&lt;/span&gt;, generator = &lt;span style="color: rgb(51, 51, 255);"&gt;"USU_SEQ"&lt;/span&gt;)&lt;br /&gt;  private Long id;&lt;br /&gt;&lt;br /&gt;  private String nome;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  //Vc pode ter um atributo no Entity que não possui o mesmo nome na coluna da tabela.&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(153, 153, 153);"&gt;@Column&lt;/span&gt;(name = &lt;span style="color: rgb(51, 51, 255);"&gt;"dataNasc"&lt;/span&gt;)&lt;br /&gt;  private Date dataNascimento;&lt;br /&gt;&lt;br /&gt;  private String email;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  //Em alguns BD um boolean é representado por um number de 1 posição.&lt;/span&gt;&lt;br /&gt;  private Boolean ativo;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(153, 153, 153);"&gt;@Column&lt;/span&gt;(nullable = &lt;span style="color: rgb(153, 51, 153);"&gt;true&lt;/span&gt;)&lt;br /&gt;  private String comentario;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  // Uma Entity precisa ter um construtor sem argumentos.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  // A Entity também pode ter outros contrutores.&lt;/span&gt;&lt;br /&gt;  public Usuario() {&lt;br /&gt;    this.ativo = new Boolean(&lt;span style="color: rgb(153, 51, 153);"&gt;true&lt;/span&gt;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  // Precisa ter todos os metodos get e set dos atributos, e eles devem ser public ou protected.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  // getters e setters.&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Por padrão todos os nomes dos atributos declarados no Entity correspondem ao mesmo nome da coluna da tabela do BD.&lt;br /&gt;&lt;br /&gt;Se vc precisar adicionar algum campo na sua Entity, mas vc não quer que esse campo seje persistido no BD, então vc precisa colocar a anotação @Transient no atributo.&lt;br /&gt;&lt;br /&gt;No proximo exemplo vou mostrar alguns relacionamentos entre Entity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-8242412364069760802?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/8242412364069760802/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=8242412364069760802&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/8242412364069760802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/8242412364069760802'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2007/02/jpa-criando-uma-entity.html' title='JPA - Criando uma Entity'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-116528883616057402</id><published>2006-12-05T01:11:00.000-02:00</published><updated>2007-07-01T11:34:51.733-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JPA'/><title type='text'>Usando uma Sequence para preencher o ID no objeto Entity do JPA.</title><content type='html'>&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;Esses dias estava mexendo com JPA e encontrei algumas coisas legais e fácil de fazer.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;Nesse exemplo vou mostrar como atribuir uma Sequence a um ID (você pode atribuir o valor da sequence em qualquer atributo).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;Exemplo:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;              &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;@Entity&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;@Table&lt;/span&gt;(name = &lt;span style="color: rgb(51, 51, 255);"&gt;“USUARIO”&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;@SequenceGenerator&lt;/span&gt;(name = &lt;span style="color: rgb(51, 51, 255);"&gt;"USU_SEQ"&lt;/span&gt;, sequenceName = &lt;span style="color: rgb(51, 51, 255);"&gt;"USUARIO_SEQ"&lt;/span&gt;, initialValue = &lt;span style="color: rgb(51, 51, 255);"&gt;1&lt;/span&gt;, allocationSize = &lt;span style="color: rgb(51, 51, 255);"&gt;1&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;public class Usuario {&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;@Id&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;@GeneratedValue&lt;/span&gt;(strategy = SEQUENCE, generator = &lt;span style="color: rgb(51, 51, 255);"&gt;”USU_SEQ”&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;private Long id;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;span style=""&gt;   &lt;/span&gt;private String nome;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;&lt;o:p&gt;  &lt;/o:p&gt;&lt;span style=""&gt;  &lt;/span&gt;// getters and setters&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;O SequenceGenerator vai indicar qual a sequence do banco, qual o valor inicial e a quantidade que essa sequence é incrementada.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;&lt;span style="font-weight: bold;"&gt;name                   &lt;/span&gt;= “USU_SEQ” -&gt; Apelido da Sequence.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sequenceName &lt;/span&gt;= “USUARIO_SEQ” -&gt; Nome da sequence do Banco de Dados.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;initialValue         &lt;/span&gt;= 1 -&gt; Valor inicial da sequence.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;allocationSize    &lt;/span&gt;= 1 -&gt; A quantidade que será incrementada na sequence, o default é 50.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;O GeneratedValue nesse caso está usando a estratégia de SEQUENCE então ele vai procurar a sequence que tem o apelido “USU_SEQ” e faz um consulta no banco para pegar seu resultado:&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;SELECT USUARIO_SEQ.NEXTVAL FROM DUAL;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;strategy    &lt;/span&gt;= SEQUENCE -&gt; Estratégia usada.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;generator &lt;/span&gt;= “USU_SEQ” -&gt; Apelido da sequence.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;Para testar:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;// Com a annotation &lt;span style="color: rgb(102, 102, 102);"&gt;@PersistenceContext&lt;/span&gt; o container que cria um EntityManager.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;@PersistenceContext&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;EntityManager manager = null;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;// Cria uma Entity Usuario&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;Usuario usuario = new Usuario();&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;Usuário.setNome(&lt;span style="color: rgb(51, 51, 255);"&gt;“Sakurai”&lt;/span&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;// grava a entidade no banco de dados.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;manager.persist(usuario);&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;br /&gt;Antes de gravar no banco, o GeneratedValue vai preencher o id com o próximo valor da sequence.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;Exemplo:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;Tabela USUARIO&lt;br /&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;ID&lt;span style=""&gt;            &lt;/span&gt;NOME&lt;br /&gt;1&lt;span style=""&gt;             &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;“Sakurai”&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;br /&gt;Bibliografia:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;span style="font-size: 10pt; font-family: Verdana;"&gt;Especificação Java Persistence API – &lt;a href="http://java.sun.com/products/ejb/docs.html"&gt;http://java.sun.com/products/ejb/docs.html&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-116528883616057402?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/116528883616057402/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=116528883616057402&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/116528883616057402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/116528883616057402'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2006/12/usando-uma-sequence-para-preencher-o.html' title='Usando uma Sequence para preencher o ID no objeto Entity do JPA.'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-116157574938412237</id><published>2006-10-23T00:47:00.000-03:00</published><updated>2007-07-01T11:35:58.604-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SCBCD 5.0'/><title type='text'>Certificação SCBCD 5.0 Beta</title><content type='html'>A partir do dia 24 de novembro já podem se cadastrar para fazer de gratis a certificação &lt;span style="font-weight: bold;"&gt;Sun Certified Business Component Developer 5.0 Beta&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sun.com/training/certification/java/beta_scbcd.xml"&gt;http://www.sun.com/training/certification/java/beta_scbcd.xml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Os exames podem ser feitos entre os dias 8 de dezembro a 2 de janeiro.&lt;br /&gt;&lt;br /&gt;Os detalhes do conteúdo da prova:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sun.com/training/certification/java/beta_objectives_scbcd.html"&gt;http://www.sun.com/training/certification/java/beta_objectives_scbcd.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-116157574938412237?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/116157574938412237/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=116157574938412237&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/116157574938412237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/116157574938412237'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2006/10/certificao-scbcd-50-beta.html' title='Certificação SCBCD 5.0 Beta'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-115896826804087189</id><published>2006-09-22T20:35:00.000-03:00</published><updated>2006-09-22T20:37:48.053-03:00</updated><title type='text'>IDE</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: verdana;"&gt;Muitos quando estão começando não sabem nem o que é uma IDE... pensam assim... legal vou instalar o Eclipse e ja saio programando... acham que a IDE é a linguagem Java... que só consegue programar em Java usando uma unica IDE...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;IDE (Integrated Development Environment) é uma ferramenta que te da um ambiente de desenvolvimento integrado... &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Antes de você instalar uma IDE é preciso que você instale o Java... Precisa ficar claro que Java é a linguagem de programação que pode ser usada em diversas IDE's.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Quando começei a aprender Java eu usava o super NotePad do Windows... porque ??? Se ele num faz identação, não da atalho de codigo, num faz trucentas coisas que as IDE's fazem para você ??? Por isso mesmo .. porque num faz tudo isso.. tem que fazer na mão... ae aprendi legal a syntax ... a corrigir os erros de compilação ... ter que olhar no JavaDoc para saber qual método usar...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Ae resolvi usar algumas IDE's ... no começo eu usava o Gel (que infelizmente teve sua ultima release em 2004 e parou) uma IDE bem facil ... também usei o BlueJ que também é bem simples.. mostrando até um diagrama UML das classes...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Depois fiz um curso da linguagem Java.. onde so aprendi a arrastar e soltar do JBuilder ... É um IDE que faz um monte de coisa para você .. só que é pesado pra caramba...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Depois usei um pouco de JDeveloper para fazer aplicações web... a versão que eu cheguei a usar.. não fazia muita coisa para o desenvolvedor... e meio pesado também...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Usei o Net Beans para fazer aplicações Desktop, gosto dele... é bem legal, faz bastante coisa pelo desenvolvedor... e não é tão pesado...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Agora para fazer aplicações Web... gosto mesmo é do Eclipse... da para adicionar alguns plugins... e fica bom de programar... facilita bastante o dia a dia... não é muito pesado (fica mais pesado se vc entupir ele de plugin)...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;E na pós estou usando o RAD para fazer as aplicações web... Esse faz muitas coisas pelo desenvolvedor... facilita bastante a vida... e tem diversos recursos como visualização grafica de xmls... só tem um problema... vc precisa de no minimo 1GB de memoria na tua maquina senão vc passa raiva porque é bem pesado...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;E IDE acaba sendo de gosto... cada um tem o seu...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Falows ^-^&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-115896826804087189?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/115896826804087189/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=115896826804087189&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/115896826804087189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/115896826804087189'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2006/09/ide.html' title='IDE'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-115741899818990719</id><published>2006-09-04T22:11:00.000-03:00</published><updated>2007-07-01T11:35:31.881-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SCWCD 1.4'/><title type='text'>SCWCD 1.4</title><content type='html'>Ae pessoal...&lt;br /&gt;Chegou hoje meu certificado da prova SCJP 5 + cartão +  broche...&lt;br /&gt;&lt;br /&gt;Começei a estudar para o SCWCD 1.4 ... estou lendo o livro Head First - Servlet &amp;amp; JSP... pelo que ja li do livro achei ele bem legal.. bem didatico...&lt;br /&gt;&lt;br /&gt;Falows&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-115741899818990719?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/115741899818990719/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=115741899818990719&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/115741899818990719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/115741899818990719'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2006/09/scwcd-14.html' title='SCWCD 1.4'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-115669532048196149</id><published>2006-08-27T12:39:00.000-03:00</published><updated>2006-08-27T13:15:20.493-03:00</updated><title type='text'>Como eu aprendi Java.</title><content type='html'>Como tudo começou .. rs ... vou contar como eu aprendi java.. e como entrei no mercado de trabalho...&lt;br /&gt;&lt;br /&gt;Sempre gostei de programação ... desde quando aprendi a programar em Pascal na facul.. ae procurando estagio... mandei email para trucentas empresas... e fui consegui um estagio em uma consultoria ... inicialmente era para trabalhar com vb + oracle... até que ... a equipe que eu estava pegou um projeto para fazer em Java... Maravilha... nenhum dos programadores conhece Java ... vamos fazer um curso... legal ... bom no curso o que eu aprendi ... usar o JBuilder e JSP (no bloco de notas) ... JSP foi bem basicão mesmo...tipo aquelas coisa de vc fazer um monte de while.. for ... if... tudo dentro do jsp... (não façam isso em casa...) ... mas até ae blz.. pra quem num sabia nada mesmo... aprendi a jogar um jogo de corrida nos (water break) .. rs fiquei 2 semanas treinando e não consegui vencer o professor do curso... mas isso é outra historia...&lt;br /&gt;Legal num sabia nada.. agora se mexer no JBuilder + JSP (isso em 2 semanas) ... voltamos para consultoria... agora vamos usar o JDeveloper para programar java.. 2xMaravilha... falaram que era igual JDeveloper + JBuilder... pega alguém que num sabe nada.. e da para ver se ele consegue se virar... vai pastar até falar chega...&lt;br /&gt;E como é a sintax mesmo do java... sei lá... rs... eu arrastava os botões do JBuilder e ele montava o codigo para mim... legal.. parecia que eu tava programando VB...&lt;br /&gt;Blz... ae na facul ... procurei algumas apostilas de Java na Internet... porque na consultoria que eu tava eu não tinha acesso a Internet... (isso eu é o que eu chamo de andar para trás)... blz.. peguei umas 2 apostilas li elas... blz.. agora ja sei um pouco da linguagem... não satisfeito .. comprei o livro Big Java (recomendo... aprendi bastante com ele)...&lt;br /&gt;Maravilha.. chegou a hora de começar o projeto Java... legal o que vamos usar ??? Eclipse + VSS + Struts + Oracle... (muitas empresas usam isso) ... 3xMaravilha... Nunca usei o Eclipse ... vai lá saber o que é esse tal de VSS ... e que treco é esse de Struts é de comer ??? ... rs&lt;br /&gt;Bom o Eclipse eu recebi um projetinho base.. coloquei nele.. e fui fuçando e aprendi a mexer nele rapidão ... VSS foi rapidão... check in + check out ("Boas Praticas" - se alguém usar VSS... coloque comentario quando vc der o Check in + Check out)   ... Oracle blz... Struts... que bixo de sete cabeça e esse... o que é Framework ??? la vai eu comprar mais um livro "Struts em ação" ... depois de corrigir a maioria das erratas do livro... começei a ler ele.. li ele inteiro .. num entendi quase nada... mas blz... agora vamos fazer o projeto... me explicaram +ou- como o Struts funcionava na pratica... ae começei a entender o que eu tinha lido... e durante o projeto .. li + 1 vez o livro do Struts... ae sim aprendi com funcionava.&lt;br /&gt;&lt;br /&gt;Agora que eu ja sabia tudo isso... fui ter aula de Java na facul ... quase durmi na aula... rs&lt;br /&gt;&lt;br /&gt;Bom foi assim que tudo começou ... a partir dai começei a procurar + assuntos relacionados a Java na internet... recomendo o uso dos foruns ...&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/26794523-115669532048196149?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/115669532048196149/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=115669532048196149&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/115669532048196149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/115669532048196149'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2006/08/como-eu-aprendi-java.html' title='Como eu aprendi Java.'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-115669306441863534</id><published>2006-08-27T12:18:00.000-03:00</published><updated>2006-08-27T12:37:44.446-03:00</updated><title type='text'>Mercado de Trabalho Java</title><content type='html'>Toda hora tem alguém falando... olha o mercado de trabalho com Java está em alta... não tem pessoal qualificado para trabalhar com Java... ta dificil achar alguém com o perfil legal...&lt;br /&gt;Ae resolvi fazer uma pequena pesquisa.. atualizei meu curriculo no &lt;a href="http://www.apinfo.com"&gt;Apinfo&lt;/a&gt; e apenas adicionei que tinha SCJP 5... fiz isso no sabado a tarde... na segunda as 8:30 me ligaram falando que tinha pego meu curriculo la e queriam marcar uma entrevista... achei legal... foi algo bem rapido ... rs... ae até o fim da semana recebi 5 ligações para fazer entrevista...&lt;br /&gt;&lt;br /&gt;Conclusão: Parece que o mercado está realmente precisando de profissionais Java... lembro que antigamente eu mandava email com meu curriculo para tudo quanto era empresa... hj o mercado está mudando ... as empresas estão indo atrás dos profissionais que precisam...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-115669306441863534?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/115669306441863534/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=115669306441863534&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/115669306441863534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/115669306441863534'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2006/08/mercado-de-trabalho-java.html' title='Mercado de Trabalho Java'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-115524801459209043</id><published>2006-08-10T18:57:00.000-03:00</published><updated>2007-07-01T11:37:17.406-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SCJP 5'/><title type='text'>Passei SCJP 5.0</title><content type='html'>Aeeeeeee... passei na SCJP 5.0 ... acertei 79% da prova... ^-^&lt;br /&gt;&lt;br /&gt;Fazia tempo que eu estava querendo tirar a certificação, mas sempre tinha algo atrapalhando ... ou tinha a facul... ou tinha que trabalhar até mais tarde no serviço... ou me dava preguiça ... rs ... mas ae fui enrolando... começava a estudar parava.. voltava.. parava...&lt;br /&gt;Ae nesse ultimo mês estudei um pouco mais fiz alguns simulados conforme o post anterior e passei ^-^&lt;br /&gt;&lt;br /&gt;Fiz a prova em inglês, caiu um pouco de tudo... pricipalmente thread...  minha prova começou com thread... pra me desanimar... mas no meio da prova começou a ficar mais facil.... odeio drag in drop.. o coisa chata é ficar preenchendo as lacunas para montar codigo...&lt;br /&gt;&lt;br /&gt;Livros que eu li:&lt;br /&gt;Quando começei estudar era para a versão 1.4 então li os livros:&lt;br /&gt;Certificação Sun para Programadores e Desenvolvedores Java 2 - Guia de Estudos Exames 310-035 e 310-027&lt;br /&gt;Guia de Certificação em Java - Exame CX-310-035&lt;br /&gt;&lt;br /&gt;Ae resolvi fazer para a versão 5, então li + esses livros para pegar as novidades:&lt;br /&gt;Certificação Sun para Programador Java 5 - Exame 310-055&lt;br /&gt;Certificação Java 5 - Guia Preparatório Exame CX-310-055&lt;br /&gt;&lt;br /&gt;Hj minha mochila ficou até mais leves... rs ... emprestei todos os livros para amigos que também querem tirar a certificação... :]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-115524801459209043?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/115524801459209043/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=115524801459209043&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/115524801459209043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/115524801459209043'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2006/08/passei-scjp-50.html' title='Passei SCJP 5.0'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-115517558443767508</id><published>2006-08-09T22:53:00.000-03:00</published><updated>2007-07-01T11:37:17.406-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SCJP 5'/><title type='text'>Simulados SCJP 5</title><content type='html'>Essas são as % que estou tirei nos simulados que fiz:&lt;br /&gt;&lt;br /&gt;Do livro Certificação Java 5&lt;br /&gt;Simulado 1 -&gt; 67%&lt;br /&gt;Simulado 2 -&gt; 70%&lt;br /&gt;Simulado 3 -&gt; 68%&lt;br /&gt;&lt;br /&gt;Whizlabs SCJP 5.0&lt;br /&gt;pelo menos na versão demo estou bem... rs&lt;br /&gt;&lt;br /&gt;No examulator: http://www.examulator.com/phezam/login.php&lt;br /&gt;acertei 79%&lt;br /&gt;&lt;br /&gt;Ae pra desencargo resolvi fazer o simulado oficial da Sun e ae começei a fazer e reparei que era o mesmo simulado que o 3º simulado do livro Certificação Java 5, até a ordem das perguntas era a mesma (unica diferença é que no livro as perguntas estão em português e tem 2 perguntas a mais que o simulado da Sun) ... o dinheiro jogado fora ... fazer pela 2º vez o mesmo simulado... tirei 81%.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;E ... amanha terei uma boa ou má noticia, pois marquei a prova SCJP 5 para amanha (quinta) de manhã...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-115517558443767508?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/115517558443767508/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=115517558443767508&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/115517558443767508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/115517558443767508'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2006/08/simulados-scjp-5.html' title='Simulados SCJP 5'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-115498203511398686</id><published>2006-08-07T17:19:00.000-03:00</published><updated>2007-07-01T11:37:17.406-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SCJP 5'/><title type='text'>Certificação Java 5</title><content type='html'>Comentário sobre o livro Certificação Java 5 de Roberto Rubinstein Serson.&lt;br /&gt;Acabei de ler o livro, quero dizer fazer as mais de 500 questões do livro, esse livro é para quem já conhece alguma coisa da linguagem e está querendo testar seu conhecimento, pois tem pouca teoria.&lt;br /&gt;Em cada capitulo é um pequeno resumo sobre o tópico e depois uma serie de perguntas, grande parte dessas perguntas não é possível responder com a teoria explicada no resumo.&lt;br /&gt;Gostei do livro só pela quantidade de exercícios, mais de 500 e das explicações das respostas dos exercícios (mas somente das respostas dos exercícios de capítulos, porque a explicação dos simulados é muito fraco).&lt;br /&gt;&lt;br /&gt;Durante a leitura encontrei alguns erros nos resumos e exercícios. Exemplo:&lt;br /&gt;Na pagina 226 - 1º parágrafo está escrito:&lt;br /&gt;&lt;br /&gt;"25. A interface Comparable define o método compare(Object o1, Object o2) que compara dois objetos..."&lt;br /&gt;&lt;br /&gt;A interface Comparable define um único metodo compareTo(T o).&lt;br /&gt;&lt;br /&gt;O correto nessa frase seria:&lt;br /&gt;&lt;br /&gt;"25. A interface Comparator define o método compare(Object o1, Object o2) que compara dois objetos..."&lt;br /&gt;&lt;br /&gt;No livro onde deveria ter a palavra default foi substituída por -padrao.&lt;br /&gt;&lt;br /&gt;Poucos exercícios têm erro no código de forma que o código não compila, e quando vc lê a explicação está explicando o código funcionando corretamente.&lt;br /&gt;Sem contar que algumas perguntas são possíveis encontrar na Internet idênticas as do livro. (Quem tem o livro baixa a versão trial do Whizlabs SCJP 5.0 que vai encontrar algumas perguntas idênticas as do livro (a única diferença é que no Whizlabs a pergunta ta em inglês e no livro está em português)).&lt;br /&gt;&lt;br /&gt;Em resumo o livro é razoável, é uma referência para você poder treinar seus conhecimentos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-115498203511398686?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/115498203511398686/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=115498203511398686&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/115498203511398686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/115498203511398686'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2006/08/certificao-java-5.html' title='Certificação Java 5'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-115236105985537295</id><published>2006-07-08T09:16:00.000-03:00</published><updated>2007-07-01T11:37:17.407-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SCJP 5'/><title type='text'>+ Java 5</title><content type='html'>Achei mais alguns mocks Java 5&lt;br /&gt;&lt;br /&gt;Esse é um mock bem legal, tem bastantes perguntas:&lt;br /&gt;&lt;a href="http://www.examulator.com/phezam/login.php"&gt;http://www.examulator.com/phezam/login.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;E esse é um mais pequeno só sobre Enums&lt;br /&gt;&lt;a href="http://www.ejavaguru.com/scjp5freemockexam.php"&gt;http://www.ejavaguru.com/scjp5freemockexam.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-115236105985537295?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/115236105985537295/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=115236105985537295&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/115236105985537295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/115236105985537295'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2006/07/java-5.html' title='+ Java 5'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-115232752766976983</id><published>2006-07-07T23:54:00.000-03:00</published><updated>2007-07-01T11:37:17.407-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SCJP 5'/><title type='text'>Sites Java 5</title><content type='html'>Esses dias ando meio enrolado sem tempo para publicar e to no relaxo para estudar para certificação, mas esses dias procurei alguns sites sobre Java 5, achei alguns bem interessantes e até alguns pequenos mocks de java 5...&lt;br /&gt;&lt;br /&gt; http://java.sun.com/reference/tigeradoption/techtips.html&lt;br /&gt;http://www.javabeat.net/javabeat/scjp5/index.php&lt;br /&gt;http://java.boot.by/scjp-tiger/&lt;br /&gt;http://www.javaworld.com/javaworld/jw-04-2004/jw-0426-tiger1.html&lt;br /&gt;http://www.javaworld.com/javaworld/jw-06-2004/jw-0607-tiger2.html&lt;br /&gt;&lt;br /&gt;Depois se encontrar mais algum site legal eu coloco aqui.&lt;br /&gt;&lt;br /&gt;Falows ^-^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-115232752766976983?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/115232752766976983/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=115232752766976983&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/115232752766976983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/115232752766976983'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2006/07/sites-java-5.html' title='Sites Java 5'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-114782623650957335</id><published>2006-05-16T21:33:00.000-03:00</published><updated>2007-07-01T11:37:17.407-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SCJP 5'/><title type='text'>Novidade Java 5 – Autoboxing</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Mais uma novidade no java são as conversão de boxing e unboxing, você ta cansado de ficar fazendo um monte de conversões para usar primitivos e wrappers, essa nova facilidade do java vai te ajudar.&lt;br /&gt;Exemplo: para você usar alguma das classes de Collection, você só pode usar Objetos, nada de primitivos:&lt;br /&gt;  // Antes do autoboxing você precisava fazer +ou- isso.&lt;br /&gt;  HashMap hm = new HashMap();&lt;br /&gt;  hm.put(new Integer(3), "Rodolfo");&lt;br /&gt;  hm.put(new Integer(2), "Ricardo");&lt;br /&gt;  hm.put(new Integer(1), "Rafael");&lt;br /&gt;&lt;br /&gt;  // Agora você pode fazer assim:&lt;br /&gt;  HashMap hm2 = new HashMap();&lt;br /&gt;  hm2.put(3, "Rodolfo");&lt;br /&gt;  hm2.put(2, "Ricardo");&lt;br /&gt;  hm2.put(1, "Rafael");&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Boxing Conversion&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;O boxing é a conversão de tipo primitive para classes wrappers correspondentes, exemplo:&lt;br /&gt;&lt;br /&gt;Boolean a = true;&lt;br /&gt;Byte b = 1;&lt;br /&gt;Character c = 'c';&lt;br /&gt;Short s = 1;&lt;br /&gt;Integer i = 1;&lt;br /&gt;Long l = 1L;&lt;br /&gt;Float f = 1.0F;&lt;br /&gt;Double d = 1.0;&lt;br /&gt;&lt;br /&gt;OBS: um problema que temos é você querer converter um primitivo para o wrapper não correspondente, exemplo:&lt;br /&gt;  Long l2 = 10; // isso num funciona, por padrão o números sem casa decimal é int.&lt;br /&gt;Você precisa fazer o casting ou colocar a letra L ou l no final do numero:&lt;br /&gt;  Long l2 = (long) 10;&lt;br /&gt;  Long l3 = 10L;&lt;br /&gt;  Long l4 = 10l;&lt;br /&gt;&lt;br /&gt;Isso também não funciona:&lt;br /&gt;short s = 10;&lt;br /&gt;byte b = 5;&lt;br /&gt;&lt;br /&gt;Integer i1 = s; // Erro de compilação&lt;br /&gt;Integer i2 = b; // Erro de compilação&lt;br /&gt;int a = s; // Assim funciona por causa do casting implícito.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Você pode usar boxing também nos parâmetros de métodos e tipo de retorno, exemplo:&lt;br /&gt;&lt;br /&gt;public class TestandoAutoboxing {&lt;br /&gt;  public static void main(String[] args) {&lt;br /&gt;&lt;strong&gt;    int x = 10;&lt;br /&gt;    int y = 20;&lt;/strong&gt;&lt;br /&gt;    // Chamo método calculo passando 2 primitivos int&lt;br /&gt;    // que são convertido para Integer automaticamente.&lt;br /&gt;    // Retorna um atributo long que é convertido para o wrapper Long&lt;br /&gt;    Long lo = calculo(&lt;strong&gt;x, y&lt;/strong&gt;);&lt;br /&gt;    System.out.println(lo);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public static long calculo (&lt;strong&gt;Integer a, Integer b&lt;/strong&gt;) {&lt;br /&gt;    return a + b;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Unboxing conversion&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;A conversão unboxing é quando você quer converter o valor de um objeto para seu correspondente tipo primitivo.&lt;br /&gt;Exemplo:&lt;br /&gt;  boolean a = new Boolean("True");&lt;br /&gt;  byte b = new Byte("1");&lt;br /&gt;  char c = new Character('c');&lt;br /&gt;  short s = new Short((short)1);&lt;br /&gt;  int i = new Integer(1);&lt;br /&gt;  long l = new Long(1);&lt;br /&gt;  float f = new Float(1.0f);&lt;br /&gt;  double d = new Double(1.0);&lt;br /&gt;&lt;br /&gt;Você pode usar unboxing na passagem de parâmetros, exemplo:&lt;br /&gt;&lt;br /&gt;public class TestandoAutoboxing {&lt;br /&gt;  public static void main(String[] args) {&lt;br /&gt;&lt;strong&gt;    Integer x = new Integer(5);&lt;br /&gt;    Integer y = new Integer(10);&lt;/strong&gt;&lt;br /&gt;    // Aqui estou passando dois objetos Integer como parametro, que vão ser convertido (unboxing) para seu respectivo primitivo int que é o esperado pelo metodo.&lt;br /&gt;    long l = calculo(&lt;strong&gt;x, y&lt;/strong&gt;);&lt;br /&gt;  }&lt;br /&gt;        &lt;br /&gt;  public static Long calculo (&lt;strong&gt;int a, int b&lt;/strong&gt;) {&lt;br /&gt;    return (long)(a + b);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;O unboxing do Integer lhe da um atributo primitivo int e esse pode ser adicionado em outros atributos primitivos que são compatíveis, exemplo:&lt;br /&gt;&lt;br /&gt;  Integer x = new Integer(10);&lt;br /&gt;&lt;br /&gt;  boolean a = x; // Erro de compilação&lt;br /&gt;  byte b = x; // Erro de compilação&lt;br /&gt;  char c = x; // Erro de compilação&lt;br /&gt;  short s = x; // Erro de compilação&lt;br /&gt;  int i = x;&lt;br /&gt;  long l = x;&lt;br /&gt;  float f = x;&lt;br /&gt;  double d = x;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Comparando wrappers&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Quando você quer comparar o valor de dois wrappers, utilize o método equals(), exemplo:&lt;br /&gt;Integer a = 128;&lt;br /&gt;Integer b = 128;&lt;br /&gt;&lt;br /&gt;a.equals(b); // True&lt;br /&gt;&lt;br /&gt;a == b; // False&lt;br /&gt;&lt;br /&gt;Quando você usa == para comparar, ele acaba comparando a referencia do objeto e utilizando o método equals() ele compara o valor.&lt;br /&gt;&lt;br /&gt;Legal ... mas e se eu fizer isso:&lt;br /&gt;&lt;br /&gt;Integer x = 120;&lt;br /&gt;Integer y = 120;&lt;br /&gt;System.out.println(x == y); // True&lt;br /&gt;&lt;br /&gt;Integer w = -128;&lt;br /&gt;Integer z = -128;&lt;br /&gt;System.out.println(w == z); // True&lt;br /&gt;&lt;br /&gt;Mas se você fizer isso:&lt;br /&gt;&lt;br /&gt;Integer g = -129;&lt;br /&gt;Integer h = -129;&lt;br /&gt;System.out.println(g ==h); // False&lt;br /&gt;&lt;br /&gt;Vai lá entender isso… tem valor que funciona.. tem valor que num funciona... por via das duvidas ... sempre use o método equals().&lt;br /&gt;&lt;br /&gt;Bibliografia&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/language/autoboxing.html"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;http://java.sun.com/j2se/1.5.0/docs/guide/language/autoboxing.html&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.jcp.org/aboutJava/communityprocess/jsr/tiger/autoboxing.html"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;http://www.jcp.org/aboutJava/communityprocess/jsr/tiger/autoboxing.html&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-114782623650957335?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/114782623650957335/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=114782623650957335&amp;isPopup=true' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/114782623650957335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/114782623650957335'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2006/05/novidade-java-5-autoboxing.html' title='Novidade Java 5 – Autoboxing'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-114710852477779738</id><published>2006-05-08T14:09:00.000-03:00</published><updated>2007-07-01T11:37:17.408-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SCJP 5'/><title type='text'>Novidade Java 5 – Varargs</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Quando você precisa passar uma quantidade n como parâmetros de um método, normalmente se faz um array ou usa alguma das classes de Collection.&lt;br /&gt;Exemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public class TesteArray {&lt;br /&gt;  public static void main(String[] args) {&lt;br /&gt;    // Você não sabe ao certo quantos elementos o array &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;    // vai ter e chuta um número "50".&lt;br /&gt;    int valores[] = new int[50];&lt;br /&gt;&lt;br /&gt;    valores[0] = 10;&lt;br /&gt;    valores[1] = 5;&lt;br /&gt;    valores[2] = 15;&lt;br /&gt;    valores[3] = 20;&lt;br /&gt;&lt;br /&gt;    int soma = somarValores(valores);&lt;br /&gt;&lt;br /&gt;    System.out.println(soma);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  private static int somarValores(int[] valores) {&lt;br /&gt;    int soma = 0;&lt;br /&gt;&lt;br /&gt;    for (int i : valores)&lt;br /&gt;      soma += i;&lt;br /&gt;&lt;br /&gt;    return soma;&lt;br /&gt;  }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Sintaxe do varargs:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#ff0000;"&gt;&lt;strong&gt;  Tipo ... identificador&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;O mesmo exemplo usando varargs:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public class TesteVarargs {&lt;br /&gt;  public static void main(String[] args) {&lt;br /&gt;&lt;br /&gt;    // Você passa quantos parâmetros quiser&lt;br /&gt;    int soma = somarValores(10, 5, 15, 20);&lt;br /&gt;&lt;br /&gt;    System.out.println(soma);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:#cc0000;"&gt;private static int somarValores(int... valores) {&lt;/span&gt;&lt;br /&gt;    int soma = 0;&lt;br /&gt;&lt;br /&gt;    for (int i : valores)&lt;br /&gt;      soma += i;&lt;br /&gt;&lt;br /&gt;    return soma;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;Resultado: 50&lt;br /&gt;&lt;br /&gt;você também pode passar mais parâmetros na chamada do método com o mesmo tipo do varargs que ele saberá associar os valores:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public class TesteVarargs2 {&lt;br /&gt;  public static void main(String[] args) {&lt;br /&gt;&lt;br /&gt;    int soma = somarValores(2, 10, 5, 15, 20);&lt;br /&gt;&lt;br /&gt;    System.out.println(soma);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:#ff0000;"&gt;private static int somarValores(int multiplicador, int... valores) {&lt;br /&gt;&lt;/span&gt;    int soma = 0;&lt;br /&gt;&lt;br /&gt;    for (int i : valores)&lt;br /&gt;      soma += i;&lt;br /&gt;&lt;br /&gt;    return soma * multiplicador;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;Resultado: 100&lt;br /&gt;&lt;br /&gt;Lembrando que só pode ter apenas um varargs e ele precisa ser o ultimo parâmetro recebido no método.&lt;br /&gt;&lt;br /&gt;Você também pode não passar valor nenhum para o varargs, exemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public class TesteVarargs3 {&lt;br /&gt;  public static void main(String[] args) {&lt;br /&gt;&lt;br /&gt;    // Passei apenas o valor do atributo multiplicador&lt;br /&gt;    int soma = &lt;span style="color:#ff0000;"&gt;somarValores(2);&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;    System.out.println(soma);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:#ff0000;"&gt;private static int somarValores(int multiplicador, int... valores) {&lt;/span&gt;&lt;br /&gt;    int soma = 0;&lt;br /&gt;&lt;br /&gt;    for (int i : valores)&lt;br /&gt;      soma += i;&lt;br /&gt;&lt;br /&gt;    return soma * multiplicador;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Bibliografia&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-114710852477779738?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/114710852477779738/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=114710852477779738&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/114710852477779738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/114710852477779738'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2006/05/novidade-java-5-varargs.html' title='Novidade Java 5 – Varargs'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-114710815993592473</id><published>2006-05-08T14:08:00.000-03:00</published><updated>2007-07-01T11:37:38.670-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Livros'/><title type='text'>Livro “Escrevendo Casos de Uso Eficazes” de Alistair Cockburn</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Ae pessoal,&lt;br /&gt;&lt;br /&gt;Acabei de ler esse livro achei ele bem interessante mostrando mesmo como deve ser feito um caso de uso, o livro mostra alguns templates que você pode usar em diversas situações, também mostrando o que é legal ou não ter nos casos de uso.&lt;br /&gt;Este livro é recomendo para quem sabe ou não fazer casos de uso, pois o livro passa por todas as etapas do caso de uso, Corpo, Formato, Escopo, Atores, Níveis, Pré – Condições, Acionadores, Garantias, Cenário, Extensão, Erros que as pessoas comentem ao fazer os casos de uso, possui diversos lembretes sobre como escrever bons casos de uso e diversos exercícios.Depois de ler esse livro descobri que a modelagem que fizemos no TCC da facul sobre ETL (Extract Transform Load) poderia ter sido muito melhor, alguns erros que cometemos o livro explica o porque não fazer. Um exemplo é que fizemos os casos de uso baseado no diagrama de casos de uso da UML e foi criado alguns cenários baseados no diagrama, só criamos cenário de sucesso e alguns precisavam de cenários alternativos (extenção).&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-114710815993592473?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/114710815993592473/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=114710815993592473&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/114710815993592473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/114710815993592473'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2006/05/livro-escrevendo-casos-de-uso-eficazes.html' title='Livro “Escrevendo Casos de Uso Eficazes” de Alistair Cockburn'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-114705688405416745</id><published>2006-05-07T23:50:00.000-03:00</published><updated>2007-07-01T11:37:17.408-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SCJP 5'/><title type='text'>Novidade Java 5 – For-Each</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Antes dessa novidade, para fazer um for para interar sobre as classes de collection, você precisava fazer da seguinte maneira:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.List;&lt;br /&gt;import java.util.Iterator;&lt;br /&gt;&lt;br /&gt;public class TesteFor {&lt;br /&gt;  public static void main(String[] args) {&lt;br /&gt;    List&lt;string&gt; l = new ArrayList();&lt;br /&gt;    l.add("Rafael");&lt;br /&gt;    l.add("Guimaraes");&lt;br /&gt;    l.add("Sakurai");&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;    for( Iterator i = l.iterator(); i.hasNext(); ) {&lt;br /&gt;      System.out.println(i.next());&lt;br /&gt;    }&lt;/span&gt;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Ou varrer um array:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public class TesteArray {&lt;br /&gt;  public static void main(String[] args) {&lt;br /&gt;    String[] nomes = { "Altrano", "Beltrano", "Celtrano", "Deltrano" };&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;    for (int i = 0; i &lt; nomes.length; i++) {&lt;br /&gt;      System.out.println(nomes[i]);&lt;br /&gt;    }&lt;/span&gt;&lt;br /&gt;  }&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Usando For-each esses dois exemplos ficariam assim:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.List;&lt;br /&gt;import java.util.Iterator;&lt;br /&gt;&lt;br /&gt;public class ForeachCollection {&lt;br /&gt;  public static void main(String[] args) {&lt;br /&gt;    List&lt;string&gt; list = new ArrayList();&lt;br /&gt;    list.add("Rafael");&lt;br /&gt;    list.add("Guimaraes");&lt;br /&gt;    list.add("Sakurai");&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;    for( String s : list ) {&lt;br /&gt;      System.out.println(s);&lt;br /&gt;    }&lt;/span&gt;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;e&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public class ForeachArray {&lt;br /&gt;  public static void main(String[] args) {&lt;br /&gt;    String[] nomes = { "Altrano", "Beltrano", "Celtrano", "Deltrano" };&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;    for (String s : nomes) {&lt;br /&gt;      System.out.println(s);&lt;br /&gt;    }&lt;br /&gt;&lt;/span&gt;  }&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sintaxe do for-each:&lt;br /&gt;&lt;span style="font-family:courier new;color:#cc0000;"&gt;&lt;strong&gt;  for ( “Tipo” “identificador” : “Expressão” ) {&lt;br /&gt;    Código&lt;br /&gt;  }&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Expressão precisa ser uma instancia de classe que implementa a interface java.lang.Iterable&lt;br /&gt;&lt;br /&gt;O for each é mais uma funcionalidade para ajudar na vida dos programadores, principalmente daqueles que precisam interar sobre muitas das classes de Collection.&lt;/span&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/26794523-114705688405416745?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/114705688405416745/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=114705688405416745&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/114705688405416745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/114705688405416745'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2006/05/novidade-java-5-for-each.html' title='Novidade Java 5 – For-Each'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-114670567782682645</id><published>2006-05-03T22:05:00.000-03:00</published><updated>2007-07-01T11:37:17.408-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SCJP 5'/><title type='text'>Novidade Java 5 - Enums</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Mais uma novidade no Java 5 é o uso de &lt;strong&gt;Enum &lt;/strong&gt;que lhe permite uma combinação de uso, poder e performance, ajudando você a reduzir o número de erros na sua aplicação.&lt;br /&gt;Para quem programa em C, C++, C# e Pascal já deve conhecer +ou- os enums.&lt;br /&gt;Exemplo de Enum:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#663366;"&gt;public enum&lt;/span&gt; NivelLog { &lt;span style="color:#000099;"&gt;INFORMACAO&lt;/span&gt;, &lt;span style="color:#000099;"&gt;ATENCAO&lt;/span&gt;, &lt;span style="color:#000099;"&gt;ERRO&lt;/span&gt; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nas versões anteriores do java 5, você podia usar algo parecido com enum:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#663366;"&gt;public static final int&lt;/span&gt; &lt;span style="color:#000099;"&gt;INFORMACAO&lt;/span&gt; = 0;&lt;br /&gt;&lt;span style="color:#663366;"&gt;public static final int&lt;/span&gt; &lt;span style="color:#000099;"&gt;ATENCAO&lt;/span&gt; = 1;&lt;br /&gt;&lt;span style="color:#663366;"&gt;public static final int&lt;/span&gt; &lt;span style="color:#000099;"&gt;ERRO&lt;/span&gt; = 2;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Enum tem um modo diferente de ser declarada:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;modificadordeclasse&gt;&lt;strong&gt;&lt;span style="color:#cc0000;"&gt;{ ModificadorDeClasse } enum { Identificador } { implements Interfaces } { CorpoDoEnum }&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;OBS: ModificadorDeClasse (private, protected e public) e implementação de Inteface são opcionais.&lt;br /&gt;&lt;br /&gt;CorpoDoEnum:&lt;br /&gt;{ ConstantesEnum DeclaraçãoDeCorpo }&lt;br /&gt;OBS: ConstantesEnum e DeclaraçãoDeCorpo são opcionais&lt;br /&gt;&lt;br /&gt;ConstantesEnum:&lt;br /&gt;ConstanteEnumA, ConstanteEnumB&lt;br /&gt;OBS: Se tiver mais que uma constante precisa ser separado por virgula.&lt;br /&gt;&lt;br /&gt;ConstanteEnum:&lt;br /&gt;Identificador Argumentos CorpoDeClasse&lt;br /&gt;OBS: Argumentos e CorpoDeClasse são opcionais&lt;br /&gt;&lt;br /&gt;Os enums podem ser declarados como sua própria classe separada ou como membro de uma classe, mas não pode ser declarado dentro de membros da classe (Erro de compilação).&lt;br /&gt;&lt;br /&gt;OBS: A declaração de enums pode ou não terminar com ponto e virgula (&lt;span style="color:#ff0000;"&gt;;&lt;/span&gt;), exemplo:&lt;br /&gt;&lt;span style="color:#663366;"&gt;public enum&lt;/span&gt; JogoDeTabuleiro { &lt;span style="color:#000099;"&gt;GO, DAMAS, XADREZ, LUDO&lt;/span&gt; }&lt;br /&gt;ou&lt;br /&gt;&lt;span style="color:#663366;"&gt;public enum&lt;/span&gt; JogoDeTabuleiro { &lt;span style="color:#000099;"&gt;GO, DAMAS, XADREZ, LUDO&lt;/span&gt; }&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Exemplo:&lt;br /&gt;&lt;br /&gt;Declarando como sua própria classe:&lt;br /&gt;&lt;br /&gt;Arquivo: &lt;span style="color:#006600;"&gt;TestandoEnum.java&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;// Declarando enum fora da classe&lt;br /&gt;&lt;span style="color:#663366;"&gt;enum&lt;/span&gt; NivelLog { &lt;span style="color:#000099;"&gt;INFORMACAO, ATENCAO, ERRO&lt;/span&gt; }&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#663366;"&gt;public class&lt;/span&gt; TestandoEnum {&lt;br /&gt;// Declarando enum dentro da classe&lt;br /&gt;&lt;span style="color:#663366;"&gt;enum&lt;/span&gt; TipoProblema { &lt;span style="color:#000099;"&gt;ERRO_NEGOCIO, ERRO_PROGRAMA&lt;/span&gt; }&lt;br /&gt;&lt;br /&gt;NivelLog nivelLog = null;&lt;br /&gt;TipoProblema tipoProblema = null;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#663366;"&gt;public static void &lt;/span&gt;main(String[] args) {&lt;br /&gt;TestandoEnum te = &lt;span style="color:#663366;"&gt;new&lt;/span&gt; TestandoEnum();&lt;br /&gt;te.nivelLog = NivelLog.&lt;span style="color:#000099;"&gt;ATENCAO&lt;/span&gt;;&lt;br /&gt;te.tipoProblema = TipoProblema.&lt;span style="color:#000099;"&gt;ERRO_NEGOCIO&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;System.out.println(te.nivelLog);&lt;br /&gt;System.out.println(te.tipoProblema.ordinal());&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Se você compilar terá os seguintes .class:&lt;br /&gt;&lt;span style="font-family:courier new;color:#006600;"&gt;NivelLog.class&lt;br /&gt;TestandoEnum$TipoProblema.class&lt;br /&gt;TestandoEnum.class&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;e se executar está classe terá a seguinte saída:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;ATENCAO&lt;br /&gt;0&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Se você descompilar essas classes geradas você terá:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#cc0000;"&gt;&lt;span style="font-family:courier new;"&gt;final class NivelLog extends Enum {&lt;br /&gt;public static final NivelLog INFORMACAO;&lt;br /&gt;public static final NivelLog ATENCAO;&lt;br /&gt;public static final NivelLog ERRO;&lt;br /&gt;private static final NivelLog $VALUES[];&lt;br /&gt;&lt;br /&gt;static&lt;br /&gt;{&lt;br /&gt;INFORMACAO = new NivelLog("INFORMACAO", 0);&lt;br /&gt;ATENCAO = new NivelLog("ATENCAO", 1);&lt;br /&gt;ERRO = new NivelLog("ERRO", 2);&lt;br /&gt;$VALUES = (new NivelLog[] {&lt;br /&gt;INFORMACAO, ATENCAO, ERRO&lt;br /&gt;});&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static final class TipoProblema extends Enum {&lt;br /&gt;public static final TipoProblema ERRO_NEGOCIO;&lt;br /&gt;public static final TipoProblema ERRO_PROGRAMA;&lt;br /&gt;private static final TipoProblema $VALUES[];&lt;br /&gt;&lt;br /&gt;static&lt;br /&gt;{&lt;br /&gt;ERRO_NEGOCIO = new TipoProblema("ERRO_NEGOCIO", 0);&lt;br /&gt;ERRO_PROGRAMA = new TipoProblema("ERRO_PROGRAMA", 1);&lt;br /&gt;$VALUES = (new TipoProblema[] {&lt;br /&gt;ERRO_NEGOCIO, ERRO_PROGRAMA&lt;br /&gt;});&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Usando enum você num precisa declarar esse monte de coisa :]&lt;br /&gt;Outra parte legal é que você pode ter outros membros dentro do seu enum, exemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#663366;"&gt;public class&lt;/span&gt; TestandoEnum {&lt;br /&gt;&lt;span style="color:#6600cc;"&gt;enum&lt;/span&gt; NivelLog { &lt;span style="color:#000099;"&gt;INFORMACAO&lt;/span&gt;(1, &lt;span style="color:#3333ff;"&gt;"Aguarde a tela terminar de carregar e pare de apertar o botão de Ok."&lt;/span&gt;),&lt;br /&gt;&lt;span style="color:#000099;"&gt;ATENCAO&lt;/span&gt;(2, &lt;span style="color:#3333ff;"&gt;"Campo obrigatório não informado."&lt;/span&gt;),&lt;br /&gt;&lt;span style="color:#000099;"&gt;ERRO&lt;/span&gt;(3, &lt;span style="color:#3333ff;"&gt;"Erro genérico."&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#663366;"&gt;private final int&lt;/span&gt; &lt;span style="color:#3333ff;"&gt;nivel&lt;/span&gt;;&lt;br /&gt;&lt;span style="color:#663366;"&gt;private final&lt;/span&gt; String &lt;span style="color:#3333ff;"&gt;comentario&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;// Declarar o construtor do enum&lt;br /&gt;NivelLog(&lt;span style="color:#663366;"&gt;int&lt;/span&gt; nivel, String comentario) {&lt;br /&gt;&lt;span style="color:#663366;"&gt;this&lt;/span&gt;.&lt;span style="color:#3333ff;"&gt;nivel&lt;/span&gt; = nivel;&lt;br /&gt;&lt;span style="color:#663366;"&gt;this&lt;/span&gt;.&lt;span style="color:#3333ff;"&gt;comentario&lt;/span&gt; = comentario;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#663366;"&gt;public int&lt;/span&gt; getNivel() {&lt;br /&gt;&lt;span style="color:#663366;"&gt;return&lt;/span&gt; &lt;span style="color:#3333ff;"&gt;nivel&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#663366;"&gt;public&lt;/span&gt; String toString() {&lt;br /&gt;&lt;span style="color:#663366;"&gt;return&lt;/span&gt; &lt;span style="color:#3333ff;"&gt;comentario&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#663366;"&gt;public static void&lt;/span&gt; main(String[] args) {&lt;br /&gt;NivelLog log = NivelLog.&lt;span style="color:#000099;"&gt;ERRO&lt;/span&gt;;&lt;br /&gt;if(logicaComplexa())&lt;br /&gt;System.out.println(log);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#663366;"&gt;private static boolean&lt;/span&gt; logicaComplexa() {&lt;br /&gt;// Logica muito complexa para colocar o codigo aqui ^-^&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#663366;"&gt;return&lt;/span&gt; true;&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OBS: Lembrando que enum não pode lançar exceção.&lt;br /&gt;&lt;br /&gt;Alguns métodos que o enum disponibiliza para você.&lt;br /&gt;// values() - Retorna um array com todos os valores do enum na ordem em que são declarados.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;for(NivelLog nl : NivelLog.values())&lt;br /&gt;System.out.println(nl);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Saída:&lt;br /&gt;&lt;span style="font-family:courier new;color:#006600;"&gt;INFORMACAO&lt;br /&gt;ATENCAO&lt;br /&gt;ERRO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;// ordinal() - Retorna o valor int do enum&lt;br /&gt;// name() – Retorna o nome do valor do enum&lt;br /&gt;Exemplo:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;for(NivelLog nl : NivelLog.values())&lt;br /&gt;System.out.println(nl.name() + " - " + nl.ordinal());&lt;/span&gt;&lt;br /&gt;Saída:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;span style="font-family:courier new;color:#006600;"&gt;INFORMACAO - 0&lt;br /&gt;ATENCAO - 1&lt;br /&gt;ERRO - 2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OBS: Quem leu o post anterior sabe que se fizer dessa maneira é mais rápido:&lt;br /&gt;System.out.println(nl.name() + " - " + String.valueOf(nl.ordinal()));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bibliografia&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.jcp.org/aboutJava/communityprocess/jsr/tiger/enum.html"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;http://www.jcp.org/aboutJava/communityprocess/jsr/tiger/enum.html&lt;/span&gt;&lt;/a&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/26794523-114670567782682645?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/114670567782682645/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=114670567782682645&amp;isPopup=true' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/114670567782682645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/114670567782682645'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2006/05/novidade-java-5-enums.html' title='Novidade Java 5 - Enums'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-114627047354034122</id><published>2006-04-28T21:20:00.000-03:00</published><updated>2007-07-01T11:37:57.648-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>Dica de performance - converter primitivo em String</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Dica de performance quando for converter primitivo em String.&lt;br /&gt;&lt;br /&gt;Vejo em alguns códigos as pessoas fazerem isso:&lt;br /&gt;  &lt;span style="font-family:courier new;"&gt;&lt;strong&gt;String x = “” + 1;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Normalmente isso é feito quando alguém ta com pressa ou não tem interesse pela performance que a aplicação está desenvolvendo pode ter ou realmente não sabe que esse modo de converter é lento ou em ultimo caso é um completo relaxado (isso não é indireta para ninguém :)&lt;br /&gt;Uma maneira melhor de escrever esse comando é assim:&lt;br /&gt;  &lt;span style="font-family:courier new;"&gt;&lt;strong&gt;String x = String.valueOf(1);&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;Por que ??? No final num é tudo igual ??? Aqui está um exemplo pratico da performance:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public class Teste {&lt;br /&gt;  public static void main(String [] args) {&lt;br /&gt;    long inicio = System.currentTimeMillis();&lt;br /&gt;    String x = null;&lt;br /&gt;&lt;br /&gt;    for(int i = 0; i &lt; 100000; i++)&lt;br /&gt;      &lt;strong&gt;x = "" + i;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;    long tempo = (System.currentTimeMillis() - inicio);&lt;br /&gt;    System.out.println(String.valueOf(tempo) + &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;                       " Milisegundos usando \"\" + primitivo");&lt;br /&gt;&lt;br /&gt;    inicio = System.currentTimeMillis();&lt;br /&gt;&lt;br /&gt;    String y = null;&lt;br /&gt;    for(int i = 0; i &lt; 100000; i++)&lt;br /&gt;      &lt;strong&gt;y = String.valueOf(i);&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;    tempo = (System.currentTimeMillis() - inicio);&lt;br /&gt;    System.out.println(String.valueOf(tempo) + &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;                       " Milisegundos usando System.valueOf(primitivo)");&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Resultado da execução:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;C:\&gt;java Teste&lt;br /&gt;170 Milisegundos usando "" + primitivo&lt;br /&gt;50 Milisegundos usando System.valueOf(primitivo)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Aqui na minha maquina a segunda forma de executar é apenas 3,4 vezes mais rápida que a primeira.&lt;br /&gt;&lt;br /&gt;Se você compilar e descompilar está classe pode entender porque o 1º modo demora mais:&lt;br /&gt;&lt;br /&gt;Você escreve isso:&lt;br /&gt;  &lt;span style="font-family:courier new;"&gt;&lt;strong&gt;String x = “” + 1;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;O compilador troca para isso:&lt;br /&gt;  &lt;span style="font-family:courier new;"&gt;&lt;strong&gt;String s = (new StringBuilder()).append("").append(i).toString();&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Você escreve isso:&lt;br /&gt;  &lt;span style="font-family:courier new;"&gt;&lt;strong&gt;String y = String.valueOf(i);&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;O compilador troca para isso:&lt;br /&gt;  &lt;span style="font-family:courier new;"&gt;&lt;strong&gt;String y = String.valueOf(j);&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A primeira forma você pode ver que ele criou varias coisas... tudo isso para converter um primitivo em String, agora da segunda maneira o compilador num mexeu pois já está explicito o que é preciso fazer.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;Espero ter ajudado alguns :]&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-114627047354034122?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/114627047354034122/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=114627047354034122&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/114627047354034122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/114627047354034122'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2006/04/dica-de-performance-converter.html' title='Dica de performance - converter primitivo em String'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-114610199867203670</id><published>2006-04-26T22:32:00.000-03:00</published><updated>2007-07-01T11:37:17.408-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SCJP 5'/><title type='text'>Novidades no Java 5 – Static Import</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Novidades no Java 5 – Static Import&lt;br /&gt;&lt;br /&gt;Uma novidade do java 5 é o static import que permite importar os membros static de uma classe ou interface, como se você tivesse declarado eles na classe que você está usando.&lt;br /&gt;&lt;br /&gt;Como usar o &lt;em&gt;import static&lt;/em&gt;:&lt;br /&gt;&lt;br /&gt;Declarar o import static de todos os membros static da classe:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;import static nomePackage.nomeClasse.*;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;/span&gt;&lt;br /&gt;Exemplo:&lt;br /&gt;Sem usar o import static:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;class ImportarTodosMembrosStatic {&lt;br /&gt;public static void main(String[] args) {&lt;br /&gt;double a = 8;&lt;br /&gt;&lt;br /&gt;a = Math.sqrt(a);&lt;br /&gt;a = Math.pow(a,2);&lt;br /&gt;&lt;br /&gt;System.out.println("a + PI = " + (a + Math.PI));&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Usando o import static:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;import static java.lang.Math.*;&lt;br /&gt;&lt;br /&gt;class ImportarTodosMembrosStatic {&lt;br /&gt;public static void main(String[] args) {&lt;br /&gt;double a = 8;&lt;br /&gt;&lt;br /&gt;a = sqrt(a);&lt;br /&gt;a = pow(a,2);&lt;br /&gt;&lt;br /&gt;System.out.println("a = " + (a + PI));&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Declarar o import static de um membro static da classe:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;import static &lt;packagename&gt;nomePackage.nomeClasse.nomeMembro;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Exemplo:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;import static java.lang.Math.PI;&lt;br /&gt;&lt;br /&gt;class ImportarMembroStatic {&lt;br /&gt;public static void main(String[] args) {&lt;br /&gt;System.out.println("PI = " + PI);&lt;br /&gt;&lt;br /&gt;/* Isso gera um erro de compilação, pois não estou&lt;br /&gt;* importando o membro static Math.E&lt;br /&gt;*&lt;br /&gt;* System.out.println("E = " + E);&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;// isso funciona pois estou chamando diretamente Math.E&lt;br /&gt;System.out.println("E = " + Math.E);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Se você utilizar o import static em duas ou mais classes e tiver membros static com o mesmo nome você terá um erro de compilação. Exemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public class A {&lt;br /&gt;public static int X = 1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;---------------------------&lt;br /&gt;&lt;br /&gt;public class B {&lt;br /&gt;public static int X = 2;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;---------------------------&lt;br /&gt;&lt;br /&gt;import static A.*;&lt;br /&gt;import static B.*;&lt;br /&gt;&lt;br /&gt;public class ImportarDuasClassesComMembroIgual {&lt;br /&gt;public static void main(String[] args) {&lt;br /&gt;System.out.println(X);&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Erro de compilação:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;C:\&gt;javac ImportarDuasClassesComMembroIgual.java&lt;br /&gt;C:\ImportarDuasClassesComMembroIgual.java:6: reference to X is ambiguous, both variable X in A and variable X in B match&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Se você fizer o import static de um atributo e na sua classe tiver um atributo com o mesmo nome, isso não causa o sombreamento do atributo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public class A {&lt;br /&gt;public static int X = 1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;---------------------------&lt;br /&gt;&lt;br /&gt;import static A.*;&lt;br /&gt;&lt;br /&gt;public class ImportarStatic {&lt;br /&gt;public static int X = 10;&lt;br /&gt;public static void main(String args[]) {&lt;br /&gt;System.out.println(X);&lt;br /&gt;// Para você acessar o membro static da classe A,&lt;br /&gt;// você precisa usar a classe como referencia.&lt;br /&gt;System.out.println(A.X);&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A saída desse código será:&lt;br /&gt;10&lt;br /&gt;1&lt;br /&gt;&lt;br /&gt;E se você fizer o import static de duas classes que tem o mesmo método static ??? Contanto que os metodos importados tenham assinaturas diferentes, o compilador saberá qual método chamar.&lt;br /&gt;Exemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public class A {&lt;br /&gt;public static int X = 1;&lt;br /&gt;&lt;br /&gt;public static void somarX(int a) {&lt;br /&gt;System.out.println(X + a);&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;---------------------------&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public class B {&lt;br /&gt;public static int X = 2;&lt;br /&gt;&lt;br /&gt;public static void somarX(double a) {&lt;br /&gt;System.out.println(X + a);&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;---------------------------&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;import static A.somarX;&lt;br /&gt;import static B.somarX;&lt;br /&gt;&lt;br /&gt;public class ImportarMetodosComMesmoNome {&lt;br /&gt;public static void main(String[] args) {&lt;br /&gt;somarX(5);&lt;br /&gt;somarX(5.0);&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A saída desse código será:&lt;br /&gt;6&lt;br /&gt;7.0&lt;br /&gt;&lt;br /&gt;OBS: apesar de essa novidade chamar Static Import, quando você escreve seu programa java, você precisa usar import static, senão seu código não compila.&lt;br /&gt;&lt;br /&gt;Bibliografia&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/language/static-import.html"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;http://java.sun.com/j2se/1.5.0/docs/guide/language/static-import.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jcp.org/aboutJava/communityprocess/jsr/tiger/static-import.html"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;http://jcp.org/aboutJava/communityprocess/jsr/tiger/static-import.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;OBS: O codigo ficou um pouco ruim aqui no blog, depois vou criar um site para armazenar os tutoriais que vou fazendo.&lt;/strong&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-114610199867203670?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/114610199867203670/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=114610199867203670&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/114610199867203670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/114610199867203670'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2006/04/novidades-no-java-5-static-import.html' title='Novidades no Java 5 – Static Import'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-114600090825022901</id><published>2006-04-25T18:31:00.000-03:00</published><updated>2006-04-25T18:35:08.266-03:00</updated><title type='text'>Artigo</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Ae pessoal,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Adicionei ao lado um menu com um artigo sobre "Eventos do Mouse" usando Java que fiz a algum tempo, o artigo num é aquela maravilha ... mas da para ter uma noção de como usar os eventos, eu tive que aprender a usar os eventos quando precisei fazer uma aplicação onde o usuario poderia inserir e mudar os itens de posição na tela.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-114600090825022901?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/114600090825022901/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=114600090825022901&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/114600090825022901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/114600090825022901'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2006/04/artigo.html' title='Artigo'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26794523.post-114581012993823124</id><published>2006-04-23T13:12:00.000-03:00</published><updated>2006-04-23T14:05:08.116-03:00</updated><title type='text'>Sobre o blog "Conhecimento Aberto"</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Oi pessoal ^-^, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Nesse blog vou contar sobre um pouco sobre UML, Orientação a Objeto, Java (acho que vou falar bastante de Java), Analise, Business Intelligence e Banco de Dados que são algumas áreas que tenho interesse, provavelmente vou fazer desse blog um tutorial ainda não sei bem ao certo.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Porque do nome "Conhecimento Aberto" ??? Escolhi esse nome pois aqui pretendo divulgar a maior quantidade de conhecimento que eu tenha sobre algumas dessas áreas que citei acima, o conhecimento é algo que deveria ser de publico e todos devem ter acesso de forma simples.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Sobre mim, atualmente sou programador jr., sou formado em Ciências da Computação e estou fazendo Pós-Graduação em Engenharia de Componentes com Java Enterprise e Webservices, pretendo tirar agora a certificação SCJP 5.0 (pra falar a verdade... eu to enrolando faz tempo para tirar essa certificação), bom depois coloco mais informações sobre mim no perfil.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;em&gt;Domo Arigatogozaimashita&lt;/em&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26794523-114581012993823124?l=rafaelsakurai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rafaelsakurai.blogspot.com/feeds/114581012993823124/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26794523&amp;postID=114581012993823124&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/114581012993823124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26794523/posts/default/114581012993823124'/><link rel='alternate' type='text/html' href='http://rafaelsakurai.blogspot.com/2006/04/sobre-o-blog-conhecimento-aberto.html' title='Sobre o blog &quot;Conhecimento Aberto&quot;'/><author><name>Sakurai</name><uri>http://www.blogger.com/profile/06653862601054404444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://photos1.blogger.com/blogger/2100/2808/1600/rafaelsakurai.jpg'/></author><thr:total>0</thr:total></entry></feed>
