This is a list of Java books that I have found useful. They are in no particular order.
- Effective Java
by Joshua Bloch
- An incredible book. It covers how to program in a series of tips. I refer to it all the time.
- Thinking in Java
by Bruce Eckel
- A great book. It is the most comprehensive introduction to Java. Each example is a complete program.
- Java Thread Programming
by Paul Hyde
- Great book on thread programming. Not thread theory, but how it works in Java code.
-
Java Concurrency in Practice
by Brian Goetz
-
Fantasic book on threading in Java 5+. It covers all of the new java.util.concurrent classes.
- Java Network Programming
by Elliotte Rusty Harold
- A great introduction to Java's powerful network capabilities. It covers sockets, URL connections, etc. Well
written and nice example programs.
- Java I/O
by Elliotte Rusty Harold
- A great introduction to Java's I/O. This book covers all aspects of Java I/O.
- Java Servlet Programming
by Jason Hunter
- The servlet bible. Everything you need to know about servlets...
-
Web Development with JavaServer Pages
by Duane K. Fields, Mark A. Kolb, and Shawn Bayern
- A great book on JSPs. It also covers custom tags and tiles.
- Graphic Java Vols. 1 & 2
by David M. Geary
- Comprehensive introduction to Java GUI programming. The best GUI related books on the market. The first
volume covers the AWT, with several great chapters on layout managers. It has incredible coverage of GridBagLayout.
The second volume is hands-down the best book written about Swing; it covers everything and it covers it well.
- Design Patterns: Elements of Reusable Object-Oriented Software
by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (Gang of Four)
- This is the book that changed how object oriented programs are built. It is an incredible book. The
examples are in C++, but the text is can be read/applied/understood without the example code.
- Refactoring
by Martin Fowler
- Refactoring is the process of re-coding existing code to make it better.
This books does focus on Java, but it can be applied to any programming language.
-
Applying UML and Patterns : An Introduction to Object-Oriented Analysis and Design and the Unified Process
by Craig Larman
- This is a great book on OOA&D and the process of creating good code.
- Applying Use Cases
by Geri Schneider & Jason P. Winters
- Use cases are now integral part of the development process. This book does a great job of showing the
process from the initial discussion through the creation of the use cases.
- Writing Effective Use Cases
by Alistair Cockburn
- Cockburn is the guru of use cases. This book is the best book on just use cases.
- UML Distilled
by Martin Fowler & Kendall Scott
- A superb concise introduction to UML. Very useful
- Algorithms in C++
by Robert Sedgewick
- The book on algorithms. Sedgewick covers everything. Many of the algorithms are already
implemented by the Java core library (e.g. hashing and binary search), but many are not. There are
also Algorithms in Java volumes, but I own the C++ version.