Что посоветуете тому, кто хочет начать учить Java? С чего начать изучение?

Какие книги посоветуете по Java?

Какие программы?

Дело в том, что хочу начать учить разработку web-приложений, а с чего начать я даже не знаю