Цитирую свой ответ в соседнем вопросе:
"Если у Вас не очень технический бекграунд, то стоит начать с курса на платформе Javarush. Многие ее критикуют, но в их курсе реально очень доступно обьясняют базовые конструкции языка.
Если Вы уже программировали на других языках, то есть бесплатный и хороший курс -
"Java. Базовый курс". Курс отхватывает все базовые возможности языка."
Зависит от уровня познания программирования.
Из литературы: для начального подойдет Б. Эккель "Философия Java" (классика жанра, в общем-то), далее можно познакомиться с реализацией основных алгоритмов и структур данных: Р. Лафоре "Структуры данных и алгоритмы Java", а также Р. Седжвик К. Уэйн "Алгоритмы на Java" - в помощь. Больше времени уделяйте практике: проделывайте все задания, переписывайте примеры из книг. Прежде чем узнать решение из книги, постарайтесь придумать его самостоятельно.
Наконец, не стоит забывать про официальную документацию от Oracle, а также различные ресурсы: stackoverflow, форумы и прочее.
Дальнейший путь зависит от специализации, но это уже другой вопрос.
К сказанному Алексеем хочется добавить, что есть еще сайты, позволяющие не только почитать про основы языка, основные классы, библиотеки, и, так сказать, готовых рецептов по совершенно конкретным мелочам и т.п. Но и прямо на сайте, не отходя от кассы, поиграться с куском кода, запустить, изменить, и мгновенно увидеть, что на что влияет.
Это очень хорошо мотивирует в начале обучения. Не надо самому писать много кода, компилировать, запускать, а прямо на сайте, в любой удобной обстановке (хоть в транспорте по дороге домой), что-то поисследовать. Вот пример: http://www.tutorialspoint.com/java/index.htm
Если коротко, то так: