Мы привыкли к быстрому доступу к информации и столь же быстрому её поглощению. Мы предпочитаем пятиминутные ролики глубоким лекциям и коротенькие статьи — книгам. Не буду утверждать, что хорошая книга по программированию заменит любую статью, это не так. И уж точно она не заменит практику. Тем не менее, лично ко мне настоящее понимание основ программирования пришло после того, как я, прорешав сотни задач на курсе программирования JavaRush и прочитав тонну статей, начал параллельно изучать теорию по книгам и хорошо так в них углубился. Я довольно долго искал свой персональный «лучший учебник по Java для начинающих». Ниже — несколько Java книг, которые мне пригодились в большей или меньшей степени на разных этапах учёбы.
«Для самых маленьких»
Следующие три книги можно начинать читать на старте учёбы, параллельно с видео или, если учитесь на JavaRush, — вместе с первыми уровнями. Они, особенно первая, подходят людям с нулевым программистским прошлым.
"Head First Java, Изучаем Java", Кэти Сьерра, Берт Бэйтс
- Лучший самоучитель Java с нуля, для полных чайников, написан живым языком;
- Прикольные иллюстрации и юмор;
- Пояснения с жизненными примерами.
Недостатки:
- Многовато «воды» для тех, кто уже въехал в тему;
- Не всегда удачные паззлы и упражнения.
"Java. Руководство для начинающих", Герберт Шилдт
- Традиционное вдумчивое изложение основ;
- Хорошие примеры.
Недостатки:
- Есть «прыжки» от «слишком разжевано» до «мельком сказано»;
- Местами скучновато.
Кстати, у Герберта Шилдта есть ещё одна известная книга по программированию — «Java. Полное руководство». Это совсем другой учебник, более фундаментальный. К нему и переходим.
"Java для чайников", Барри Бёрд
- Лёгкий язык;
- Дельные советы и удачное введение в ряд тем (главы 1,2, 4);
- Хорошие примеры.
Недостатки:
- Не все темы изложены одинаково хорошо;
- Авторский стиль может и не нравиться.
Справочники и руководства
Книги из этого раздела пригодятся тем, кто уже ввязался в программирование на Java по полной и ищет книги для лучшего понимания теории и практики.
"Java. Полное руководство", Герберт Шилдт
- Полное руководство. Кажется, там есть все темы, которые нужно знать новичку, и не только новичку.
- Подробные пояснения.
Недостатки:
- Много воды (но это кому-то может нравиться!);
- Русский перевод не лучший.
"Java. Библиотека профессионала", Кей С. Хорстманн, Гари Корнелл
- При впечатляющем количестве страниц — мало воды (в отличие от Шилдта).
- Содержит всё, что нужно новичкам.
- Раскрывает Java 8, учитывает изменения в JDK 9, 10 и 11.
- Хорошая подача тем по коллекциям и дженерикам.
- Очень хорошо сочетается с JavaRush. Доходите до темы, решаете задачки, в какой-то момент что-то не понимаете — смотрите Хорстманна, пробуете снова.
Недостатки:
- Кому-то может показаться, что книга суховата;
- Нет практики;
- Русский перевод с ляпами.
"Java. Методы программирования", Блинов, Романчик
- Отличная подборка задач и тестовых заданий;
- Есть официальная бесплатная версия (я полагаю, что она официальная, поскольку лежит не на каком-нибудь рутрекере, а на сайте EPAM);
- Сравнение с С++.
- Возможность понять, что проходят на стажировке EPAM.
Недостатки:
- Слишком фундаментальное изложение. Но для повторения с практикой — подойдёт.
- Не учитывает Java 8 и последующих JDK. Впрочем, в этой книге главное — удачный подбор задач.
Расширенные руководства
"Java. Справочник разработчика", Бенджамин Дж. Эванс, Дэвид Флэнаган
- Краткое и хорошее изложение;
- Есть всё, что нужно;
- Хорошее описание современных инструментальных средств;
- Удачные примеры.
Недостатки:
- Не всегда удачный перевод терминологии (есть термины, которые “обычные” русскоговорящие разработчики сходу не поймут).
"Java SE 9. Базовый курс", Кей Хорстманн
- Краткость информационных блоков. Всё по делу;
- Нет лишних тем;
- Очень хороший подбор актуальных тем для изучения начинающими Java-программистами;
- Удачные примеры.
Недостатки:
- Книга не подходит для тех, кто начинает изучать программирование с нуля и до этого ни разу с ним не сталкивался.
Неувядающая классика
Книги, о которых я пишу ниже можно назвать священными текстами для начинающих и продолжающих «джавистов».
"Effective Java", Джошуа Блох
- Блестящее изложение материала по теме ООП.
- Приведены лучшие практики программирования.
- Автор очень хорошо знает Java изнутри.
Недостатки
- Новичкам может показаться сложной.
"Философия Java", Брюс Эккель
- Глубокое изложение принципов Java от профессионала;
- Хорошо зайдет тем, кто переходит с других языков — много сравнений с С++, например.
- Как мне кажется, её можно начинать читать уровня с 10-го, а вот Эккеля — чуть позднее.
Недостатки
- Очень неудачные русские переводы;
- Отсутствие нового издания книги на русском.
Краткие выводы
- Лучший самоучитель Java с нуля для тех, кто совсем ничего не знает — Head First Java;
- Лучший справочник-учебник по Java и настольная книга — «Библиотека профессионала». И, конечно, документация Oracle.
- Лучший сборник задач по программированию на Java — JavaRush. Ну а среди книг — «Java. Методы программирования».
- Лучшая неувядающая классика — «Философия Java» и «Effective Java». Это must read для всех, кто решил разобраться во всем по-настоящему, для глубокого понимания. Но лучше их читать постепенно и с расстановкой.
- Дополнительный вывод: есть возможность — читайте на английском. Русские переводы в основном очень слабые.