Мы привыкли к быстрому доступу к информации и столь же быстрому её поглощению. Мы предпочитаем пятиминутные ролики глубоким лекциям и коротенькие статьи — книгам. Не буду утверждать, что хорошая книга по программированию заменит любую статью, это не так. И уж точно она не заменит практику. Тем не менее, лично ко мне настоящее понимание основ программирования пришло после того, как я, прорешав сотни задач на курсе программирования JavaRush и прочитав тонну статей, начал параллельно изучать теорию по книгам и хорошо так в них углубился. Я довольно долго искал свой персональный «лучший учебник по Java для начинающих». Ниже — несколько Java книг, которые мне пригодились в большей или меньшей степени на разных этапах учёбы.
  1. Head First Java
  2. Java. Руководство для начинающих
  3. Java для чайников
  4. Java. Полное руководство
  5. Java. Библиотека профессионала
  6. Java. Методы программирования
  7. Java. Справочник разработчика
  8. Java SE 9. Базовый курс
  9. Effective Java
  10. Философия Java
Топ-10 книг по Java для начинающих - 1

«Для самых маленьких»

Следующие три книги можно начинать читать на старте учёбы, параллельно с видео или, если учитесь на JavaRush, — вместе с первыми уровнями. Они, особенно первая, подходят людям с нулевым программистским прошлым.

"Head First Java, Изучаем Java", Кэти Сьерра, Берт Бэйтс

Я начал с этой книги не потому, что она мне больше всего нравится, а потому, что она самая простая. Эта книга, по мнению очень многих программистов, — лучший самоучитель Java с нуля. Причём она по-настоящему и совсем «с нуля», то есть подходит тем, кто только-только начинает и не совсем понимает ещё, что за зверь такой — программирование. Ко мне она попала слишком поздно. Думаю, именно поэтому я не смог её оценить по достоинству. «Просто читать» её было очень приятно, а вот искать что-то конкретное в ней мне приходилось подолгу. Материал там подан живо, но довольно поверхностно (потому что с нуля!) и многих тем и нужных пояснений попросту нет. А вот мой друг, которому она ушла по наследству, был от нее в восторге и кричал, что это не просто лучший учебник по Java для начинающих, а прям мировой шедевр и именно так нужно подавать сложный материал. Топ-10 книг по Java для начинающих - 2 Достоинства:
  • Лучший самоучитель Java с нуля, для полных чайников, написан живым языком;
  • Прикольные иллюстрации и юмор;
  • Пояснения с жизненными примерами.
Недостатки:
  • Многовато «воды» для тех, кто уже въехал в тему;
  • Не всегда удачные паззлы и упражнения.

"Java. Руководство для начинающих", Герберт Шилдт

Полистав этот учебник, я подумал, что он хорошо подойдёт тем, кому нравится более традиционное изложение материала, нежели в Headfirst, и при этом они ищут самоучитель «с нуля». Местами изложение в книге очень детальное, напоминает расширенную и переведённую документацию с хорошими наглядными примерами. Иногда, как по мне, автор переходит границу, и начинает слишком уж разжевывать, читать становиться скучновато… и вдруг — кульбит — и какое-то довольно сложное место проскакивается почти мгновенно, и ты в полном недоумении пытаешься понять, что и где пропустил. Тем не менее, таких мест в книге не слишком много, и я знаю людей, которые считают, что «Руководство для начинающих» — лучший самоучитель Java для тех, кто ещё ничего не знает. Лично мне он показался не очень ровным. Скажем, начинаю разбирать коллекции, и вместо человеческого пояснения мне подсовывают задачу по самостоятельному созданию Set на основе массивов. Классная задача, но я бы хотел для начала лучше понять, что такое стандартные коллекции! Хотя эта книга, как и предыдущая, считается учебником для начинающих, мой опыт преподавателя подсказывает, что она хороша только в совокупности с другими материалами: гуманитарию-свитчеру будет не всё просто и понятно. Лучше всего "Руководство для начинающих" подойдёт тому, кто худо-бедно учил программирование (например, в универе), давным-давно на него забил, и при этом ему нравится стиль изложения автора. Особенно радует, что учебник стабильно обновляется, и в нём рассмотрены и особенности Java 8, а актуальное на 2020 год издание (седьмое) учитывает JDK 9 и JDK 10. Топ-10 книг по Java для начинающих - 3 Достоинства:
  • Традиционное вдумчивое изложение основ;
  • Хорошие примеры.
Недостатки:
  • Есть «прыжки» от «слишком разжевано» до «мельком сказано»;
  • Местами скучновато.
Кстати, у Герберта Шилдта есть ещё одна известная книга по программированию — «Java. Полное руководство». Это совсем другой учебник, более фундаментальный. К нему и переходим.

"Java для чайников", Барри Бёрд

Эта книга, признаться, попала ко мне уже когда я работал программистом. В более ранней версии статьи о полезных книгах в комментариях мне задали вопрос о ней, и когда увидел её у джуна-тестировщика на работе, решил к ней присмотреться. «Java для чайников» Барри Бёрда — интересная книга для новичков, которые готовы использовать несколько ресурсов для своего обучения. Это не учебник для начинающих, а скорее, первый справочник по Java. Её эффективнее всего изучать параллельно с пошаговыми уроками (как на JavaRush) и (обязательно!) закреплять изученное на практике сразу. По изложению я сразу признал в авторе коллегу-учителя, поскольку местами он делает остановки в неожиданных на первый взгляд местах и рассматривает затронутые вопросы очень подробно. Это неспроста: именно на этих вопросах его студенты чаще всего спотыкались. А вот некоторые темы раскрыты поверхностно… Впрочем, это книга для начинающих, от неё не стоит ждать глубин. Скажем, первые две главы хороши для начинающих, ООП (глава 3) лучше изучать по другой книге, а вот главы 4 (продвинутые методики программирования — пояснения, как пользоваться классами и методами, начала коллекций, многопоточности, обработки исключений) и 5 (советы по избеганию ошибок) я считаю очень удачными и полезными. По книге чувствуется, что автор является преподавателем, поэтому моментами в книге Несколько вопросов подробно рассмотрены здесь. Возможно, вы чувствуете, что автор является учителем, поэтому он излагает те проблемы, которые вызвали самые значительные трудности для его начинающих учеников. Но вот некоторые темы, раскрытые довольно поверхностно, на уровне информативных статей. Тем не менее, Java для чайников это книга для начинающих. Поэтому это может быть ваша первая итерация знакомства с языком. Более того, Java For Dummies легко читается, полна ярких и забавных примеров. Его можно легко прочитать в любом месте на дороге или перед сном. Если вас, конечно, устраивает авторский стиль. И помните: ни одна книга в этом мире не может превратить вас в разработчика программного обеспечения. Только практика может. Топ-10 книг по Java для начинающих - 4 Достоинства:
  • Лёгкий язык;
  • Дельные советы и удачное введение в ряд тем (главы 1,2, 4);
  • Хорошие примеры.
Недостатки:
  • Не все темы изложены одинаково хорошо;
  • Авторский стиль может и не нравиться.

Справочники и руководства

Книги из этого раздела пригодятся тем, кто уже ввязался в программирование на Java по полной и ищет книги для лучшего понимания теории и практики.

"Java. Полное руководство", Герберт Шилдт

Эту книгу я решил загрузить из интернета, чтобы оценить, а потом — купить или не купить. Шутка ли, 1300 страниц текста! Ну и цена впечатляет не меньше объема. Точно так же я поступил и с двухтомником «Библиотека профессионала» Кея Хорстманна (о ней — ниже). Забегая наперед скажу, что я остановил свой выбор на второй. Почему? Потому что в книге «Java. Полное руководство» я узрел те же недостатки, что и в «Руководстве для начинающих». Иногда разжевано, иногда — скомкано, но при этом не просто скомкано, а как-то многословно скомкано. Вероятно, это — авторский стиль и, думаю, кому-то он будет по нраву, а точнее — по мышлению. В целом «Java 8. Полное руководство» — это неплохой справочник по Java. Но лично мне изложение тех же самых тем больше понравилось в другой книге. Топ-10 книг по Java для начинающих - 5 Достоинства:
  • Полное руководство. Кажется, там есть все темы, которые нужно знать новичку, и не только новичку.
  • Подробные пояснения.
Недостатки:
  • Много воды (но это кому-то может нравиться!);
  • Русский перевод не лучший.

"Java. Библиотека профессионала", Кей С. Хорстманн, Гари Корнелл

Книги Шилдта и Хорстманна часто сравнивают друг с другом. И у той, и у другой есть преданные поклонники. Для меня именно двухтомник Хорстманна — лучший учебник по Java. Он же стал для меня настольной книгой на начальных и средних уровнях JavaRush. Когда я не понимал какую-то тему, в основном лез именно в Хорстманна, и тот многое прояснял. В книге рассматривается всё — от синтаксиса до многопоточного программирования, локализации приложений и работы с XML. И пусть вас не пугает название «Библиотека профессионала» (меня именно оно и отпугнуло), основы тут разобраны довольно хорошо. Кроме того, её полезно периодически перечитывать, чтобы освежить и упорядочить знания. Говорят, даже профессионалы находят в ней что-то полезное для себя… Не знаю. Стану профессионалом — расскажу! Топ-10 книг по Java для начинающих - 6 Достоинства:
  • При впечатляющем количестве страниц — мало воды (в отличие от Шилдта).
  • Содержит всё, что нужно новичкам.
  • Раскрывает Java 8, учитывает изменения в JDK 9, 10 и 11.
  • Хорошая подача тем по коллекциям и дженерикам.
  • Очень хорошо сочетается с JavaRush. Доходите до темы, решаете задачки, в какой-то момент что-то не понимаете — смотрите Хорстманна, пробуете снова.
Недостатки:
  • Кому-то может показаться, что книга суховата;
  • Нет практики;
  • Русский перевод с ляпами.

"Java. Методы программирования", Блинов, Романчик

Когда-то я вычитал на форуме, что есть такая книга «Промышленное программирование», и в ней неплохие задачи. Оказалось — не соврали. Я нашёл её копию в PDF на сайте белорусского EPAM’а. Там издание не самое новое (по Java 6), а написана книга как основательный университетский учебник, то есть местами изложение несколько тяжеловесное, академическое. НО! Там действительно очень хороший сборник задач по программированию на Java, а также тестовые задания. Говорят, по этой книге учатся стажёры EPAM, а также её взяли на вооружение многие оффлайновые курсы по Java. Топ-10 книг по Java для начинающих - 7 Там подход к задачам немного не такой, как у JavaRush, то есть, в среднем тут задачи чуть сложнее и каждая из них — что-то вроде… не мини, но микро-проекта. Так что рекомендую даже студентам JavaRush, так как недостатком практической стороны курса я считаю то, что все задачи в нём уже полностью спроектированы и есть слишком много подсказок. Скажем, задачи на ООП из этого сборника помогли мне очень неплохо разобраться в этом самом ООП наряду с книгами «неувядающей классики», о которых я пишу ниже. Книга написана как бы для будущих «гребцов», поэтому в ней описаны технологии Hibernate для разработки распределённых систем, а также основы HTML, XML, JavaScript. «Промышленное программирование» — если не лучший самоучитель Java, то очень неплохое учебное пособие. Но к ней нужно приходить уже подготовленным. Скажем, после десятка-другого уровней JavaRush. Позднее я обнаружил её более новое и переработанное издание, уже под именем «Java. Методы программирования». Топ-10 книг по Java для начинающих - 8 Достоинства:
  • Отличная подборка задач и тестовых заданий;
  • Есть официальная бесплатная версия (я полагаю, что она официальная, поскольку лежит не на каком-нибудь рутрекере, а на сайте EPAM);
  • Сравнение с С++.
  • Возможность понять, что проходят на стажировке EPAM.
Недостатки:
  • Слишком фундаментальное изложение. Но для повторения с практикой — подойдёт.
  • Не учитывает Java 8 и последующих JDK. Впрочем, в этой книге главное — удачный подбор задач.

Расширенные руководства

"Java. Справочник разработчика", Бенджамин Дж. Эванс, Дэвид Флэнаган

Хороший универсальный справочник, альтернатива книгам Хорстманна. Содержит информацию полезную как начинающим, так и продолжающим Java-разработчикам. Последнее на момент написания этой фразы издание (седьмое) опирается на Java 11, то есть в нём есть всё, что нужно знать начинающему разработчику. Книга не затянута, есть много примеров, рассмотрены Java API и лучшие практики разработки. Книга легко читается и из неё можно узнать и основы языка, и полезные приёмы программирования, и новые тенденции в Java. Топ-10 книг по Java для начинающих - 9 Достоинства:
  • Краткое и хорошее изложение;
  • Есть всё, что нужно;
  • Хорошее описание современных инструментальных средств;
  • Удачные примеры.
Недостатки:
  • Не всегда удачный перевод терминологии (есть термины, которые “обычные” русскоговорящие разработчики сходу не поймут).

"Java SE 9. Базовый курс", Кей Хорстманн

В оригинале эта книга называется Core Java SE 9 for the Impatient, или “Java Core SE 9 для нетерпеливых”. Не знаю, почему это не обыграли в переводе, как по мне, книга бы не терялась среди себе подобных. Так вот, в предыдущем пункте перед нами были подробные справочники для начинающих программистов, здесь же — введение в курс дела тех, кто уже неплохо разбирается в программировании. Книга организована как краткий справочник, и им очень удобно пользоваться для поиска ответа на конкретный вопрос если вы что-то забыли или раньше программировали на других языках. Что мне особенно понравилось — тексты очень краткие, по существу, без разжёвывания и воды. В книге хорошо описаны лямбда-выражения, потоки ввода-вывода, модули. Однако стоит понимать, что это книга не для полных новичков, и тут нет пояснений, что такое переменная или цикл. Зато есть, помимо того, то я уже упомянул, фундаментальные структуры, коллекции, аннотации, дженерики, логирование, многопоточность — всё то, с чем вы будете работать на практике. Признаться, эта книга мне очень нравится, и я даж сейчас иногда в неё заглядываю. Только следует помнить, что это книга не подходит тем, кто совсем ничего не знает о программировании. Она скорее для тех, кто уже изучал какой-то другой язык или тот же Java, но давно и не полностью. Топ-10 книг по Java для начинающих - 10 Достоинства:
  • Краткость информационных блоков. Всё по делу;
  • Нет лишних тем;
  • Очень хороший подбор актуальных тем для изучения начинающими Java-программистами;
  • Удачные примеры.
Недостатки:
  • Книга не подходит для тех, кто начинает изучать программирование с нуля и до этого ни разу с ним не сталкивался.

Неувядающая классика

Книги, о которых я пишу ниже можно назвать священными текстами для начинающих и продолжающих «джавистов».

"Effective Java", Джошуа Блох

Это просто сокровище, а не книга, и посвящена она базовым принципам языка от одного из его авторов Джошуа Блоха. Скорее всего, вы уже пользовались его библиотеками (в Java Collection, например). Сразу оговорюсь: полнейшим новичкам, кроме каких-нибудь вундеркиндов-спидлёрнеров книга Effective Java не нужна. Сначала лучше усвоить синтаксис, и получить хоть какую-то практику программирования, так сказать, «набить шишки», а затем уже — браться за творение Джошуа Блоха. Книга пригодится тем, кто хочет по-настоящему понимать Java, сформировать правильный подход при программировании на этом языке, понять не только как нужно делать, но прочему нужно делать именно так. А ещё тем, кто хочет глубоко познать ООП (в принципе, это взаимосвязанные вещи). Эта книга — лучший учебник по Java в разрезе объектно-ориентированного подхода к программированию. Топ-10 книг по Java для начинающих - 11Достоинства
  • Блестящее изложение материала по теме ООП.
  • Приведены лучшие практики программирования.
  • Автор очень хорошо знает Java изнутри.
Недостатки
  • Новичкам может показаться сложной.

"Философия Java", Брюс Эккель

Название этой книги говорит само за себя. Это ещё одна «альфа и омега» для всех, кто хочет знать Java! В этой книге вы найдёте хорошие и внятные примеры, и из них будет понятно, как работает Java. Мне сложно сказать, какая из двух книг — «Философия Java» или «Эффективное программирование» — лучше. Я бы сказал, что Эккель несколько лояльнее к новичкам, в то время как Блох требует какого-никакого опыта. Впервые я прочитал главу из «Философии Java», когда только начинал учиться на JavaRush (кажется, на одном из ранних уровней она значилась в рекомендованных). Тогда она мне не пошла. Зато после 10 или 12 уровня — это была песня! И, я скажу, очень полезная песня. Я возвращался к ней и позже, уже когда пришёл к «Эффективному программированию». Скажу так: Блох и Эккель пускай говорят об одном и том же, но по-разному, и примеры приводят разные. Топ-10 книг по Java для начинающих - 12Достоинства
  • Глубокое изложение принципов Java от профессионала;
  • Хорошо зайдет тем, кто переходит с других языков — много сравнений с С++, например.
  • Как мне кажется, её можно начинать читать уровня с 10-го, а вот Эккеля — чуть позднее.
Недостатки
  • Очень неудачные русские переводы;
  • Отсутствие нового издания книги на русском.
Топ-10 книг по Java для начинающих - 13

Краткие выводы

  1. Лучший самоучитель Java с нуля для тех, кто совсем ничего не знает — Head First Java;
  2. Лучший справочник-учебник по Java и настольная книга — «Библиотека профессионала». И, конечно, документация Oracle.
  3. Лучший сборник задач по программированию на Java — JavaRush. Ну а среди книг — «Java. Методы программирования».
  4. Лучшая неувядающая классика — «Философия Java» и «Effective Java». Это must read для всех, кто решил разобраться во всем по-настоящему, для глубокого понимания. Но лучше их читать постепенно и с расстановкой.
  5. Дополнительный вывод: есть возможность — читайте на английском. Русские переводы в основном очень слабые.

Что еще почитать:

Топ-10 книг по программированию для начинающих
12 особенностей уроков JavaRush
С чего начать изучение Java
Java: что учить, где учить, как учить?