For the beginner, I highly recommend "Java for UML programmers" by Robert C. Martin. It tells you only the absolutly essential things and doesn't bother you with all the details that in ninety percent of all cases you shouldn't care about anyway. It has tons of code examples, something other books often lack, and also puts a big focus on creating a good design (instead of just a correct UML diagram of a potentially shoddy design). And it's not too big...
After that, I'd probably go with "UML distilled", mostly because I like Fowler's style - although I don't know too much about the alternatives.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
When it is used for evil, then watch out! When it is used for good, then things are much nicer. Like this tiny ad: