I cut my teeth on Java programming a decade and a half ago using the 1st edition of this book. When I saw the 9th edition was out I was curious about what I could still learn about Java and how an author would handle the huge expansion of the language over the years. Turns out to be quite a bit and quite well.
If you're new to Java, this book will give you a great grounding in the language. And if you've been around the block a few times, it still has plenty to teach you. Shortly after it arrived, I was able to dig into some nuances of certain programming practices (imported static methods, and anonymous inner classes) that divided our development staff at work. It's great to have an easy to read reference that covers the topics from beginner level down to the hard-core detail stuff.
The book does a good job of covering the breadth of Java, including features added over the years, without becoming unwieldy. My only criticism was that were still several comparisons to C++. In the first edition in the mid-1990s, that might have made sense, since C++ was the dominant object-oriented language, and developers were 'making the switch.' But that's been a while, and I would think that programmers learning OO programming now would start with Java, making some of the references to C++ irrelevant. So, I lopped off a star in my rating for that. Maybe too harsh; maybe it's only a half star deduction.
The bottom line is that is a book that you'll want to have regardless of where you are in your Java experience. Good for a beginner and good if you need to drill deep. If you have one of the earlier editions, it's worth the upgrade.