<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Zona J</title>
	
	<link>http://www.zonaj.org</link>
	<description>Zona Java - Um blog português sobre java.</description>
	<lastBuildDate>Thu, 17 Sep 2009 20:41:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ZonaJ" /><feedburner:info uri="zonaj" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>ZonaJ</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Apresentação JavaPT09</title>
		<link>http://feedproxy.google.com/~r/ZonaJ/~3/Eg6l1NFXeCI/</link>
		<comments>http://www.zonaj.org/2009/09/17/apresentacao-javapt09/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 20:39:43 +0000</pubDate>
		<dc:creator>Ruben Badaró</dc:creator>
				<category><![CDATA[evento]]></category>
		<category><![CDATA[jug]]></category>
		<category><![CDATA[escalabilidade]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Multi-core]]></category>

		<guid isPermaLink="false">http://www.zonaj.org/?p=243</guid>
		<description><![CDATA[Decorreu no dia de hoje o JavaPT09, na Universidade do Minho.
Entre outras apresentações, fiz uma intitulada &#8220;Writing Scalable Software in Java &#8211; from multi-core to grid-computing&#8221;.
Writing Scalable Software in Java
View more presentations from rbadaro.


]]></description>
			<content:encoded><![CDATA[<p>Decorreu no dia de hoje o JavaPT09, na Universidade do Minho.</p>
<p>Entre outras apresentações, fiz uma intitulada &#8220;Writing Scalable Software in Java &#8211; from multi-core to grid-computing&#8221;.</p>
<div id="__ss_2013912" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Writing Scalable Software in Java" href="http://www.slideshare.net/rbadaro/writing-scalable-software-in-java">Writing Scalable Software in Java</a><object style="margin:0px" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=javapt09-090917150715-phpapp01&amp;stripped_title=writing-scalable-software-in-java" /><param name="allowfullscreen" value="true" /><embed style="margin:0px" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=javapt09-090917150715-phpapp01&amp;stripped_title=writing-scalable-software-in-java" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/rbadaro">rbadaro</a>.</div>
</div>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/e1bfa6db-4f2c-4457-9946-5dbe1318bead/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=e1bfa6db-4f2c-4457-9946-5dbe1318bead" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ZonaJ?a=Eg6l1NFXeCI:O5SqTjhTiME:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ZonaJ?i=Eg6l1NFXeCI:O5SqTjhTiME:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ZonaJ?a=Eg6l1NFXeCI:O5SqTjhTiME:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ZonaJ?i=Eg6l1NFXeCI:O5SqTjhTiME:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ZonaJ?a=Eg6l1NFXeCI:O5SqTjhTiME:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ZonaJ?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ZonaJ/~4/Eg6l1NFXeCI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zonaj.org/2009/09/17/apresentacao-javapt09/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.zonaj.org/2009/09/17/apresentacao-javapt09/</feedburner:origLink></item>
		<item>
		<title>JavaPT09 – 17 de Setembro, Universidade do Minho</title>
		<link>http://feedproxy.google.com/~r/ZonaJ/~3/bwZ-TaeFVvs/</link>
		<comments>http://www.zonaj.org/2009/08/24/javapt09-17-de-setembro-universidade-do-minho/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 23:28:39 +0000</pubDate>
		<dc:creator>Ruben Badaró</dc:creator>
				<category><![CDATA[evento]]></category>
		<category><![CDATA[javapt09]]></category>
		<category><![CDATA[ptjug]]></category>
		<category><![CDATA[uminho]]></category>

		<guid isPermaLink="false">http://www.zonaj.org/?p=237</guid>
		<description><![CDATA[No próximo dia 17 de Setembro, ocorrerá na Universidade do Minho o evento anual sobre tecnologia Java em Portugal, organizado pela Sun Microsystems. Será um dia com talks feitas por evangelistas da Sun bem como por membros da Java User Group Português.
A agenda e descrição do evento podem ser encontrados no site oficial. O PT.JUG [...]]]></description>
			<content:encoded><![CDATA[<p>No próximo dia 17 de Setembro, ocorrerá na Universidade do Minho o evento anual sobre tecnologia Java em Portugal, organizado pela Sun Microsystems. Será um dia com talks feitas por evangelistas da Sun bem como por membros da Java User Group Português.</p>
<p>A agenda e descrição do evento podem ser encontrados no <a href="http://pt.sun.com/sunnews/events/2009/sept/javapt09/">site oficial</a>. O PT.JUG terá uma track na parte da tarde com apresentações do Samuel Santos, Hugo Pinto e outra minha.</p>
<p>Dado que o evento terá lugar em Braga, está a ser organizada uma excursão para quem venha do Sul. Para quem quiser participar, junte-se à conversa na <a href="http://groups.google.com/group/ptjug-geral">mailing list do PT.JUG</a>.</p>
<p><a href="http://pt.sun.com/sunnews/events/2009/sept/javapt09/">Inscrições e agenda na página do evento na Sun Portugal</a>.</p>
<p><strong>Agenda</strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<table border="0" cellspacing="1" cellpadding="4" width="100%">
<tbody style="font-size: small;">
<tr valign="top">
<th style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #a3b8cb; color: #ffffff; background-position: initial initial;" colspan="2">Sessão Plenária</th>
</tr>
<tr style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeee; background-position: initial initial;" align="center" valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeee; background-position: initial initial;" width="20%">09h00-09h30</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeee; background-position: initial initial;" width="80%">Registo</td>
</tr>
<tr align="center" valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; background-position: initial initial;">09h30-10h00</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; background-position: initial initial;"><strong>Boas-Vindas<br />
Assinatura do Protocolo Criação do Centro de Competência de Java</strong></td>
</tr>
<tr style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeee; background-position: initial initial;" align="center" valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeee; background-position: initial initial;">10h00-10h40</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeee; background-position: initial initial;"><strong>Sun and Software Developers: What&#8217;s New – Simon Ritter – Sun Microsystems, Corp.</strong></td>
</tr>
<tr align="center" valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; background-position: initial initial;">10h40-11h30</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; background-position: initial initial;"><strong>JavaFX: The New Platform for Rich Internet Applications – Artur Alves – Sun Microsystems Portugal</strong></td>
</tr>
<tr style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeee; background-position: initial initial;" align="center" valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeee; background-position: initial initial;">11h30-12h00</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeee; background-position: initial initial;">Cofee-Break</td>
</tr>
<tr align="center" valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; background-position: initial initial;">12h00-12h40</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; background-position: initial initial;"><strong>NetBeans – What&#8217;s New – Simon Ritter – Sun Microsystems, Corp.</strong></td>
</tr>
<tr style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeee; background-position: initial initial;" align="center" valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeee; background-position: initial initial;">12h40-14h00</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeee; background-position: initial initial;">Almoço</td>
</tr>
<tr align="center" valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; background-position: initial initial;">14h00-15h00</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; background-position: initial initial;"><strong>Glassfish Stack – Artur Alves – Sun Microsystems Portugal</strong></td>
</tr>
</tbody>
</table>
<p><strong> </strong></p>
<table border="0" cellspacing="1" cellpadding="4" width="100%">
<tbody>
<tr valign="top">
<th style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #a3b8cb; color: #ffffff; background-position: initial initial;" colspan="3">Sessões Paralelas</th>
</tr>
<tr style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeee; background-position: initial initial;" align="center" valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeee; background-position: initial initial;" width="20%"></td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeee; background-position: initial initial;" width="40%"><strong>Portuguese Java User Group Session</strong></td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeee; background-position: initial initial;" width="40%"><strong>Hands-On Lab Session</strong></td>
</tr>
<tr align="center" valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; background-position: initial initial;">15h00-16h00</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; background-position: initial initial;">Programação web em Java com Stripes <strong>Samuel Santos</strong></td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; background-position: initial initial;" rowspan="3" valign="middle">End-to-End Mobile Application Development</td>
</tr>
<tr style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeee; background-position: initial initial;" align="center" valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeee; background-position: initial initial;">16h00-17h00</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeee; background-position: initial initial;">Software Escalável em Java: do multi-core à computação em grelha <strong>Ruben Badaró</strong></td>
</tr>
<tr align="center" valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; background-position: initial initial;">17h00-18h00</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; background-position: initial initial;">To SOA or not to SOA: uma apresentação buzzword-compliant<strong>Hugo Pinto</p>
<p></strong></td>
</tr>
</tbody>
</table>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ZonaJ?a=bwZ-TaeFVvs:bWyoFYeVfWY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ZonaJ?i=bwZ-TaeFVvs:bWyoFYeVfWY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ZonaJ?a=bwZ-TaeFVvs:bWyoFYeVfWY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ZonaJ?i=bwZ-TaeFVvs:bWyoFYeVfWY:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ZonaJ?a=bwZ-TaeFVvs:bWyoFYeVfWY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ZonaJ?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ZonaJ/~4/bwZ-TaeFVvs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zonaj.org/2009/08/24/javapt09-17-de-setembro-universidade-do-minho/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.zonaj.org/2009/08/24/javapt09-17-de-setembro-universidade-do-minho/</feedburner:origLink></item>
		<item>
		<title>10 (+1) livros essenciais para o programador Java</title>
		<link>http://feedproxy.google.com/~r/ZonaJ/~3/27plmHZHQcY/</link>
		<comments>http://www.zonaj.org/2009/05/03/10-1-livros-essenciais-para-o-programador-java/#comments</comments>
		<pubDate>Sun, 03 May 2009 07:00:32 +0000</pubDate>
		<dc:creator>Ruben Badaró</dc:creator>
				<category><![CDATA[geral]]></category>
		<category><![CDATA[livro]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[essenciais]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.zonaj.org/?p=217</guid>
		<description><![CDATA[Hoje em dia torna-se difícil conseguir acompanhar todas as evoluções tecnológicas. Mesmo reduzindo o espaço de procura a apenas temas relacionado com a nossa área &#8211; suponhamos Java e ciência da computação &#8211; as novas frameworks, ferramentas, papers e notícias obrigam a atenção contínua. Eu pessoalmente tenho cada vez mais dificuldade em reservar tempo para [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje em dia torna-se difícil conseguir acompanhar todas as evoluções tecnológicas. Mesmo reduzindo o espaço de procura a apenas temas relacionado com a nossa área &#8211; suponhamos Java e ciência da computação &#8211; as novas frameworks, ferramentas, papers e notícias obrigam a atenção contínua. Eu pessoalmente tenho cada vez mais dificuldade em reservar tempo para ler as feeds RSS ou tentar ler o que as várias pessoas que sigo partilham no Twitter.</p>
<p>No entanto, também são necessários os conceitos base. Fora o ensino superior e certificações, livros são um recurso essencial que me parecem que hoje em dia muita gente despreza. E estou a falar daqueles em papel, não dos pdfs que se sacam da net.</p>
<p>Foi com esta ideia que decidi juntar uma lista de 10 livros que considero essenciais para um programador Java &#8211; i.e. que contêm a matéria mínima que gostava de ver nos membros das minhas equipas de desenvolvimento. Alguns destes podem ser substituídos por outros porque trata-se de escolhas pessoais, mas os temas e áreas abrangidos penso serem extensivos. De referir também que se trata de uma lista de livros técnicos, não se focando no desenvolvimento das chamadas &#8220;soft skills&#8221;. Fica a lista.</p>
<p>1 &#8211; <a href="http://www.amazon.com/gp/product/0321349806?ie=UTF8&amp;tag=cantinhodobad-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321349806">The Java Programming Language</a></p>
<p>Escrito pelos criadores da linguagem, serve tanto como livro de introdução à linguagem como também de excelente referência para manter por perto.</p>
<p>Cobre desde as áreas básicas da linguagem até I/O, threading e acima de tudo as collections, para as quais é muito útil como referência.</p>
<p>2 &#8211; <a href="http://www.amazon.com/gp/product/0321356683?ie=UTF8&amp;tag=cantinhodobad-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321356683">Effective Java</a></p>
<p>Escrito pelo <a href="http://en.wikipedia.org/wiki/Joshua_Bloch">Joshua Bloch</a>, Effective Java é provavelmente o melhor livro sobre Java que já li.</p>
<p>Está organizado em 78 itens e cada um é uma boa prática, por exemplo, &#8220;Preferir composição no lugar de herança&#8221;, &#8220;Evitar Finalizers&#8221; ou &#8220;Preferir anotações a padrões de nomenclaturas&#8221;. Em cada um destes pontos, o autor discute os diversos ângulos da questão aprofundadamente e com justificações que demonstram um conhecimento extremo da plataforma.</p>
<p>Adicionalmente, o estilo de escrita é facílimo de ler. Eu demorei 2 noites a ler o livro todo.</p>
<p>3 &#8211; <a href="http://www.amazon.com/gp/product/0321349601?ie=UTF8&amp;tag=cantinhodobad-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321349601">Java Concurrency in Practice</a></p>
<p>&#8220;Concorrência é difícil&#8221;, é uma das mensagens principais deste livro. O autor do livro, Brian Goetz, parte deste princípio para demonstrar ao longo do livro como evitar as principais falhas quando se desenvolve software concorrente em Java. Os bons e maus exemplos são demonstrados facilmente com snipplets de código com smileys negativos e positivos, o que ajuda a memorizar os padrões.</p>
<p>Além de explicar os principais problemas de concorrência &#8211; live locks, dead locks, race conditions, etc. &#8211; são explicadas detalhadamente as novas estruturas de dados para suporte a concorrência introduzidas no Java 5 e 6. Depois de ler este livro encontro-me a usar estas estruturas mais e mais vezes, e também a construir em cima delas conforme vou compreendendo como funcionam internamente.</p>
<p>4 &#8211; <a href="http://www.amazon.com/gp/product/0201558025?ie=UTF8&amp;tag=cantinhodobad-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0201558025">Concrete Mathematics: A Foundation for Computer Science</a></p>
<p>Sim, coloquei aqui um livro de matemática!</p>
<p>Todos estudamos matemática mas por vezes a dificuldade reside em encontrar aplicações para o que aprendemos. Este livro ensina conceitos matemáticos que são facilmente mapeados para problemas informáticos com os quais no encontramos no dia-a-dia. Também são conceitos que nos ajudam a perceber melhor os diferentes algoritmos.</p>
<p>5 &#8211; <a href="http://www.amazon.com/gp/product/1848000693?ie=UTF8&amp;tag=cantinhodobad-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1848000693">The Algorithm Design Manual</a></p>
<p>Este não foi o primeiro livro de algoritmos que comprei nem é considerado o &#8220;standard&#8221;. O primeiro que comprei e que sinceramente nunca consegui ler todo foi o <a href="http://www.amazon.com/gp/product/0262032937?ie=UTF8&amp;tag=cantinhodobad-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0262032937">Introduction to Algorithms</a>. Além de espesso, segue uma aproximação extremamente académica e formal.</p>
<p>Por outro lado, este The Algorithm Design Manual é bastante acessível e completo. Os exemplos não estão escritos em Java mas vale pela quantidade e pela forma como são explanados os algoritmos. Cobre a maioria das áreas esperadas num livro para iniciantes/intermediários: estruturas de dados, algoritmos de pesquisa, grafos, programação dinâmica, combinatória, geometria, conjuntos e outras áreas.</p>
<p>6 &#8211; <a href="http://www.amazon.com/gp/product/0201775786?ie=UTF8&amp;tag=cantinhodobad-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0201775786">Algorithms in Java</a></p>
<p>Decidi incluir um outro livro de algorimos, desta vez em Java. Escrito pelo Robert Sedgewick que já tinha escrito a mesma versão do livro para C++ no início dos anos 90, o livro serve de excelente fonte de referência para se ter no local de trabalho e consultar rapidamente quando necessário.</p>
<p>O livro está dividido em 5 partes, separadas ao longo de 2 volumes &#8211; Fundamentos, Estruturas de Dados, Ordenação e Pesquisa no primeiro volume; e Grafos no segundo volume.</p>
<p>7 &#8211; <a href="http://www.amazon.com/gp/product/0201633612?ie=UTF8&amp;tag=cantinhodobad-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0201633612">Design Patterns: Elements of Reusable Object-Oriented Software</a></p>
<p>Conhecimento sobre design patterns &#8211; especificamente GoF neste caso, mas também hoje em dia padrões de arquitectura ou mesmo os <a href="http://java.sun.com/blueprints/corej2eepatterns/Patterns/index.html">Core J2EE patterns</a> da Sun &#8211; é essencial para o profissional que trabalhe em linguagens orientadas a objectos. Isto pode ser provado tipicamente na entrevista de emprego, já que no mínimo uma perguntinha de padrões é sempre feita (dica: se vos perguntarem para referirem um padrão de desenho que conheçam, NÃO respondam Singleton!).</p>
<p>8 &#8211; <a href="http://www.amazon.com/gp/product/020161622X?ie=UTF8&amp;tag=cantinhodobad-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=020161622X">The Pragmatic Programmer: from Journeyman to Master</a></p>
<p>Tal como o já referido Effective Java está para o Java, este livros está para a profissão de desenvolvimento de software. Os autores tentam cobrir as áreas que apenas se aprendem com a experiência profissional como um conjunto de boas práticas a seguir.</p>
<p>Tanto para profissionais com pouca experiência &#8211; que vão aprender algumas boas dicas &#8211; como para profissionais com extensiva experiência &#8211; que vão rever no livro muita coisa pela qual passaram mas agora organizada e esquematizada -, este livro prova-se uma leitura útil e bastante agradável.</p>
<p>9 &#8211; <a href="http://www.amazon.com/gp/product/0201485672?ie=UTF8&amp;tag=cantinhodobad-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0201485672">Refactoring: Improving the Design of Existing Code</a></p>
<p>Refactoring, refactoring, refactoring!</p>
<p>Actualmente a grande maioria dos profissionais sabe o que é refactoring &#8211; mesmo que não o pratiquem assim tanto &#8211; mas é extremamente estranho como um conceito tão simples não tinha sido esquematizado correctamente antes deste livro.</p>
<p>Pode-se pensar que não é necessário ler um livro sobre refactoring, pois na prática temos IDEs que nos ajudam a fazer grande parte do trabalho mas quando se olha para o projecto numa perspectiva macro, o refactoring não é assim tão simples. Este livro ajuda a reprogramar a nossa cabeça para estar constantemente em modo refactoring.</p>
<p>10 &#8211; <a href="http://www.amazon.com/gp/product/0135974445?ie=UTF8&amp;tag=cantinhodobad-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0135974445">Agile Software Development, Principles, Patterns, and Practices</a></p>
<p>Embora o título o possa fazer entender, este livro não é exclusivamente sobre metodologias ágeis. A verdade é que conjuga a enumeração de múltiplas metodologias ágeis com princípios de desenvolvimento de software como orientação a objectos e UML.</p>
<p>Ao contrário de outros livros sobre metodologias ágeis, o autor &#8211; que é um dos signatários iniciais do Agile Manifesto &#8211; não tenta puxar por nenhuma metodologia, embora fale mais de eXtreme Programming &#8211; TDD, refactoring, pair programming. É esta perspectiva integrada de agile + tecnologia que torna este livro num recurso essencial.</p>
<p>11 &#8211; Bónus &#8211; livro de Python/Ruby/Haskell/Scala/Groovy/Clojure ou outra linguagem</p>
<p>Esta lista é focada em Java e exactamente por causa disso, aconselho a se aprender pelo menos uma outra linguagem, esteja esta disponível para a JVM ou não.</p>
<p>Aprender linguagens novas faz-nos melhores programadores e especialmente agora com o renascimento de linguagens funcionais, também pode vir a ser uma vantagem profissional.</p>
<p>Certamente esqueci-me de outros livros importantes mas estes são daqueles que considero poderem contribuir muito para a qualidade que um profissional pode vir a atingir. Aceito recomendações para outros livros.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/40e23b37-9038-4ea6-82db-8fbe8f876083/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=40e23b37-9038-4ea6-82db-8fbe8f876083" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ZonaJ?a=27plmHZHQcY:T-P32b_BDLg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ZonaJ?i=27plmHZHQcY:T-P32b_BDLg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ZonaJ?a=27plmHZHQcY:T-P32b_BDLg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ZonaJ?i=27plmHZHQcY:T-P32b_BDLg:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ZonaJ?a=27plmHZHQcY:T-P32b_BDLg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ZonaJ?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ZonaJ/~4/27plmHZHQcY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zonaj.org/2009/05/03/10-1-livros-essenciais-para-o-programador-java/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.zonaj.org/2009/05/03/10-1-livros-essenciais-para-o-programador-java/</feedburner:origLink></item>
		<item>
		<title>Variância em Java</title>
		<link>http://feedproxy.google.com/~r/ZonaJ/~3/BW10rW_DE98/</link>
		<comments>http://www.zonaj.org/2009/03/12/variancia-em-java/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 07:00:08 +0000</pubDate>
		<dc:creator>Ruben Badaró</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[Adicionar nova tag]]></category>
		<category><![CDATA[imasters]]></category>
		<category><![CDATA[overriding]]></category>
		<category><![CDATA[tipos]]></category>
		<category><![CDATA[variancia]]></category>

		<guid isPermaLink="false">http://www.zonaj.org/?p=204</guid>
		<description><![CDATA[Variância em sistemas de tipos de linguagens orientas a objectos é uma noção simples e com a qual nos deparamos todos os dias mas é complexa de explicar. Eu tenho normalmente dificuldade em explicar o que é a outras pessoas por isso decidi escrever este post e assim mando-lhes apenas o link  
Variância neste [...]]]></description>
			<content:encoded><![CDATA[<p>Variância em sistemas de tipos de linguagens orientas a objectos é uma noção simples e com a qual nos deparamos todos os dias mas é complexa de explicar. Eu tenho normalmente dificuldade em explicar o que é a outras pessoas por isso decidi escrever este post e assim mando-lhes apenas o link <img src='http://www.zonaj.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Variância neste contexto está directamente relacionada com herança. É relevante para compreender como é feito matching de parametros de métodos, resultados de retorno, tipos genéricos e outros casos.</p>
<p>Existem três tipos de variância: invariância, covariância e contravariância.</p>
<ul>
<li><strong>Covariância</strong></li>
<p>Suponhamos o seguinte caso:</p>
<pre class="prettyprint">public class X {
    Object getValue() { return null; }
}

public class Y extends X {
    String getValue() { return null; }
}</pre>
<p>A covariância neste caso está no tipo de retorno. Significa que se a classe Y é mais específica que X (Y&lt; X) então qualquer método de Y que faça override a um método de X tem de retornar um tipo <strong>igual ou mais específico</strong>. Neste caso, o tipo de retorno do método que faz override é String, que é mais específico que Object.<br />
Diz-se, pois, que os tipos de retornos em Java são covariantes (<a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4144488">desde a versão 1.5</a>).</p>
<li><strong>Covariância</strong></li>
<p>Contravariância é efectivamente o inverso de covariância. Significa que se a classe Y é mais específica que X (Y&lt;X) então qualquer método de Y que faça override a um método de X tem de retornar um tipo <strong>igual ou mais genérico</strong>.</p>
<p>Em Java não há contravariância e overriding de métodos é sempre invariante &#8230; que passo a explicar de seguida. É no entanto possível ter contravariância usando wildcards de generics.</p>
<li><strong>Invariância</strong></li>
<p>Em Java overriding de métodos é invariante, ou seja, para se redefinir um método numa subclasse, os parâmetros têm de ser exactamente do mesmo tipo do seu ancestror.</p>
<p>Este comportamento é muitas vezes descurado, veja-se o seguinte exemplo:</p>
<pre class="prettyprint">public class A {
    boolean equals(A object) {
        //Fantastico, sempre igual
        return true;
    }
}</pre>
<p>Como o overriding é invariante, não estamos na realidade a fazer override do método boolean equals(Object o) mas sim overload, adicionando um novo método com outra assinatura. O pior é que passa completamente despercebido.</p>
<p>A solução desde Java 5 é adicionar a anotação @Override que vai permitir que o compilador detecte estes casos e informe que não estamos realmente a redifinir um método. Aliás, todos os IDEs decentes sugerem que se adicione esta anotação.</ul>
<p style="font-weight:bold;font-size:large">Uma nota sobre Generics</p>
<p>As noções de covariância e contravariância são importantes de ter presente quando definindo classes tipificadas com generics, especialmente quando se usam as wildcards para explicitamente definir relações entre tipos. Não estamos a definir realmente relações hierárquicas entre tipos, pois não há a relação de herança entre classes genéricas mas estamos a definir relações entre os tipos que parametrizam essa classe, se me consigo fazer entender.</p>
<p>Por exemplo:</p>
<pre class="prettyprint">public class Teste {
    void pseudoCovariante(List&lt;? extends A&gt; param) {}

    void pseudoContravariante(List&lt;? super A&gt; param) {}
}</pre>
<p>Aqui definimos dois métodos para dar exemplos de como dotar classes tipificadas de noções de contravariância e covariância, já que se não usarmos wildcards temos parametros invariantes.</p>
<p>Espero ter conseguido explicar os conceitos básicos. Estas noções aparecem em diversos textos sobre linguagens de programação e é essencial compreender estas noções para se entender bem o sistema de tipos da linguagem Java.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><span class="zem-script more-related"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ZonaJ?a=BW10rW_DE98:QaJ_9sDjmiI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ZonaJ?i=BW10rW_DE98:QaJ_9sDjmiI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ZonaJ?a=BW10rW_DE98:QaJ_9sDjmiI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ZonaJ?i=BW10rW_DE98:QaJ_9sDjmiI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ZonaJ?a=BW10rW_DE98:QaJ_9sDjmiI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ZonaJ?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ZonaJ/~4/BW10rW_DE98" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zonaj.org/2009/03/12/variancia-em-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.zonaj.org/2009/03/12/variancia-em-java/</feedburner:origLink></item>
		<item>
		<title>Explicações de Excepções Java</title>
		<link>http://feedproxy.google.com/~r/ZonaJ/~3/MWLEnysnraA/</link>
		<comments>http://www.zonaj.org/2009/02/24/explicacoes-de-excepcoes-java/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 02:46:04 +0000</pubDate>
		<dc:creator>Ruben Badaró</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[geral]]></category>
		<category><![CDATA[funny]]></category>

		<guid isPermaLink="false">http://www.zonaj.org/?p=201</guid>
		<description><![CDATA[Gostaria apenas de deixar um link para uma excelente e detalhada explicação das mais comuns excepções java, com um pouco de humor.
Explanations of Common Java Exceptions
]]></description>
			<content:encoded><![CDATA[<p>Gostaria apenas de deixar um link para uma excelente e detalhada explicação das mais comuns excepções java, com um pouco de humor.</p>
<p><a href="http://rymden.nu/exceptions.html">Explanations of Common Java Exceptions</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ZonaJ?a=MWLEnysnraA:ftHLouaqnN4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ZonaJ?i=MWLEnysnraA:ftHLouaqnN4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ZonaJ?a=MWLEnysnraA:ftHLouaqnN4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ZonaJ?i=MWLEnysnraA:ftHLouaqnN4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ZonaJ?a=MWLEnysnraA:ftHLouaqnN4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ZonaJ?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ZonaJ/~4/MWLEnysnraA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zonaj.org/2009/02/24/explicacoes-de-excepcoes-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.zonaj.org/2009/02/24/explicacoes-de-excepcoes-java/</feedburner:origLink></item>
		<item>
		<title>Maven &amp; Cª – Gestão de Builds e Dependências</title>
		<link>http://feedproxy.google.com/~r/ZonaJ/~3/GwJ-Q4nCVYU/</link>
		<comments>http://www.zonaj.org/2009/02/02/maven-c%c2%aa-gestao-de-builds-e-dependencias/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 11:56:57 +0000</pubDate>
		<dc:creator>Ruben Badaró</dc:creator>
				<category><![CDATA[geral]]></category>
		<category><![CDATA[Build Management]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Maven]]></category>

		<guid isPermaLink="false">http://www.zonaj.org/?p=195</guid>
		<description><![CDATA[Na passada quinta-feira fiz a minha apresentação sobre Maven no 4º Encontro do PT.JUG.
Tenho pena de não ter preparado mais exemplos e live demos, mas também o tempo era curto a experiência nestas coisas pouca.
Aqui ficam os slides da apresentação.


(tags: build dependency-management)


]]></description>
			<content:encoded><![CDATA[<p>Na passada quinta-feira fiz a minha apresentação sobre Maven no 4º Encontro do PT.JUG.<br />
Tenho pena de não ter preparado mais exemplos e live demos, mas também o tempo era curto a experiência nestas coisas pouca.</p>
<p>Aqui ficam os slides da apresentação.</p>
<p><center></p>
<div style="width: 425px; text-align: left;" id="__ss_977051"><object style="margin: 0px;" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=ptjug2-1233504330516852-3&amp;stripped_title=maven-e-c-gesto-de-builds-e-dependncias"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=ptjug2-1233504330516852-3&amp;stripped_title=maven-e-c-gesto-de-builds-e-dependncias" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">(tags: <a style="text-decoration: underline;" href="http://slideshare.net/tag/build">build</a> <a style="text-decoration: underline;" href="http://slideshare.net/tag/dependency-management">dependency-management</a>)</div>
</div>
<p></center></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ZonaJ?a=GwJ-Q4nCVYU:0euuggZpzKQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ZonaJ?i=GwJ-Q4nCVYU:0euuggZpzKQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ZonaJ?a=GwJ-Q4nCVYU:0euuggZpzKQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ZonaJ?i=GwJ-Q4nCVYU:0euuggZpzKQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ZonaJ?a=GwJ-Q4nCVYU:0euuggZpzKQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ZonaJ?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ZonaJ/~4/GwJ-Q4nCVYU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zonaj.org/2009/02/02/maven-c%c2%aa-gestao-de-builds-e-dependencias/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.zonaj.org/2009/02/02/maven-c%c2%aa-gestao-de-builds-e-dependencias/</feedburner:origLink></item>
		<item>
		<title>4º Encontro PT.JUG – Já esta Quinta-Feira</title>
		<link>http://feedproxy.google.com/~r/ZonaJ/~3/GraYr9wczEo/</link>
		<comments>http://www.zonaj.org/2009/01/26/4%c2%ba-encontro-ptjug-ja-esta-quinta-feira/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 11:08:06 +0000</pubDate>
		<dc:creator>Ruben Badaró</dc:creator>
				<category><![CDATA[geral]]></category>
		<category><![CDATA[evento]]></category>
		<category><![CDATA[ptjug]]></category>

		<guid isPermaLink="false">http://www.zonaj.org/?p=191</guid>
		<description><![CDATA[O 4º Encontro PT.JUG irá realizar-se já dia 29 de Janeiro, esta Quinta-feira. Aqui ficam os dados:
Data: 29 Janeiro 2009
Hora: 18h30 &#8211; 21h00
Local: Hotel Radisson SAS, Campo Grande
Apresentações:

&#8220;Maven e companhia &#8211; gestão de builds e dependências&#8221; &#8211; Ruben Badaró (moi, moi)
&#8220;Sistemas de Controlo de Versões Distribuídos e Integração com ferramentas Java&#8221; &#8211; Miguel Duarte

O encontro [...]]]></description>
			<content:encoded><![CDATA[<p>O 4º Encontro PT.JUG irá realizar-se já dia 29 de Janeiro, esta Quinta-feira. Aqui ficam os dados:</p>
<p><strong>Data</strong>: 29 Janeiro 2009<br />
<strong>Hora</strong>: 18h30 &#8211; 21h00<br />
<strong>Local</strong>: Hotel Radisson SAS, Campo Grande</p>
<p><strong>Apresentações</strong>:</p>
<ul>
<li>&#8220;Maven e companhia &#8211; gestão de builds e dependências&#8221; &#8211; Ruben Badaró (moi, moi)</li>
<li>&#8220;Sistemas de Controlo de Versões Distribuídos e Integração com ferramentas Java&#8221; &#8211; Miguel Duarte</li>
</ul>
<p>O encontro será seguido de uma jantarada de convívio e de conversa informal na área.</p>
<p>A sala e coffee break são patrocinados pela <a href="http://www.truewind.pt/">Truewind</a>, que foi sensível à nossa necessidade de patrocínio e nos ajudou com pouco tempo de planeamento.</p>
<p><u>Os lugares disponíveis serão limitados por isso é aconselhado que se registem o quanto antes.</u></p>
<div style="text-align:center"><a href="http://www.truewind.pt"><img alt="Truewind" src="http://www.truewind.pt/images/truewind-logo.jpg" title="Truewind" width="150" height="62" /></a></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ZonaJ?a=GraYr9wczEo:bNSVpMi59oo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ZonaJ?i=GraYr9wczEo:bNSVpMi59oo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ZonaJ?a=GraYr9wczEo:bNSVpMi59oo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ZonaJ?i=GraYr9wczEo:bNSVpMi59oo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ZonaJ?a=GraYr9wczEo:bNSVpMi59oo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ZonaJ?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ZonaJ/~4/GraYr9wczEo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zonaj.org/2009/01/26/4%c2%ba-encontro-ptjug-ja-esta-quinta-feira/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.zonaj.org/2009/01/26/4%c2%ba-encontro-ptjug-ja-esta-quinta-feira/</feedburner:origLink></item>
		<item>
		<title>Mindmaps – Como organizar ideias e ser mais produtivo</title>
		<link>http://feedproxy.google.com/~r/ZonaJ/~3/qbzl4i6N4R4/</link>
		<comments>http://www.zonaj.org/2009/01/11/mindmaps/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 06:00:14 +0000</pubDate>
		<dc:creator>Ruben Badaró</dc:creator>
				<category><![CDATA[geral]]></category>

		<guid isPermaLink="false">http://www.zonaj.org/?p=178</guid>
		<description><![CDATA[Sou desde há uns bons anos um grande fã do uso de Mindmaps para estruturação de ideias.
Para quem possa não saber o que é um Mindmap, de acordo com a Wikipédia é  

(&#8230;) o nome dado para um tipo de diagrama (&#8230;) voltado para a gestão de informações, de conhecimento e de capital intelectual; [...]]]></description>
			<content:encoded><![CDATA[<p>Sou desde há uns bons anos um grande fã do uso de Mindmaps para estruturação de ideias.<br />
Para quem possa não saber o que é um <a href="http://pt.wikipedia.org/wiki/Mapa_mental">Mindmap</a>, de acordo com a Wikipédia é  </p>
<blockquote><p>
(&#8230;) o nome dado para um tipo de diagrama (&#8230;) voltado para a gestão de informações, de conhecimento e de capital intelectual; para a compreensão e solução de problemas; na memorização e aprendizado; na criação de manuais, livros e palestras; como ferramenta de brainstorming (tempestade cerebral); e no auxílio da gestão estratégica de uma empresa ou negócio.
</p></blockquote>
<p>Um mindmap é na realidade uma forma bastante simples de organizar ideias. Na prática, é para mim mais simples usar estes diagramas do que os rabiscos que antes escrevia em papel, que consistiam de pontos, subpontos e mais subpontos.<br />
A diferença é que com o mindmap há um agrupamento visual de ideias no lugar da organização sequencial numa lista de pontos.</p>
<p>Eu utilizo mindmaps para diversas tarefas:</p>
<ul>
<li>Escrever documentos</li>
<p>Esta minha necessidade intensificou-se porque, em primeiro lugar, passei escrever mais documentos e, em segundo lugar, passei a escrever exclusivamente em inglês visto encontrar-me a trabalhar na Irlanda. Embora esteja confortável a escrever na língua, organizar ideias e escrever numa língua estrangeira torna-se mais complicado.<br />
Quando escrevo os documentos, os meus mindmaps são normalmente o mais completos possivel, não apenas um índice organizado. O trabalho depois do mindmap é tipicamente juntas as peças.</p>
<li>Decisões</li>
<p>Quando trabalhamos, mesmo fora da engenharia de software, temos de pesar pros e contras e tomar decisões. Um mindmap é fenomenal para este efeito. Normalmente marco pros com uma seta verde e contras com uma cruz vermelha, obtendo assim uma noção visual das minhas opção apenas pelas cores. E este é apenas um dos exemplo de propriedades que se podem alterar em nós que ajudam no processo</p>
<li>Anotações de reuniões</li>
<p>Por vezes durante uma reunião necessitamos de tirar notas: coisas a fazer, o que disse uma pessoa, o que ficou de fazer outra, etc. É uma boa ideia ter um portatil com um mindmap no lugar de um caderno pois é possivel anotar em tempo real, graças a bom software.
</ul>
<p>Para fazer tudo isto utilizo o <a href="http://freemind.sourceforge.net/wiki/index.php/Main_Page">FreeMind</a>. É feito em java e como tal posso usá-lo tanto em Windows no trabalho como no Mac em casa. Verdade seja dita, nunca utilizei nenhum outro programa de mindmaps, fiquei contente logo com este.<br />
 Para completar, o programa é bastante simples de utilizar. Apenas com o teclado conseguimos criar um mindmap muito rápido: setas para mover entre nós, tab cria novo filho, Enter cria no mesmo nível, F2 edita nó. Apenas com isto, estamos a fazer um mindmap muito rápido. </p>
<p>A quem nunca experimentou, aconselho vivamente.</p>
<p><center><br />
<div id="attachment_179" class="wp-caption aligncenter" style="width: 450px">
	<a href="http://www.zonaj.org/wp-content/uploads/2009/01/mindmaps.png"><img src="http://www.zonaj.org/wp-content/uploads/2009/01/mindmaps.png" alt="Um mindmap deste próprio artigo" title="Um mindmap deste próprio artigo" width="450" height="61" class="size-full wp-image-179" /></a>
	<p class="wp-caption-text">Um mindmap deste próprio artigo</p>
</div><br />
</center></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ZonaJ?a=qbzl4i6N4R4:CDlhK4-t2iI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ZonaJ?i=qbzl4i6N4R4:CDlhK4-t2iI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ZonaJ?a=qbzl4i6N4R4:CDlhK4-t2iI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ZonaJ?i=qbzl4i6N4R4:CDlhK4-t2iI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ZonaJ?a=qbzl4i6N4R4:CDlhK4-t2iI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ZonaJ?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ZonaJ/~4/qbzl4i6N4R4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zonaj.org/2009/01/11/mindmaps/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.zonaj.org/2009/01/11/mindmaps/</feedburner:origLink></item>
		<item>
		<title>Alto desempenho com Java</title>
		<link>http://feedproxy.google.com/~r/ZonaJ/~3/SZqwfgGa3r8/</link>
		<comments>http://www.zonaj.org/2008/11/20/alto-desempenho-com-java/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 06:34:54 +0000</pubDate>
		<dc:creator>Ruben Badaró</dc:creator>
				<category><![CDATA[geral]]></category>
		<category><![CDATA[evento]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.zonaj.org/?p=172</guid>
		<description><![CDATA[Ocorreu no passado fim-de-semana o Sapo Codebits que eu, infelizmente e por estar bastante longe, não pude participar.
Acompanhei o máximo que pude pela emissão web e devo dizer que me pareceu ainda mais interessante do que a edição do ano anterior.
De entre todas as apresentações, destaco uma que foi focada em java, nomeadamente em como [...]]]></description>
			<content:encoded><![CDATA[<p>Ocorreu no passado fim-de-semana o <a href="http://codebits.sapo.pt/">Sapo Codebits</a> que eu, infelizmente e por estar bastante longe, não pude participar.<br />
Acompanhei o máximo que pude pela emissão web e devo dizer que me pareceu ainda mais interessante do que a edição do ano anterior.</p>
<p>De entre todas <a href="http://codebits.sapo.pt/intra/s/listspeakers">as apresentações</a>, destaco uma que foi focada em java, nomeadamente em como ter alto desempenho. A apresentação foi feita pelo <a href="http://codebits.sapo.pt/intra/s/speaker/27">Miguel Duarte</a>, que também fez uma outra <a href="http://www.zonaj.org/2008/07/07/analise-do-2%c2%ba-evento-ptjug/">sessão no 2º encontro do PT.JUG</a> à uns meses atrás. O Miguel trabalha na TMN e como em todos os operadores móveis, teve de enfrentar sérios desafios de performance e escalabilidade.</p>
<p>Deixo a apresentação. Posteriormente aparecerá o vídeo, que sei que o Miguel não vai gostar que meta aqui <img src='http://www.zonaj.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div style="width:425px;text-align:left" id="__ss_763945"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/codebits/alto-desempenho-com-java-presentation-763945?type=powerpoint" title="Alto Desempenho com Java">Alto Desempenho com Java</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=codebits2008-1227013804933126-8&#038;stripped_title=alto-desempenho-com-java-presentation-763945" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=codebits2008-1227013804933126-8&#038;stripped_title=alto-desempenho-com-java-presentation-763945" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<p><img style="visibility:hidden;width:0px;height:0px;" border=0 width=0 height=0 src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyMjcxMzc5OTg5NzMmcHQ9MTIyNzEzODM4MjM4MiZwPTEwMTkxJmQ9Jmc9MiZ*PSZvPTQyNTc3YTZiYzc3MjQ*ZWVhNmNkNGI3ZDEzODYwYmI1.gif" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ZonaJ?a=SZqwfgGa3r8:9aMYwkCkQhk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ZonaJ?i=SZqwfgGa3r8:9aMYwkCkQhk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ZonaJ?a=SZqwfgGa3r8:9aMYwkCkQhk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ZonaJ?i=SZqwfgGa3r8:9aMYwkCkQhk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ZonaJ?a=SZqwfgGa3r8:9aMYwkCkQhk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ZonaJ?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ZonaJ/~4/SZqwfgGa3r8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zonaj.org/2008/11/20/alto-desempenho-com-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.zonaj.org/2008/11/20/alto-desempenho-com-java/</feedburner:origLink></item>
		<item>
		<title>Sun Microsystems despede 6000: e o Java?</title>
		<link>http://feedproxy.google.com/~r/ZonaJ/~3/ZXwnSysrOSM/</link>
		<comments>http://www.zonaj.org/2008/11/14/sun-microsystems-despede-6000-e-o-java/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 18:12:41 +0000</pubDate>
		<dc:creator>Ruben Badaró</dc:creator>
				<category><![CDATA[geral]]></category>

		<guid isPermaLink="false">http://www.zonaj.org/?p=168</guid>
		<description><![CDATA[A Sun anunciou hoje que iria despedir 6000 funcionários, 18% do total, durante o próximo ano.
Algo deste género já era de espera pois nestas últimas semanas têm falado cada vez mais do colapso da Sun, que perdeu um terço do seu valor em bolsa nos últimos tempos, como se vê facilmente pelo gráfico apresentado.


A saída [...]]]></description>
			<content:encoded><![CDATA[<p>A Sun anunciou hoje que iria despedir 6000 funcionários, 18% do total, durante o próximo ano.<br />
Algo deste género já era de espera pois nestas últimas semanas têm falado cada vez mais do colapso da Sun, que perdeu um terço do seu valor em bolsa nos últimos tempos, como se vê facilmente pelo gráfico apresentado.</p>
<div style="text-align:center">
<a href="http://www.zonaj.org/wp-content/uploads/2008/11/javastock.png"><img src="http://www.zonaj.org/wp-content/uploads/2008/11/javastock-300x92.png" alt="JAVA plunges" title="JAVA stock" width="300" height="92" class="size-medium wp-image-169" /></a></div>
<p>A saída provável de que se fala é de uma venda, sendo que os principais nomes falados são os concorrentes HP, IBM, DELL e ainda a Oracle, que gosta de comprar tudo só porque pode. De entre entes uma compra por parte da Oracle poderia ser a mais problemática, não só por uma razão de cultura de empresa como alguns conflitos de interesses &#8211; não esquecer que a MySql é parte da Sun.</p>
<p>A questão que interessa pensar aqui é, o que acontecerá à tecnologia Java.</p>
<p>Uma enorme quantidade de profissionais e empresas têm uma aposta forte na tecnologia e sendo a mesma open-source, existirá de certeza gente para garantir que a plataforma continua a evoluir. Aliás, a decisão de abrir o código da plataforma Java foi das poucas decisões 100% acertadas da Sun pois permite um grau de confiança a todos os players que não teríamos se fosse uma tecnologia proprietária &#8211; estaria agora toda gente a pensar no que pode acontecer.</p>
<p>Eu na realidade até penso que um enfraquecimento da Sun até pode ajudar a evolução da plataforma.<br />
Em primeiro lugar, seria de valor uma reestruturação do JCP para agilizar e coordenar melhor o processo de evolução da linguagem que deixa muito a desejar agora. Em segundo lugar, penso que haveria muito menos conservadorismo nessas mesmas evoluções, e teríamos melhores condições de competir com plataformas que evoluem mais rápido como seja o .Net.</p>
<p>Em resumo, sim, a Sun está na merda, mas o Java vai continuar saudável. Ainda melhor do que está actualmente, espero eu.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ZonaJ?a=ZXwnSysrOSM:8uWeiao-ejo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ZonaJ?i=ZXwnSysrOSM:8uWeiao-ejo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ZonaJ?a=ZXwnSysrOSM:8uWeiao-ejo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ZonaJ?i=ZXwnSysrOSM:8uWeiao-ejo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ZonaJ?a=ZXwnSysrOSM:8uWeiao-ejo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ZonaJ?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ZonaJ/~4/ZXwnSysrOSM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zonaj.org/2008/11/14/sun-microsystems-despede-6000-e-o-java/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.zonaj.org/2008/11/14/sun-microsystems-despede-6000-e-o-java/</feedburner:origLink></item>
	</channel>
</rss>
