My programming experience in procedural languages, not OOP. In September I decided to "teach myself" Java. Since then I've urchased six different Java books (and use them all). I'm making progress but have pretty much concluded that I'm still going to take a class in Java programming starting in January. The big problem with trying to use books alone is that you really can't get feedback on your programming skills. Some books have exercises and provide the solutions...those are helpful, but not enough for me.
Enter JavaRanch Cattle Drive.
The Cattle Drive provides a great way to get feedback on programming for the very beginning Java programmer. Unfortunately it doesn't get into the depths of the language. Maybe some day it will. In the meantime, the forums, like this one, allow me to pick up little bits and pieces of the language, and to
test my knowledge of what I've learned so far.
Bottom line from my perspective: take a formal class if you're a beginner. You might learn some of the language from books alone, but there's nothing like the interaction with an instructor. Good luck!