A lot of useful information is packed into this book. However, due to the breadth of topics, it is not possible to give book-length treatment to any one topic. Because of this, the book also contains references to many web sites and other books. This is in keeping with my target audience: the person who wants to learn more about Java.
O'Reilly publishes, in my opinion, the best selection of Java books on the market. As the API continues to expand, so does the coverage. You can find the latest versions and ordering information on O'Reilly's Java books online at http://java.oreilly.com, and you can buy them at most bookstores, both physical and virtual. You can also read them online through a paid subscription service; see http://safari.oreilly.com. While many are mentioned at appropriate spots in the book, a few deserve special mention here.
First and foremost, David Flanagan's Java in a Nutshell offers a brief overview of the language and API and a detailed reference to the most essential packages. This is handy to keep beside your computer. Head First Java offers a much more whimsical introduction to the language and is recommended for the less experienced developer.
A definitive (and monumental) description of programming the Swing GUI is Java Swing by Marc Loy, Robert Eckstein, Dave Wood, James Elliott, and Brian Cole.
Java Virtual Machine, by Jon Meyer and Troy Downing, will intrigue the person who wants to know more about what's under the hood. This book is out of print but can be found used and in libraries.
Java Network Programming and Java I/O, both by Elliotte Rusty Harold, and Database Programming with JDBC and Java, by George Reese, are also useful references.
There are many more; see the O'Reilly web site for an up-to-date list.
Other Java Books
You should not consider releasing a GUI application unless you have read Sun's official Java Look and Feel Design Guidelines (Addison Wesley). This work presents the views of a large group of human factors and user-interface experts at Sun who have worked with the Swing GUI package since its inception; they tell you how to make it work well.
General Programming Books
Donald E. Knuth's The Art of Computer Programminghas been a source of inspiration to generations of computing students since its first publication by Addison Wesley in 1968. Volume 1 covers Fundamental Algorithms, Volume 2 is Seminumerical Algorithms, and Volume 3 is Sorting and Searching. The remaining four volumes in the projected series are still not completed. Although his examples are far from Java (he invented a hypothetical assembly language for his examples), many of his discussions of algorithms of how computers ought to be used to solve real problems are as relevant today as they were years ago.
Though somewhat dated now, the bookThe Elements of Programming Style, by Kernighan and Plauger, set the style (literally) for a generation of programmers with examples from various structured programming languages. Kernighan and Plauger also wrote a pair of books, Software Tools and Software Tools in Pascal, which demonstrated so much good advice on programming that I used to advise all programmers to read them. However, these three books are dated now; many times I wanted to write a follow-on book in a more modern language, but instead defer to The Practice of Programming, Brian's follow-on co-written with Rob Pike to the Software Tools series. This book continues the Bell Labs (now part of Lucent) tradition of excellence in software textbooks. In Recipe 3.13, I have even adapted one bit of code from their book.
See also The Pragmatic Programmer by Andrew Hunt and David Thomas (Addison Wesley).
Peter Coad's Java Design (PTR-PH/Yourdon Press) discusses the issues of object-oriented analysis and design specifically for Java. Coad is somewhat critical of Java's implementation of the observable-observer paradigm and offers his own replacement for it.
One of the most famous books on object-oriented design in recent years is Design Patterns, by Gamma, Helm, Johnson, and Vlissides (Addison Wesley). These authors are often collectively called "the gang of four," resulting in their book sometimes being referred to as "the GOF book." One of my colleagues called it "the best book on object-oriented design ever," and I agree; at the very least it's among the best.
Refactoring, by Martin Fowler, covers a lot of " coding cleanups" that can be applied to code to improve readability and maintainability. Just as the GOF book introduced new terminology that helps developers and others communicate about how code is to be designed, Fowler's book provided a vocabulary for discussing how it is to be improved. Many of the "refactorings" now appear in the Refactoring Menu of the Eclipse IDE (see Recipe 1.3).
Two important streams of methodology theories are currently in circulation. The first is collectively known as Agile Methods, and its best-known member is Extreme Programming. XP (the methodology, not last year's flavor of Microsoft's OS) is presented in a series of small, short, readable texts led by its designer, Kent Beck. A good overview of all the Agile methods is Highsmith's Agile Software Development Ecosystems. The first book in the XP series is Extreme Programming Explained.
Another group of important books on methodology, covering the more traditional object-oriented design, is the UML series led by "the Three Amigos" (Booch, Jacobson, and Rumbaugh). Their major works are the UML User Guide, UML Process, and others. A smaller and more approachable book in the same series is Martin Fowler's UML Distilled.