Well, I would consider the "best" option for learning programming is to attend a university in pursuit of a CS degree. Obviously that's slightly overkill I would certainly recommend VSWE's programming courses, but I'm sure you'll get that recommendation a lot. A good resource once you have a few basics down is codingbat.com. It has a large number of practice problems, from very simple to deviously complex. Although certainly unnecessary for learning the basics of java, eclipse is an extremely useful programming environment I could not for larger projects. I thoroughly enjoy helping people learn programming and would be happy to answer any questions you might have. Edit: agree about the book. Books are a good supplement and resource, but programming is not something you should try to learn by yourself reading a book.