It is not easy to learn a programming language from a book. I've discovered that before, and discovered it again with this book.
I'm fairly comfortable with C and with object-oriented programming (Smalltalk), and I know a little C++, so I thought that this book would suit me, but I was wrong. I know that different people learn in different ways, and perhaps, for me, learning Java by comparing it with C or C++ is not the way to go. I also suspect that this book, in trying to cover "essentials," leaves out so many "non-essentials" that its coverage feels incomplete.
On a positive note, the book was fun and easy to read. I read it all the way through, and worked through all the examples. It was thrilling to see my first applet running, but unfortunately it was quite a struggle before I could get it to work. The book supplies the code, but does not explain "non-essentials" such as how to set up the PATH and CLASSPATH variables so that the browser can find the code. It also gives only a mention to packaging and directory structure, and what these mean to the Java programmer.
The book also does not always do a good job of explaining the differences between Java and C/C++. As an example, it seems to me that the major difference between Java and C++ in exception handling is that Java forces the programmer to handle exceptions. If my program calls a method that may throw an exception, then I have no choice but to handle it -- the compiler checks that my method either catches it, or throws it again, and won't compile the code otherwise. In C++, on the other hand, it's entirely up to the programmer whether any exceptions ever get handled. That's an important difference, never mentioned at all in the book.
Like many (most?) other beginning Java books, this book provides code for some cool applets, but very little guidance for writing real applications that actually do something. There are examples, but little general explanation. By the time I finished working through the book, I could do the exercises given in it, but had no idea how to do any other programs, or where to look for help.
If you're looking for a beginning Java book, this is probably not the one to choose. See if you can find a book that gives general explanantions and sample code for each concept, and then gives you an assignment to work through, using that concept. Ideally, it will give you first a broad outline describing what your program should do and what the screen or output should look like, followed by some pseudo-code, walking you through the structure of the program. Then, in the back of the book where it's not easy to see by mistake, it will supply the actual code so that you can look up a line or two each time you get stuck or aren't sure of the syntax.
Maybe I should write it myself...