I am not new to programming by any means. I have both a BA and MS in Computer Science, and I have programmed in Java before. However, it has been 10+ years since I programmed and I need to get back on the bike. Java has come a long way since I first learned the language back in 2001.
I purchased this book based on the positive reviews of others and the fact that it is quite comprehensive. I don't want to have to have three different books that cover different aspects of the language. And this book has it all. My main complaint, and hence the three stars, is that he doesn't seem to teach some of the concepts that well. While it's obvious he's very experienced, he has trouble conveying concepts that might be relatively new to readers such as myself.
For example, his chapter on multi-threading provides a great introduction as to why you need it and when to use it, but his examples seem over complicated. I wound up getting confused and went online to see some free tutorials by others and their examples made a lot more sense. In another chapter he discusses annotations, but again I feel his examples are confusing and he doesn't fully explain things. For example, I still don't understand why an annotation would have members such as String and int part of them, and he never explains why you would. He simply assumes you understand why you would want them.
So, while this book covers everything you could ever want to know about the language, I don't feel he teaches the concepts as well as one could, and therefore I feel the book is just OK.