You keep asking for Java-specific UML books. You won't find them. Or if you do, *please* let me know
As I mentioned in an earlier post, there are a number of these books, I just wasn't sure which one to start with.
I arbitrarily chose to buy Robert Martin's "UML for Java Programmers," ISBN 0-13-142848-9. (Martin is also known for his book on agile programming.) I'd been waiting until I was completely through reading it to review it here, but since you ask, I'll jump the gun.
The book is excellent, and precisely addresses my concern. From the foreword to the book, written by Pete McBreen: "this book covers all of the diagrams I use on real projects. It omits all of the diagrams I have to remind teams not to use.... UML for Java Programmers is the first book I have ever read that treats the UML as a tool for programmers to help them make their day job easier. A welcome change from all of the UML books that assume you want to become a language lawyer."
The book is broken down into chapters describing the various UML diagrams that are relevant to Java programmers, giving Java-based examples of each, showing the source code alongside the UML diagram and explaining what UML elements are useful or not in that context.
Martin has a strong emphasis on avoiding over-specification. Unlike the case with blueprints and buildings, writing source code is not intrinsically more difficult than writing equally-detailed UML. Not every field and method should be shown; not every association should be diagrammed. Throughout the book are scattered cautionary examples of excessive detail.
A strong point of the book is that it's good at explaining places where a Java programmer should not need to go. For instance, in discussing aggregation and composition in class diagrams, Martin says "Aggregation... is indistinguishable [in a Java implementation] from association... various programmers and analysts adopt their own pet definitions.... I don't use the relationship at all, and I recommend that you avoid it as well." "Composition... does not have a lot of use in a Java program. C++ developers, on the other hand, find a lot of use for it." Gems like this are exactly why I was looking for a Java-specific book.
The book closes with a worked example of 60+ pages of Java source listing comprising a remotely invokable code generator for state machines, along with corresponding UML diagrams. Again, being able to see real-world UML documentation for a system of real-world complexity is invaluable.
I'd highly recommend this book to any Java programmer trying to figure out how to make practical use of the UML.