This book gives a thorough treatment of OO concepts and how they can be implemented in Java. It's a good intro to the language as well, and is example-based in its coverage of concepts. After becoming frustrated with various reference books, I decided to look carefully for a book that would teach solid principles of OOP and also provide immediate experience in writing useful programs in Java. This book distinguishes itself by going above and beyond those requirements. The introduction to the emerging area of design patterns was inspirational. However, the book omitted treatment of Threads and Networking in favor of "miscellaneous" topics like RMI and JDBC, and particular applications that illustrate the principles of design patterns like Fast Fourier Transform and printing. Not a complete reference, but as an introduction to some very important software design concepts it cannot be beat by other books that try to cover the entire language.