<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	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/"
	>

<channel>
	<title>Zona J &#187; essenciais</title>
	<atom:link href="http://zonaj.org/tag/essenciais/feed/" rel="self" type="application/rss+xml" />
	<link>http://zonaj.org</link>
	<description>Zona Java - Um blog português sobre java.</description>
	<lastBuildDate>Sun, 29 Jun 2014 18:29:19 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.41</generator>
	<item>
		<title>10 (+1) livros essenciais para o programador Java</title>
		<link>http://zonaj.org/2009/05/03/10-1-livros-essenciais-para-o-programador-java/</link>
		<comments>http://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><![CDATA[Ruben Badaró]]></dc:creator>
				<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 &#8230; <a href="http://zonaj.org/2009/05/03/10-1-livros-essenciais-para-o-programador-java/" class="more-link">Continue reading <span class="screen-reader-text">10 (+1) livros essenciais para o programador Java</span></a>]]></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>
]]></content:encoded>
			<wfw:commentRss>http://zonaj.org/2009/05/03/10-1-livros-essenciais-para-o-programador-java/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
