I decided to read this book about 18 months after having to learn Java in a hurry after discovering what I had been lead to believe was a C# role turned out to be a Java role. Despite several years of programming in C++ and C# I figured there must be lots of stuff that was different in Java and that this book would be a good way to find out. The first chapter is a 40 page general introduction to Java and I found it such a dry read that I gave up. Then, twelve months later, I decided I really should read it cover to cover to find out what I was missing and it took me five months to do it!
Although solid and reasonable well written the book is a dry read most of the way through. The chapter on streams is especially hard going. Although in many cases each method of a class being discussed is described in detail, this book represents a medium level (as opposed to high or low level) introduction to the language. As you would expect it covers classes, interfaces, inheritance, polymorphism, enums, control flow, generics, threading, reflection, etc. so you do get a good overview of the language. However it does not go into any detail about how to compile or run Java programs, neither does it mention ANT or describe how to create JARs. If you want a practical tutorial, this is not the book for you.
I didn't agree with a lot of the “good coding style” suggestions such as using a fall through comment in switch blocks to tell the reader of the code what he should already know the language does or using continue in a bodiless
forloop as a semi-colon may get deleted or forgotten. Many people, including myself and the creators of the spring library, believe that checked exceptions are a bad thing in most cases and should not have been added to the lanuguage, so I find bad advice like “Nearly all exceptions you create should extend
Exception, making them checked exceptions” appalling. There are a number of examples of poor practice throughout the exceptions chapter.
Overall I think most Java developers would benefit from reading this book just to plug a few of the inevitable gaps in their knowledge. It is hard going, but worth it. As it covers Java 1.5 and Java 1.7 is nearly upon is, it would certain benefit from an update and a review of good programming practice.