As a C++ programmer I've found Java is a very easy language to pick up, but a harder one to master. Of course, although the syntax is similar Java brings its own set of idioms - the 'ways of doing things'. The most obvious difference must be memory management, an issue that preoccupies C++ programmers and yet tends to be a non-issue for Java programmers.
A key aspect of this book is that it shows me how to tackle in Java some of the problems that I'm familiar with in C++ from the GOF book. However, don't think that this is just a re-write of the GOF book using Java examples. There are 18 patterns additional to the 23 in the GOF book. The descriptions are fresh, sometimes shedding new light on the patterns I thought I understood. Some of the examples are similar, but I actually found that to be an advantage.
Another big benefit is that each pattern is described in UML, with a very good introductory chapter to explain the notation. I suspect most people will find it easier to learn UML by example than from a specification.
There is a short chapter on the software lifecycle, attempting to show how use cases and design patterns fit into the overall process. Personally I thought this treatment was too brief to be really useful.
The book is accompanied by a CD with a useful HTML index to source code examples for each pattern. A minor complaint is that the examples are generally not free standing. Maybe I'm getting lazy, but it would have been nice if at least one example for each pattern could be run 'out of the box'.
The CD also has trial versions of tools including Together, Rational Rose and System Architect (Popkin). The Together product is well worth a look as a competitor to Rational Rose.
Perhaps a little pricey, but I'd recommend this book to anyone who is familiar with the GOF book and would like to see how the ideas map over to Java. If you want to learn UML as well, all the better!