Эксперты составили ТОП книг для Java-разработчиков. Они рассказали, какие книги по Java стоит прочитать, как начинающим, так и профессиональным разработчикам.

Дмитрий Будим, Software Development Engineer in Test, airSlate.

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

– “Head First Java”, Kathy Sierra

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

Серьезная Java разработка невозможна без многопоточности.

– “Thinking in Java 4th Edition”, Bruce Eckel

Одна из фундаментальных книг по Java, которая поможет освоить базу, понять “философию”, механизмы работы и преимущества языка.

– “Java Concurrency in Practice”, Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, Doug Lea

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

– “Modern Java in Action”, Raoul-Gabriel Urma, Mario Fusco, Alan Mycroft

Книга раскрывает новые фичи и возможности языка привнесенные обновлениями Java 8 и 9. Детально описана работа со Stream API и лямбда выражениями, подходы функционального и реактивного программирования.

– “Clean Code: A Handbook of Agile Software Craftsmanship”, Robert C. Martin

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

Александр Макеев, Java разработчик в компании Arcadia.

Топ 5 книг для начинающего Java разработчика:

1) Изучаем Java / Бейтс Берт, Сьерра Кэти.

Легкая книга для введения в объектно-ориентированное программирование, концепции и сам язык Java. В ней материал преподносится таким образом, чтобы его легко можно было запомнить. Упражнения закрепляются с помощью рассказов, диаграмм и картинок.

2) Программирование на Java для детей, родителей, бабушек и дедушек / Файн Яков.

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

3) Философия Java / Эккель Брюс.

Это единственная книга, которая объясняет, почему Java спроектирован именно так, почему он работает так, как работает, почему иногда не работает. Почему в каких-то моментах он лучше, чем C++, почему иногда нет. Это та книга, которая должна быть в библиотеке каждого Java разработчика.

4) Head First. Паттерны проектирования / Эрик Фримен, Элизабет Робсон

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

5) Чистый код / Роберт Мартин.

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

Топ 5 книг для профессионального Java разработчика:

1) Effective Java / Блох Джошуа.

Данная книга исследует шаблоны проектирования и языковые идиомы, включая Lambda-выражения, потоки, обобщенные типы и коллекции. Каждая глава состоит из нескольких “элементов”, представленных в форме краткого изложения определенной темы, в котором даются конкретные советы и тонкости Java платформы. Подробные описания к каждому пункту объясняют, что делать, а что не делать и почему.

Эту книгу по алгоритмам можно рекомендовать при подготовке к техническому собеседованию…

2) Алгоритмы на Java / Джитер Кевин Уэйн, Седжвик Роберт.

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

3) High-Performance Java Persistence / Vlad Mihalcea.

Эта книга раскрывает внутреннюю работу наиболее распространенных способов доступа к данным Java. Первая часть направлена на сокращение барьера между разработчиками приложений и администраторами баз данных. Вторая часть демонстрирует, как можно использовать JPA и Hibernate без ущерба для производительности приложений.

3*) Java Transaction Design Strategies / Mark Richards.

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

Это лучшая книга по многопоточности для устранения пробелов в знаниях…

4) Java Concurrency in Practice / Brian Goetz.

Это лучшая книга по многопоточности для устранения пробелов в знаниях и недопониманий в потокобезопасности, атомарных операциях, видимости потоков и т.д вплоть до JMM. Эта книга не устарела, она все еще актуальна. В ней нет ни одной бесполезной части, которая впустую потратит ваше время, в худшем случае расскажут то, что вы уже знаете. Ее несложно читать если вы уже имеете опыт с Java.

5) Optimizing Java: Practical techniques for improving JVM application performance / Benjamin J Evans.

Книга будет полезна тем, кто хочет хорошо разобраться не только в работе сборщика мусора, но и во внутреннем устройстве JVM. В ней сосредоточено внимание на таких аспектах, как потоки, представление внутренней памяти, байт код, JIT компиляторы и т.д.

Алексей Золотарев, эксперт ПО Oracle Центра технической поддержки РДТЕХ, преподаватель Учебного центра РДТЕХ.

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

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

Итак, во-первых, это Bruce Eckel “Thinking in Java”. Книга позволяет получить представление об языке программирования с позиции осознания причинно-следственной связи между техническими конструкциями языка и теми идеями, для реализации которых они были созданы.

Во-вторых, это “Head First Design Patterns” от Eric Freeman & Elisabeth Robson. Простым и доступным языком объясняются программные шаблоны, которые, безусловно, надо знать.

В-третьих, я рекомендовал бы к прочтению книгу Тормасова А.Г. “Параллельное программирование многопоточных систем с разделяемой памятью”. Да, эта книга не про Java, она полуакадемическая, но её прочтение приводит к осознанию проблем параллелизации исполнения программных задач на более глубоком уровне, чем просто “задействовать Java Concurrency API”.

Федор Яременко, Senior Java Developer в компании «Алтимета».

В данной подборке перечислены на мой взгляд самые важные книги по Java. Так как Java – это не только язык программирования, но и огромная эко-система, список состоит как из книг, описывающих сам язык, так и фреймворки и распространённые библиотеки. Книги перечислены в порядке возрастания уровня подготовки читателя.

Кэти Сьерра «Изучаем Java».

Не смотря на то, что 2-ое издание этой книге было опубликовано почти десять лет назад, она является хорошим стартом для тех, кто раньше не сталкивался с программированием и выбрал Java в качестве первого языка. Лёгкая подача материала и многочисленные иллюстрации помогут быстро освоить новый материал.

Герберт Шилдт «Java. Руководство для начинающих. Современные методы создания, компиляции и выполнения программ на Java»

Тем, кому «Изучаем Java» Кэти Сьерры покажется слишком простой и даже наивной, для начала освоения Java пойдёт книга Герберта Шилдта. В ней достаточно подробно разбираются рассматриваемые темы, правда некоторые находят изложение автора суховатым. 7-ое издание этого бестселлера актуализировано до 10-ой версии Java.

Брюс Эккель «Философия Java».

При написании программ важно не только владеть языком программирования, но уметь выражать на нём идеи, архитектуру и алгоритмы. Эта книга поможет подойти к программированию как творческому процессу и глубже понять концепции, которые лежат в основе Java. В “Философия Java” также рассматриваются паттерны проектирования и как их реализовать на Java.

Джошуа Блох «Java. Эффективное программирование».

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

Брайан Готц «Java Concurrency на практике».

Многопоточность — достаточно сложная тема, особенно для новичков. Управление параллельными потоками исполнения требует от разработчика особые навыки и опыт, а поиск и исправление ошибок в многопоточном коде всегда очень сложены. Неудивительно, что данной теме посвящены целые книги. Труд Брайана Готца и соавторов пожуй лучший учебник по созданию многопоточных приложений на Java.

Юлиана Козмина, Роб Харроп «Spring 5 для профессионалов».

Сегодня любой Java-разработчик должен владеть знаниями Spring, т. к. это самый распространённый фреймворк, а на собеседованиях обязательно спрашивают не только как создавать приложения с помощью Spring, но и как Spring работает внутри. Данная книга подробно разбирает ключевые компоненты Spring и даёт полную информацию по механике его работы.

Кристиан Бауэр, Гэвин Кинг «Java Persistence API и Hibernate».

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

Джош Лонг, Кеннет Бастани «Java в облаке. Spring Boot, Spring Cloud, Cloud Foundry»

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

Разработчикам постоянно требуется совершенствовать свои навыки и изучать новые технологии.

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

Николай Павлов, ведущий Backend Developer, Alpina Digital.

Вот мой личный топ книг по it тематике, которые подойдут любому it специалисту в 2021 году:

Чистая архитектура. Искусство разработки программного обеспечения: Мартин Р (полезно раз год перечитывать, чтобы возвращать внутренний компас в правильное русло)

Чистый код: создание, анализ и рефакторинг: Мартин Р. Полезно раз год перечитывать, чтобы возвращать внутренний компас в правильное русло.

Проектирование веб-API: Лоре Арно. Коротко и понятно обо всех современных форматах взаимодействия клиент-серверных приложений.

Head First. Паттерны проектирования: Э. Фримен, Э. Робсон, К. Сиерра. До чтения этой книги всегда забывал редкие для работы паттерны через какое-то время. Но примеры из этой книги въелись в мою память и сделали меня тем, кем я сейчас являюсь.

Рефакторинг. Улучшение проекта существующего кода: Фаулер Мартин, Бек Кент. В каких-то моментах требует погружения в пример, но определенно достойная для изучения. Много правильных вещей для проектов первый раз я увидел именно там.

Юрий Авраменко, Senior Software Developer.

  1. Книга “Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих”, автор Aditya Bhargava.

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

  1. Книга “Java. Библиотека профессионала, том 1,2”, автор Cay S. Horstmann.

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

  1. Книга “Java. Эффективное программирование”, автор Joshua Bloch.

В книге описываются лучшие практики и советы при работе с Java. Обязательна к прочтению.Книга о том,как более профессионально применять свои знания. Я советую читать только в оригинале. Автор книги – автор класса LinkedList , который по его собственному признанию, он никогда не использовал.

  1. Книга “Java Concurrency на практике”, автор Brian Goetz.

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

  1. Книга “Алгоритмы на Java 4 – е издание”, авторы Robert Sedgewick and Kevin Wayne.

Книга более глубоко погружает в алгоритмы, авторы книги имеют курс на международном обучающем ресурсе,

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

ТОП книг от бэкенд-разработчика TAGES Михаила Досова

 Путь от ничего не понимающего в программировании человека до профессионала senior developer Java – долгий и сложный. Текущие требования к знаниям программиста гораздо шире знаний конкретного языка. В обилии информации, которую необходимо переварить и усвоить, легко запутаться, легко потерять мотивацию, увидев список требований к кандидату даже на позицию джуна. Но “глаза боятся, а руки делают набирают код”. И для программиста глаза еще и читают.

Путь в Java можно условно разделить на несколько стадий:

  1. Начинающий, вообще ничего не знающий человек, в том числе не имеющий опыта программирования на другом языке.
  2. Journeyman – человек, освоивший синтаксис языка, способный написать “Hello world”, калькулятор и вывести в консоль числа Фибоначчи.
  3. Junior – может решать легкие коммерческие задачи, получающий деньги за свой код.
  4. Middle – уверенный крепкий разработчик, 1-2 года опыта, и главное – самостоятельный.

5 – Senior – состоявшийся профессионал, способный решать любые задачи.

По мере прохождения этого пути нужны разные знания и разные книги. Как человек, прошедший этот путь, представляю ТОП-10 книг по Java для человека только начинающего путь до senior программиста.

УРОВЕНЬ: Начинающий

Если ты только начинаешь свой путь, то первое, что нужно освоить – это синтаксис Java, основные концепции ООП и базовые принципы самого языка.

Для этого идеально подойдут:

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

Прекрасная книга с четким, последовательным, академическим повествованием. Информации много, всё очень детально. Регулярно обновляется вместе с обновлением версий языка, что гарантирует актуальность информации. Эта книга может стать настольным справочником программиста вплоть до senior позиции.

“Программирование на Java для детей, родителей, дедушек и бабушек”, Яков Фэйн

Яков известный популяризатор Java, объясняет сложное легко и понятно, имеет канал на Youtube с уроками на русском и английском. Правда, книга не является полным и всеобъемлющим руководством, но и не содержит философский рассуждений на тему важности программиста в текущей жизни, важности знаний алгоритмов и прочих очевидных вещей. Хороша, если ты еще выбираешь между Java и еще каким-то языком, идеальна, если ты хочешь понять “программирование – это вообще что? а оно мне подойдет?”, без философии, сразу к делу!

УРОВЕНЬ: Journeyman

На этом этапе ты освоил синтаксис, научился писать примитивные программки, вроде подсчета факториала. У тебя появились вопросы “а почему это делается именно так?”, ты чувствуешь, что можно сделать более красиво, что есть инструменты, позволяющие делать многие вещи быстрее. Если всё так, то тебе пора начинать читать книги, раскрывающие внутренние особенности языка.

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

Лучшая книга для Java разработчика в сегодняшней подборке. Единственный минус – нужно хоть немного знать язык и уметь хоть что-то писать, не подойдет с самого нуля. В остальном – это библия, с которой ты пройдешь вплоть до senior, будешь рекомендовать ее всем, кто еще не читал, и много лет будешь вспоминать и применять в своей работе. В книге описывается не просто синтаксис, а описываются причины того или иного выбора создателями языка. Научит не только пользоваться возможностями языка, но и понимать, как они работают, что в будущем позволит уйти от готовых шаблонных решений и начать делать что-то свое, чего нет в стандартной библиотеке. Готов узнать не только что нужно делать, но и почему нужно делать именно так? Эта книга для тебя.

УРОВЕНЬ: Junior

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

“Паттерны объектно-ориентированного проектирования”, Гамма Эрих, Хелм Ричард

Фундаментальный труд, который позволит по-настоящему понять ООП. Не просто концепции, а что конкретно и как строится из этих концепций. Все, абсолютно все, программы состоят из паттернов, поэтому их нужно знать, видеть в коде и понимать зачем они применены в той или иной ситуации. К тому же это одна из любимых тем на собеседовании. Знание паттернов сильно поднимает тебя в глазах рекрутера. Эта книга – это набор готовых шаблонов, проверенных годами, которые позволят писать код в соответствии со всеми распространенными принципами ООП программирования: SOLID, Dry, Kiss, YANGI.

“Семь баз данных за семь недель. Введение в современные базы данных и идеологию NoSQL”, Уилсон Джим Р., Редмонд Эрик

Современный Java разработчик обязан знать основы реляционных БД, таких как MySQl или Postgres. Ни одно собеседование не пройдет без вопросов по select и join. На эту тему много книг и ресурсов в интернете, основы изучаются легко. Но если ты хочешь пойти немного дальше, выделится на собеседовании знанием более современных NoSQL БД, то обязательно прочти эту книгу. Быстро и легко ты поймешь основы 7-ми БД, их плюсы и минусы, на примерах научишься делать базовые вещи. NoSQL БД набирают популярность, высока вероятность, что на твоем будущем проекте будет именно она. Знание основ и нюансов позволит выделится среди соискателей и получить более высокий уровень ЗП.

“Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих”, Бхаргава Адитья

Ты пишешь цикл в цикле и у тебя всё работает, но где-то ты видел, что так нельзя? Не понимаешь почему? Пора понять основы алгоритмов, в первую очередь сложность – О-большое. Простая манера изложения, картинки, повествование от простого к сложному. Подойдет тем, кто не заканчивал математические вузы. Книга расскажет как правильно выбрать алгоритм для той или иной задачи, почему некоторые задачи не имеют точного решения, почему часто приближенно решение – это хороший вариант.

В книге, кстати, есть глава по структурам данных: ArrayList, LinkedList, Stack, Queue, Map, massive. Уверен, это расширит знания по этим инструментам, которыми ты пользовался каждый день, не задумываясь как они устроены внутри.

УРОВЕНЬ: Middle

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

Книги, которые помогут написать архитектуру нового приложения или сделать рефактор текущего:

“Рефакторинг. Улучшение существующего кода”, Мартин Фаулер

Рефакторинг – неотъемлемая часть ежедневной работы программиста. Бывает небольшой рефакторинг написанной на прошлой неделе фичи, а бывает рефакторинг всего приложения. Ответственность в этом случае большая, рефакторинг может как улучшить скорость приложения, надежность, читаемость кода, так и внести множество новых багов, что сведет на нет все усилия. Рядом идет “технический долг”, эти два понятия раскрываются в текущей книге, объясняются приемы рефакторинга, риски и время, когда он необходим.

“Чистый код. Создание, анализ и рефакторинг”, Мартин Роберт К.

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

УРОВЕНЬ: Senior

Ты профессионал, востребованный на рынке. Куда дальше? Можно попытаться попасть на топ позиции в Google или Amazon, можно стать программным архитектором, можно углубить свои текущие знания и стать узконаправленным специалистом.

“Шаблоны корпоративных приложений” Ми Роберт, Фаулер Мартин

Если видишь в авторах Фаулера, можешь начнать читать книгу и быть уверенным, что найдешь что-то новое. Данная книга – это дополнение и расширение к “Паттерны объектно-ориентированного проектирования”, Гамма Эрих, Хелм Ричард, озвученной выше. Но, если там паттерны были местного, “локального” значения, то данная книга даст ответы на вопросы, как организовывать большие корпоративные приложения, а не просто конкретный метод или группу методов. По сути, это шаг в сторону архитектора программного обеспечения.

“Java Concurrency на практике”, Готц Брайан, Ли Дуг

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

“Алгоритмы. Построение и анализ”, Кормен Томас Х., Лейзерсон Чарльз И.

Если хочешь в Google или Яндекс, то знание алгоритмов нужно точно углублять. На собеседования в эти компании точно будут “гонять” по алгоритмам. Эта книга поможет в них лучше разобраться, расширить количество применяемых алгоритмов, почувствовать себя уверенным в компании продвинутых математиков.

И напоследок…

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

Еще раз ТОП-10 книг в жизни Java программиста:

1 – “Effective Java”,  Джошуа Блох

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

3 – “Программирование на Java для детей, родителей, дедушек и бабушек”, Яков Фэйн

4 – “Паттерны объектно-ориентированного проектирования”, Гамма Эрих, Хелм Ричард

5 – “Семь баз данных за семь недель. Введение в современные базы данных и идеологию NoSQL”,  Уилсон Джим Р., Редмонд Эрик

6 – “Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих”, Бхаргава Адитья

7 – “Рефакторинг. Улучшение существующего кода”, Мартин Фаулер

“Чистый код. Создание, анализ и рефакторинг”, Мартин Роберт К.

8 – “Шаблоны корпоративных приложений” Ми Роберт, Фаулер Мартин

9 -“Java Concurrency на практике”, Готц Брайан, Ли Дуг

10 – “Алгоритмы. Построение и анализ”, Кормен Томас Х., Лейзерсон Чарльз И.

Вячеслав Шаго, Senior Software Engineer.

  1. Герберт Шилдт “Java. Полное руководство”.

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

  1. Роберт Мартин “Чистый код”.

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

  1. Эрик Фримен, Элизабет Робсон “Head First. Паттерны проектирования”.

На протяжении десятилетий сообщество разработчиков выработало очень полезные шаблоны проектирования, которые можно использовать для решения широкого спектра задач. Чтобы не тратить время на “изобретение велосипеда” необходимо разбираться и использовать полезные шаблоны проектирования, которые встречаются в любом коде. В книге очень подробно разобраны все основные шаблоны.

  1. Роберт Лафоре “Структуры данных и алгоритмы в Java”.

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

  1. Мартин Клеппман “Высоконагруженные приложения”.

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

Али Жагпаров разработчик в Devexperts.

Все описано достаточно простым языком, и ее можно считать отличной книгой для старта.

Программирование на Java для детей, родителей, дедушек и бабушек | Яков Файн

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

Head First. Паттерны проектирования | Фримен Эрик, Робсон Элизабет

К сожалению, на эту книгу я наткнулся слишком поздно. Я уже умел писать программы, но понимание ООП ко мне так и не проходило. После прочтения этой книги я понял, зачем нужно ООП, интерфейсы и абстрактные классы.

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

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

Рефакторинг. Улучшение проекта существующего кода | Фаулер Мартин, Бек Кент

Я не запомнил всех советов, который дал мне автор, однако эта книга дала мне хорошее понимание того, что такое хороший и красивый код.

Java: эффективное программирование | Джошуа Блох

Советы автора помогли мне понять о чем нужно думать при написание кода.

Роман Иванов, Java developer в Сбер.

Эта книга полностью покроет ваши потребности в знании spring фреймворка…

Я бы рекомендовал знакомство с java с книги Кея Хорстманн – Java. Библиотека профессионала. Эту книгу можно рассматривать как фундамент для разработчика. Книга даст вам глубокое понимание языка, его концепций и лучших практик. Следом я рекомендовал бы прочитать книгу “Спринг в действии” Уоллса Крейга. Эта книга полностью покроет ваши потребности в знании spring фреймворка и позволит уверенно работать с ним в любых проектах.

Следующей книгой рекомендуемой мной к прочтению будет Spring Microservices in Action от John Carnell. Данная книга даст базовое понимание по разработке микросервисов, вы поймете с какими проблемами можно столкнуться в распределенных системах и как с ними нужно бороться. И последняя книга в этой подборке — Мартин Клеппман: Высоконагруженные приложения. Программирование, масштабирование, поддержка.

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

Парвизджон Розиков, Старший разработчик Crypterium.

Книги отсортированы по уровню сложности

  1. Core Java Volume I – Fundamentals

автор:  Cay S. Horstmann, Gary Cornell (Кей С. Хорстманн и Гари Корнелл)

 На мой взгляд лучшая книга начинающих Java разработчиков. Предлагает подробное объяснение различных топиков Core Java, включая базовые типы данных, обработку исключений, интерфейсы и лямбда-выражения.

Книги также содержат сложные темы, такие как обобщение(generic), коллекции, лямбда-выражения, функциональное программирование и т. д.   Последняя редакция обновлена до Java SE 11

  1. Java The Complete Reference

автор – Herbert Schildt (Герберт Шилдт)

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

Книга всесторонне охватывает базовые концепции Java, такие как принципы программирования, ключевые слова, синтаксис языка Java, API Java 8, JavaBeans, servlets, applets, swing и т. д. Книга содержит более 1000 страниц. Его простой язык делает его популярным. В этой книге каждая концепция подробно объясняется на реальных примерах, а в конце каждой главы есть набор вопросов с несколькими вариантами ответов, чтобы читатели могли самостоятельно оценить свое обучение.

Последняя редакция обновлена до Java SE 11

  1. Effective Java

автор – Joshua Bloch (Джошуа Блох)

Обязательная книга для каждого Java-программиста.  Книга является отличным дополнением к другим книгам или учебным материалам по Java. В книге приводится лучшие практики, которым нужно следовать для улучшения кода.  Книга предлагает что-то для Java-программистов любого уровня подготовки. Эффективная Java написана Джошуа Блохом, который также является автором многих ключевых классов Java и API, включая java.lang и платформу Java Collection. 

Последняя редакция обновлена до Java SE 9

Head First Java охватывает почти все концепции OOPS и увлекательно их объясняет.

  1. Head First Java, автор – Кэти Сьерра, Берт Бейтс

Head First Java охватывает почти все концепции OOPS и увлекательно их объясняет. Самым важным преимуществом Head First Java является ее простота и суперэффективные аналогии из реальной жизни, которые относятся к концепциям программирования Java. Минус книги в том что все примеры на  Java SE 5 и книга больше не обновляется под новые версии.

  1. Java: A Beginner’s Guide

автор – Herbert Schildt (Герберт Шилдт)

Еще одна замечательная книга от Шилдта по java. Эта книга отличается от “Java The Complete Reference”, так как изменен формат подачи материала и так же добавили ООП(Объектно-ориентированное программирование). Не надо судить книгу по названию на обложке,  я бы рекомендовал эту книгу после “Java The Complete Reference”.

  1. Head First Design Patterns

автор – Eric Freeman & Elisabeth Robson with Kathy Sierra & Bert Bates

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

  1. Java Concurrency in Practice

 автор – Brian Goetz with Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, and Doug Lea

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

  1. Cloud Native Java:

 Автор – Josh Long, Kenny Bastani 

В этой книге рассматривается, современный стек технологий под cloud решение(Spring Boot, Spring Cloud, and Cloud Foundry). 

Но книга рассказывает довольно поверхностно, так что если вы опытный разработчик скорее всего вам будет неинтересно. Год публикации 2017

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

  1. Spring in action 

автор – Craig Walls and Ryan Breidenbach

Безусловно, самая популярная и широко используемая книга по фреймворку Java в современной среде программирования.

Эта книга может быть сложной для понимания, для новичков, особенно если вы не знакомы с сложными темами Java. Spring in Action лучше всего подходит для опытных Java-программистов и является отличным ресурсом для вашего роста и развития своих навыков.

Последняя редакция обновлена до spring 5.0

  1. Hands-On Reactive Programming in Spring 5

автор – Oleh Dokuka, Igor Lozynskyi

Одна из новых книг про реактивное программирования на java используя spring 5.1 и Projector.  лучше всего подходит для опытных Java-программистов и является отличным ресурсом для вашего роста и развития своих навыков. Год публикации 2018

Для тех кто готовиться к сертификации OCA/OCP:

  1. OCA Java SE 8 ( Kathy Sierra, Bert Bates, Elisabeth Robson)
  2. The Java Language Specification (Oracle)
  3. OCA Oracle Certified Associate Java SE 8 Programmer I Study Guide Exam 1Z0-808 (Scott Selikoff).