I taught myself and I am now a pretty good programmer. I did both the Head First and Murach java books (and both JSP books), and the Joshua Bloch's book for background in more advanced topics. I also have some other specialised books on java and xml and ajax books and while useful less useful than the others. I also uses the forums, particularl javaranch, which have been invaluable.
when in doubt put it in parenthesis and stick a dollar sign in front of it, only good can come from this.