Back in the day everyone learned OO through C++ and Java. At present, however, increasingly more people discover OO through Ruby and Python and pay a much smaller price in the process: Ruby and Python are interpreted, no need to compile them, dynamically typed, come with superior memory management and coding in both (though Python in particular) involves a lot less typing.
Nonetheless, Java's position is still strong and will likely remain that way for a good few reasons: statically typed languages offer superior performance, no need for an interpreter improves embeddability and, most importantly, they have a wide de-facto adoption. In addition to that, most colleges teach Java.
Everybody loves to hate Java, especially people from the interpreted language world, but if you're a software engineer by profession, sooner or later you will end up coding in supporting, or debugging Java apps.
Folks already familiar with OO but with no formal Java experience have a harder-than-necessary time getting into Java world -- reaching out for a book of the "Starting Java" ilk comes with a lot of overhead as they're often targeted at absolute newbies, and one can easily get turned off reading through yet another definition of polymorphism and a ton of stuff truly irrelevant to what one wants to achieve.
If you're an advanced OO developer who tries to get up to speed on Java, here is my single strongest reading recommendation: Effective Java (2nd Edition) by Joshua Bloch. It's is a clear and concise vademecum through Java idioms, quirks and antipatterns. The book is very well structured and focuses on the essentials. Though it's not meant to be read cover-to-cover, it's so absorbing that with all likelihood you'll wind up reading it in one weekend, and you'll keep returning to consult individual "items" as necessary.
The book gets an exceptionally high rating on Amazon with most reviews coming from Java old-timers.