Список книг для начинающего
Java-программиста

Введение

Очень часто новички при изучении Java меня спрашивают, какие книги необходимо прочитать, чтобы получить самые начальные знания по Java и смежным технологиям.
Это далеко не простой вопрос, т. к. предполагается, что книги должны быть на русском языке и охватывать необходимый, а самое главное — актуальный пласт знаний.
Практически все книги, предлагаемые издательствами, являются переводами, которые зачастую грешат опечатками, неточностями, странным форматированием кода, дословным (машинным) переводом технических терминов и на день своего издания уже содержат устаревшую информацию.
Но нам выбирать не приходится, и придется читать то, что предлагают издательства (либо учить английский), игнорируя перечисленные выше недостатки.
Стоит сказать, что Java и в Африке Java: азы по данному языку можно получить практически из любой книги, какая бы старая она не была. А уже потом, окрепнув в основах, читать про изменения, которые появились в тех или иных версиях. Благо статей, описывающих все фичи разных выпусков языка, полно: 1, 2. Да и кладя руку на сердце, скажем честно, новичкам самые последние нововведения не нужны — не тот уровень проектов, чтобы их применять.
В данной статье я перечислил все те книги, которые по моему субъективному мнению стоит прочитать. А также, дал краткий обзор на большую часть из них, описав достоинства и недостатки.
Ссылки на некоторые книги ведут на английскую версию. Это сделано для того, чтобы вы знали, какое последнее издание есть на английском и какое уже переведено на русский.

1. Как читать книги из списка

Все книги из списка ниже расположены в порядке, в котором их следует читать.
Выберите в нем хотя бы две книги по основам Java, которые подходят вам по стилю, и читайте их. Это книги из пунктов 1−4. При этом читайте в них только те темы, которые вы изучаете в данный момент. Не забегайте вперед и не читайте впрок - мозг просто не усвоит эту информацию, а вы потеряете время.
Изучение Java и Git происходит совместно, что предполагает параллельное чтение книг по этим направлениям. Git не самый простой инструмент, поэтому не пытайтесь читать все подряд. На первых порах достаточно изучить первые две главы, представленной в списке книги.
Также с какого-то момента вам нужно будет начать изучать ООП и SQL, что добавит еще пару книг к прочтению к тем, что вы уже используете.
Информация про ООП есть в любой книге по основам Java - берите ее из них. В качестве дополнительного источника обязательно используйте книгу "Объектно-ориентированный подход".
По SQL и базам данных существует очень много информации. Не пытайтесь прочитать все от корки до корки. На данном этапе изучайте только основы.
Книги, имена которых начинаются со *, являются более сложными и их следует читать в последнюю очередь, например, ближе к середине курса BaseJava.

2. Список для чтения

1. Изучаем Java, Сьерра Кэти
2. Java. Библиотека профессионала. Том 1. Основы, Кей Хорстманн
3. Java. Полное руководство, Шилдт Герберт
4. Java from EPAM, 2е изд.
5. Pro Git, Scott Chacon
6. Объектно-ориентированный подход, Вайсфельд Мэтт, 5е изд.
7. Основы технологий баз данных, 2е изд. (1я часть)
8. Основы языка SQL
9. Грокаем алгоритмы, Бхаргава Адитья
10. *Java. Эффективное программирование, Джошуа Блох, 3е изд.
11. *Чистый код, Мартин Роберт

3. Рецензии на книги

3.1. Изучаем Java (2е издание)

Второе издание книги «Изучаем Java» из знаменитой серии Head First является одной из самых известных по изучению языка программирования Java.

Ее популярность связана с тем, что весь материал подается в игровой форме через карточки, кроссворды, головоломки, шутки и большое количество практических заданий, которые помогают углубить и закрепить полученные знания.

Книга включает в себя объяснение базовых концепций Java, таких, как переменные, операторы сравнения, циклы, массивы, объекты. Авторы также охватывают различные аспекты объектно-ориентированного программирования и многое другое.

2е издание
Одним из достоинств книги является ее доступный язык. Авторы избегают излишне сложной терминологии и объясняют материал таким образом, что даже начинающие программисты могут легко его понять. Книга также содержит многочисленные иллюстрации и диаграммы, помогающие визуализировать абстрактные концепции.
Недостатки
  • не всем нравится способ подачи материала через картинки, шутки, мультяшные диалоги
  • некоторые считают, что она слишком объемна и информацию можно было бы представить более компактно
  • основным недостатком книги является несколько устаревший материал. Она не обновлялась с 2005 года. В ней используется Java 5!
В целом, книга «Изучаем Java» является отличным ресурсом для тех, кто хочет освоить язык программирования Java. Она идеально подходит для начинающих программистов.

3.2. Изучаем Java (3е издание)

Полностью переработанное издание предыдущей книги.

Для исправления всех недостатков 2го издания и добавления нового материала, отражающего последние изменения в Java, была приглашена Триша Джи из JetBrains. Ее вклад характеризует это предложение: «Это издание представляет собой не столько обновление, сколько переписывание книги».

Данная книга является отличным пособием за счет подачи материала в игровой форме, которая превращает его изучение в увлекательное занятие.

3е издание
Особенно радует то, что авторы постоянно используют различные практические задания, головоломки, чтобы убедиться, что изучаемые читателями концепции были полностью усвоены. Такой интерактивный подход к обучению помогает быстрее запомнить материал и лучше понять его.
Код книги был актуализирован под Java 8−17.
Недостатки
  • нет русского перевода
Эта книга является хорошим источником для начинающих Java-разработчиков.

3.3. Java. Библиотека профессионала. Том 1. Основы (11е издание)

«Java. Библиотека профессионала. Том 1. Основы» является известным и популярным учебником по основам Java.

Одной из самых сильных сторон книги является ее структура. Она охватывает множество тем языка Java и дает читателю хорошее представление о его функциональных возможностях. Автор начинает с основных концепций программирования и постепенно переходит к более сложным темам.

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

На протяжении всей книги Хорстманн показывает, как эффективно использовать стандартные библиотеки и классы, чтобы облегчить и ускорить разработку программ. Также автор уделяет внимание наиболее распространенным задачам, с которыми сталкиваются программисты, и дает рекомендации по их решению.

11е издание
Однако стоит отметить, что эта книга может быть немного сложной для совсем новичков. Несмотря на это, автор старается сделать материал доступным и понятным.
Недостатки
  • хоть книга и была опубликована впервые в 2018 году, она нисколько не устарела. В ней идет описание языка до Java 11. А т. к. по статистике самой популярной версией Java до сих пор (на конец 2023 года) является 8 и 11, то книгу можно смело читать
  • абсолютным новичкам книга может показаться трудной, т. к. автор может не объяснить некоторые ключевые понятия или делать слишком большие скачки в сложности материалов, ожидая, что читатель уже знаком с ними
  • стиль написания книги иногда сух, что может отпугнуть некоторых читателей
  • высокая стоимость бумажного издания

3.4. Java. Полное руководство (12е издание)

Книга «Java. Полное руководство» Герберта Шилдта является одним из самых полных и полезных руководств по языку программирования Java. Это двенадцатое издание доказывает, что автор умеет совершенствоваться и учитывать все изменения и обновления в языке. В книге используется Java до версии 17. Она была издана в 2021 году.

Шилдт, как всегда, предлагает читателям подробное описание всех ключевых особенностей языка. Он начинает с азов, объясняя основные понятия и структуру программы на Java, углубляясь все глубже в возможности языка и его стандартных классов.

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

12е издание
Что касается стиля написания, он очень ясный и доступный. Шилдт старается избегать излишней терминологии и формулировок, что делает эту книгу прекрасным выбором как для начинающих программистов, так и для более опытных разработчиков.
Недостатки
  • одним из недостатков книги является ее объемность и чрезмерная подробность материала — у нее более 1344 страниц. Такую лучше на ногу не ронять)
  • высокая стоимость бумажного издания
В целом, «Java. Полное руководство» Герберта Шилдта — это отличный выбор для тех, кто хочет освоить или улучшить свои навыки программирования на Java. Это книга, которая охватывает все необходимые аспекты языка, предоставляя читателю необходимые знания и инструменты для разработки высококачественного программного обеспечения на Java.

3.5. Объектно-ориентированный подход

«Объектно-ориентированный подход» Мэтта Вайсфельда — это действительно важное издание, которое следует прочитать всем, кто интересуется программированием и разработкой программного обеспечения.

Четвертое издание этой книги уже считалось одним из стандартов в обучении объектно-ориентированному программированию, и пятое издание не разочаровывает. Автор внес множество изменений и обновлений, чтобы отразить последние тенденции в разработке ПО. Книга охватывает все аспекты объектно-ориентированного подхода, начиная с основных концепций и принципов и заканчивая практическими примерами и советами.

Материал в книге излагается четко и понятно. Вайсфельд использует простой и ясный язык, объясняет сложные концепции с помощью простых примеров и иллюстраций. Книга идеально подходит как для начинающих, так и для опытных разработчиков, которые хотят углубить свои знания.

5е издание
Однако, несмотря на все ее преимущества, эта книга не является исчерпывающим источником информации по объектно-ориентированному программированию. Некоторые более сложные и продвинутые темы могут быть не освещены в достаточной мере или вообще быть опущены. Тем не менее она отлично подходит в качестве введения в объектно-ориентированное мышление и программирование, и может быть использована в сочетании с другими книгами и ресурсами для более глубокого изучения данной темы.
Недостатки
  • автор не всегда достаточно подробно освещает некоторые важные концепции и принципы объектно-ориентированного программирования. Некоторые темы могут быть слишком поверхностно обсуждены, оставляя у читателя ощущение недостатка в информации. Более того, автор иногда предполагает, что читатель обладает определенными предварительными знаниями, что может создать трудности для новичков в программировании
  • рекомендуется дополнять ее чтением других литературных источников, чтобы получить более полное представление о данной теме
В конечном счете, «Объектно-ориентированный подход» Мэтта Вайсфельда — это обязательная книга для всех, кто хочет углубить свое понимание объектно-ориентированного программирования. С ее помощью вы научитесь применять принципы ООП на практике и написанию качественного кода.

3.6. Грокаем алгоритмы

«Грокаем алгоритмы» — это отличная книга, написанная Бхаргавой Адитьей. Она раскрывает мир алгоритмов, делая эту сложную тему доступной и понятной для каждого.

Автор начинает с простых понятий и постепенно вводит читателя в основные концепции алгоритмов, используя ясные и простые примеры. Он помогает понять, как решать различные задачи, анализировать их эффективность и выбирать наиболее подходящий алгоритм для решения конкретной проблемы.

Радует способ, которым автор преподносит каждый алгоритм. Он использует простые иллюстрации, графики и диаграммы, чтобы помочь читателю наглядно представить каждый шаг.

В книге рассматриваются основные алгоритмы и структуры данных, включая поиск, сортировку, хеш-таблицы, графы и многое другое. Каждый алгоритм изложен подробно, но при этом не перегружен техническими деталями.
Одно из главных преимуществ книги — это то, что она не требует от читателя предварительных знаний по программированию. Она идеально подходит как для новичков, так и для тех, кто хочет обновить свои знания в алгоритмах. Книга не только объясняет алгоритмы, но и наставляет, как использовать их на практике.
Недостатки
  • автор иногда использует термины, которые не объясняются подробно или могут быть непонятными для новичков. Это может озадачить читателя и затруднить понимание материала
  • объяснение некоторых алгоритмов и применение математических формул иногда может быть неясным. Автор предполагает, что читатель имеет определенный уровень знаний или опыта, чтобы их понять
  • книга имеет некоторые ограничение в покрытии различных алгоритмических тем. Бхаргава Адитья охватывает основные алгоритмы и структуры данных, но не всегда погружается в глубокие детали или рассматривает более сложные алгоритмы. Если вы заинтересованы в более продвинутых темах и алгоритмах, то вам, возможно, потребуется дополнительный источник информации
  • примеры кода даются на Python. Но этот код написан просто. Его поймет начинающий программист на любом языке
В целом, несмотря на некоторые недостатки, книга «Грокаем алгоритмы» является ценным ресурсом для тех, кто хочет улучшить свои знания о программировании и алгоритмах. Она предлагает понятное и практическое введение в основы алгоритмического мышления и может послужить отличным отправным пунктом для дальнейшего изучения этой темы. Она точно заслуживает места на полке каждого программиста и станет незаменимым ресурсом для изучения алгоритмов.

3.7. Java. Эффективное программирование

Книга «Java. Эффективное программирование», написанная Джошуа Блохом, представляет собой исчерпывающий руководство по эффективному программированию на языке Java. Это уже третье издание книги, что говорит о ее популярности и актуальности.

Автор профессионально и тщательно рассматривает различные аспекты языка Java, предлагая методы исключения ошибок и улучшения производительности программ. Книга наполнена множеством примеров и советов, которые помогут программистам освоить и применить эффективные практики программирования на Java.

Особое внимание в книге уделяется тонкостям использования различных аспектов языка Java, включая работу с коллекциями, использование обобщений, создание и управление потоками, обработку исключений и многие другие. Автор не только объясняет концепции и принципы, но и обосновывает свои советы реальными сценариями использования.

3е издание
В книге автор рассматривает не только стандартные и хорошо известные функции языка Java, но и более продвинутые техники и подходы, которые не всегда просты для понимания.
Однако, несмотря на все положительные аспекты, необходимо отметить, что книга может быть сложной для начинающих программистов, так как она не является вводным курсом в язык Java. Она предназначена для программистов, уже хорошо знакомых с языком и желающих улучшить свои навыки.
Недостатки
  • некоторые разделы книги могут быть несколько сложными для понимания для начинающих программистов. Автор часто предполагает, что читатель уже имеет определенные знания и опыт в программировании, что может создать сложности для новичков
  • некоторые части книги требуют глубокого понимания и многократного изучения, чтобы полностью усвоить представленные в них концепции и принципы
  • книга не является энциклопедией по языку Java. Она сконцентрирована на определенных аспектах программирования и не затрагивает все тонкости языка. Поэтому, чтобы получить более полное представление о программировании на Java, читателям придется обратиться к другим источникам информации
Книга «Java. Эффективное программирование» Джошуа Блоха, в целом, является обязательным пособием для разработчиков Java. Она предлагает множество полезных советов и стратегий, которые помогут улучшить качество кода и повысить эффективность разработки. Однако для новичков и разработчиков, желающих ознакомиться с языком Java, будет полезнее начать с более простых и доступных материалов.

3.8. Чистый код

«Чистый код» Роберта Мартина — это настоящая библия для разработчиков программного обеспечения. Книга является обязательным чтением для всех, кто хочет стать профессионалом в своей области.

Одной из главных ценностей этой книги является простота и понятность изложения. Автор использует ясный и легкий язык, что позволяет даже начинающим разработчикам без труда понять основные принципы чистого кода.

Мартин предлагает широкий спектр рекомендаций и подходов к написанию кода, начиная от названия переменных и методов до структурирования проектов. Он обращает внимание на важность читаемости и поддерживаемости кода, а также на значимость тестирования и рефакторинга.

Один из основных принципов, которому автор уделяет внимание — это принцип единственной ответственности (Single Responsibility Principle). Это означает, что каждый класс или метод должен иметь только одну задачу, чтобы обеспечить легкость поддержки и масштабируемость кода.
Книга также содержит множество примеров и практических советов, которые помогут вам стать более эффективным разработчиком. Автор часто приводит примеры плохого кода и его последующего улучшения, что помогает читателю лучше понять принципы чистого кода.
Недостатки
  • не для начинающих. Книга может показаться слишком теоретической для новичков в программировании. Мартин весьма подробно описывает свои концепции и правила, и иногда это может быть сложно усвоить для тех, кто не имеет достаточного опыта. Некоторые понятия могут быть не очень очевидными и требовать дополнительного объяснения
  • хотя книга содержит множество примеров кода, некоторые из них могут быть недостаточно конкретными и не давать полного представления о том, как использовать рассмотренные принципы на практике
«Чистый код» является ценным ресурсом для разработчиков, и многие из его принципов и рекомендаций действительно способствуют улучшению качества кода и повышению эффективности работы программиста. Она поможет вам придерживаться лучших практик и превратить ваш код в искусство.
Заключение
В данной статье были рассмотрены книги, которые необходимо прочитать любому начинающему Java-разработчику.
Если вы хотите, чтобы я включил в список книгу, которая вам кажется полезной, напишите ее название в комментариях. Если она действительно стоящая, то попадет в этот список.
Автор: Чимаев Максим
Оцените статью, если она вам понравилась!