10 dicas de livros para aprender a programar em Java. |
Java é uma das linguagens de programação mais usadas do mundo, por isso sempre é importante ter conhecimento sobre a linguagem. Confira uma lista com alguns livros para você aprender java.
1 – The Java Programming Language
Escrito pelos criadores da linguagem, serve tanto como livro de introdução a Java como também de excelente referência para manter por perto. 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.
2 – Effective Java
Escrito pelo Joshua Bloch, Effective Java é provavelmente o melhor livro sobre Java que já li. Está organizado em 78 itens e cada um é uma boa prática, por exemplo, “Preferir composição no lugar de herança”, “Evitar Finalizers” ou “Preferir anotações a padrões de nomenclaturas”. Em cada um destes pontos, o autor discute os diversos ângulos da questões aprofundadas e com justificações que demonstram um conhecimento extremo da plataforma. Além disso, o estilo de escrita é facílimo de ler. Eu demorei duas noites a ler o livro todo.
3 – Java Concurrency in Practice
“Concorrência é difícil”, é uma das mensagens principais deste livro. O autor do livro, Brian Goetz, parte deste princípio para demonstrar 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. Além de explicar os principais problemas de concorrência – live locks, dead locks, race conditions etc. – são explicadas detalhadamente as novas estruturas de dados para suporte à concorrência introduzidas no Java 5 e 6. Depois de ler este livro estou usando estas estruturas mais e mais vezes, e também construindo em cima delas conforme vou compreendendo como funcionam internamente.
4 – Concrete Mathematics: A Foundation for Computer Science
Sim, coloquei aqui um livro de matemática! 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 nos encontramos no dia-a-dia. Também são conceitos que nos ajudam a perceber melhor os diferentes algoritmos.
5 – The Algorithm Design Manual
Este não foi o primeiro livro de algoritmos que comprei nem é considerado o “standard”. O primeiro que comprei – e que, sinceramente, nunca consegui ler todo – foi o Introduction to Algorithms. Além de grosso, tem uma abordagem extremamente acadêmica e formal. 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.
6 – Algorithms in Java
Decidi incluir um outro livro de algoritmos, 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. Está dividido em cinco partes, separadas ao longo de dois volumes – Fundamentos, Estruturas de Dados, Ordenação e Pesquisa, no primeiro volume; e Grafos, no segundo volume.
7 – Design Patterns: Elements of Reusable Object-Oriented Software
Conhecimento sobre design patterns – especificamente GoF neste caso, mas também hoje em dia padrões de arquitetura ou mesmo os Core J2EE patterns da Sun – é essencial para o profissional que trabalhe em linguagens orientadas a objetos. Isto pode ser provado tipicamente na entrevista de emprego, já que no mínimo uma perguntinha de padrões é sempre feita (dica: se te perguntarem para dizerem um padrão de desenho que conheçam, NÃO respondam Singleton!).
8 – The Pragmatic Programmer: from Journeyman to Master
Tal como o já citado 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. Tanto para profissionais com pouca experiência – que vão aprender algumas boas dicas – como para profissionais com extensiva experiência – 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.
9 – Refactoring: Improving the Design of Existing Code
Refactoring, refactoring, refactoring! Atualmente, a grande maioria dos profissionais sabe o que é refactoring, mesmo que não o pratiquem tanto assim. Mas é extremamente estranho como um conceito tão simples não tinha sido esquematizado corretamente antes deste livro. 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 projeto 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.
10 – Agile Software Development, Principles, Patterns, and Practices
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. Ao contrário de outros livros sobre metodologias ágeis, o autor – que é um dos signatários iniciais do Agile Manifesto – não tenta puxar por nenhuma metodologia, embora fale mais de eXtreme Programming – TDD, refactoring, pair programming. É esta perspectiva integrada de agile + tecnologia que torna este livro num recurso essencial. Via: Senhor Tech.