Книги и учебные ресурсы по Java

1,00
р.





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



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

Данный перечень входит в поддерживаемый сообществом Сборник учебных ресурсов по программированию.

Ответ
Core Java
Начинающим:
Head First Java (2nd Edition). Kathy Sierra, Bert Bates. Русский перевод: Изучаем Java. Кэти Сиерра, Берт Бейтс. Как это обычно бывает в книгах Head First, вас весело и в картинках обучат основам программирования на Java. У опытных программистов книга может вызвать ухмылку, однако для действительно начального уровня она вполне хороша.
Java: A Beginner's Guide. Herbert Schildt. Русский перевод: Java. Руководство для начинающих. Герберт Шилдт.
Core Java Volume I: Fundamentals (9th Edition), Core Java Volume II: Advanced Features (9th Edition). Русский перевод: Java. Библиотека профессионала. Том 1. Основы Java. Библиотека профессионала. Том 2. Расширенные средства программирования. Кей С. Хорстманн, Гари Корнелл. Книги Хорстманна написаны достаточно сухим языком и вываливают на читателя горы документации по API и километры листингов с полным кодом примеров. Читать их последовательно может быть довольно тяжко, зато книги станут отличным настольным справочником и сборником рецептов.
Java™ Platform, Standard Edition 7 API Specification, 8, 9, 10, 11. Онлайн-документация по стандартным библиотекам JAVA SE.
Yakov Fain, Java Programming for Kids, Parents and Grandparents Русский перевод: Яков Файн, Программирование на java для детей, родителей, бабушек и дедушек Книга рассчитана на детей, в ней много картинок, её интересно читать. В первых главах автор объясняет основные конструкции языка, классы и объекты и так далее. В последующих главах читатель пишет вместе с автором несколько swing-программ, изучая параллельно важные темы. Вот что говорит про неё сам автор:

Эта книга не охватывает все элементы языка Java. В противном случае, это сделало бы ее слишком толстой и скучной. Однако в конце каждой главы помещен раздел с материалaми для дополнительного чтения, который содержит ссылки на англоязычные веб­‐сайты с более подробными сведениями о рассматриваемой теме.
Онлайн-курсы, учебники
Learn Java (англ.) официальные учебные пособия на dev.java Уроки Java для начинающих на itproger.com Самоучитель по Java с нуля - vertex-academy.com Java Tutorial (англ.) на Javatpoint Курсы на Stepik.org:
Java. Базовый курс Computer Science Center (CS центр) Летняя Java школа Adaptive Java (англ.) JetBrains
Hyperskill (англ.) - сайт с учебными проектами для обучения программированию на Java, Kotlin, Python JavaRush
Средний уровень:
Thinking in Java (4th Edition). Bruce Eckel. Русский перевод: Философия Java. Брюс Эккель. Классический фолиант джавистов. Для комфортного чтения требуются базовые познания в языке, т.к. книга не ставит своей задачей научить писать на Java с нуля, а научить писать идиоматично.
Java 8: The Complete Reference. Herbert Schildt. Русский перевод: Java 8. Полное руководство. Герберт Шилдт.
Effective Java (2nd Edition). Joshua Bloch. Русский перевод: Java. Эффективное программирование. Джошуа Блох. Джошуа Блох в некотором смысле продолжает идею книги Thinking in Java: еще сильнее углубляясь в особенности языка и стандартных библиотек, учит писать красивый код.
The Well-Grounded Java Developer: Vital techniques of Java 7 and polyglot programming. Benjamin J Evans, Martijn Verburg. Русский перевод: Java. Новое поколение разработки. Бенджамин Эванс, Мартин Вербург.
Java Puzzlers: Traps, Pitfalls, and Corner Cases. Joshua Bloch, Neal Gafter. Java Puzzlers дает возможность тем, кто уже "выучил язык" проверить себя. В книге собраны 95 задачек с подвохом: очевидные на первый взгляд фрагменты кода, таящие каверзный баг. Какие-то из рассматриваемых примеров могут показаться надуманными и нежизненными, однако они в полной мере раскрывают тонкие нюансы программирования на Java.
Java Concurrency in Practice. Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, Doug Lea. Подробнейшее пособие по написанию многопоточного кода на Java. Каждая тема рассматривается с разных сторон на нескольких примерах, так что к концу главы будет полное понимание осуждаемого предмета. Немаловажно, что один из соавторов (Doug Lea) является автором стандартной библиотеки concurrent-примитивов (java.util.concurrent).
Java Performance. Charlie Hunt, Binu John. Must read по оптимизации java Программ, тюнингу JVM и сборщика мусора, бенчмаркингу и профилированию.
Core Java for the Impatient. Cay Horstmann. Книга для нетерпеливых, как следует из названия. Позволяет погрузиться в мир языка Java, рассказывается всё, что на самом деле может пригодиться Java-разработчику. Отдельное внимание уделено новшествам восьмой версии языка. В конце каждой главы есть задания для более плотного усвоения материала. (Хорстманн не очень любит язык C++, иногда шутит по этому поводу, вроде того: String[] badWords = {"sex", "drugs", "C++"} , от этого читать становится не так скучно).
Java SE 8 for the Really Impatient. Cay Horstmann. Русский перевод: Java SE 8. Вводный курс Кей С. Хорстманна Является продолжением книги Core Java for the Impatient, однако здесь всё внимание уделяется новшествам восьмой версии языка, покрывает очень многие аспекты, будь то лямбда-выражения, работа со Stream API или многопоточность. После каждой главы также присутствуют задания для усвоения материала.
Head First Design Patterns.Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra. Русский перевод: Паттерны проектирования. Эрик Фримен, Элизабет Фримен Отличная книга от издательства O'Reilly, в веселой форме обучит вас основным шаблонам проектирования на языке Java.
Java 8 Lambdas. Richard Warburton. Русский перевод: Лямбда-выражения в Java 8. Ричард Уорбэртон Обычно в учебниках по Java мало внимания уделяют или не уделяют вовсе теме использования лямбд и стримов. Учебник Уорбэртона восполняет этот недостаток.

Экспертный уровень:
The Java Language Specification. James Gosling, Bill Joy, Guy L. Steele Jr., Gilad Bracha, Alex Buckley.
The Java Virtual Machine Specification. Tim Lindholm and Frank Yellin.
Oracle JRockit: The Definitive Guide. Marcus Hirt, Marcus Lagergren.


Java EE
Java™ Servlet Specification 3.1 Исчерпывающая официальная документация о работе и жизненном цикле сервлетов.
Beginning Java EE 7. Antonio Gonsalves. Русский перевод: Изучаем Java EE 7. Энтони Гонсалвес
Java EE 7. Основы Арун Гупта
Head First Servlets and JSP, 2nd Edition. Bryan Basham, Kathy Sierra, Bert Bates
Java Servlet and JSP Cookbook. Bruce W. Perry Русский перевод: Java сервлеты и JSP. Сборник рецептов. Брюс У. Перри
Java EE 8 SDK Содержит в папке docs англоязычные руководства JavaEE Tutorial и FirstCup, а так же всё необходимое для изучения, с примерами готовых проектов на GlassFish. Онлайн версии так же доступны по адресу Java EE Tutorial


Spring
Spring Projects Официальная документация о каждом проекте Spring. Описано подробно, но довольно сложно и много, поэтому для первого обучения рекомендую начать с Spring Guides.
Spring Guides

Очень простые и наглядные пошаговые уроки (на английском) разных возможностей проектов Spring, с возможностью сразу скачать результат и проверить на своем компьютере. Наиболее актуальные туториалы по Spring, которые есть в интернете, так как постоянно обновляются сообществом. Для более детального изучения - смотрите официальную документацию.
Spring в действии. Крейг Уоллс Несмотря на то, что в книге описана уже немолодая 3-я версия Spring, книга стоит ознакомления, так как очень просто и подробно знакомит читателя с фреймворком.
Spring 5 для профессионалов. Юлиана Козмина, Роб Харроп, Крис Шефер, Кларенс Хо Многолетний бестселлер, считающийся наиболее исчерпывающим и авторитетным руководством по Spring.
Pro Spring Integration. Dr. Mark Lui, Mario Gray, Andy Chan and Josh Long (англ.)

Pro Spring Integration - это авторитетная книга от экспертов, которая проведет вас через обширный мир интеграции корпоративных приложений (EAI) и применения инфраструктуры Spring Integration для решения проблем интеграции.
Pro Spring 5, 5th Edition (2017) Iuliana Cosmina, Rob Harrop, Chris Schaefer, Clarence Ho (англ.)
С помощью этой книги вы сможете изучить основы Spring, фреймворка для Java-платформы, а также EJB и Hibernate. Вы узнаете, как использовать Spring для создания различных частей Java-приложения: транзакций, веб и много другого. Пример приложения, описанного в книге, позволит применить на практике технологии и методы Spring и увидеть, как они работают вместе. Книга подойдет опытным разработчикам на Java.
Learn Microservices with Spring Boot: A Practical Approach to RESTful Services using RabbitMQ, Eureka, Ribbon, Zuul and Cucumber Moises Macero (англ.)
Создайте архитектуру микросервисов с помощью Spring Boot, превратив приложение из небольшого монолита в управляемую событиями архитектуру, состоящую из нескольких служб. Эта книга следует поэтапному подходу к обучению микросервисной структуре, разработке через тестирование, Eureka, Ribbon, Zuul и сквозным тестам с Cucumber.

Hibernate
Beginning Hibernate. Joseph B. Ottinger, Dave Minter, Jeff Linwood Несмотря на то, что в названии книги стандарт JPA не упоминается, бóльшая часть книги посвящена именно его реализации в Hibernate.
Java Persistence with Hibernate. C. Bauer, G. King, G. Gregory Исчерпывающее описание Hibernate и Java Persistence.
High-Performance Java Persistence book. Vlad Mihalcea.

Данная книга подробно рассказывает о работе с Hibernate ORM, а так же оптимизации кода для лучшей производительности. Данная книга была одобрена на официальном аккаунте Java, а так же автор книги является одним из разработчиков Hibernate. Также, автор книги активно отвечает на вопросы пользователей в https:/tackoverflow.com

Swing
SWING: Эффективные пользовательские интерфейсы. Иван Портянкин.
Swing. A Beginner's Guide. Sсhildt H. Русский перевод: Swing. Руководство для начинающих. Шилдт Г.
Swing Hacks. Tips and Tools for Killer GUIs. Joshua Marinacci, Chris Adamson.


JavaFX
JavaFX 2.0 Разработка RIA-приложений. Тимур Машнин. В ней есть вся нужная информация относительно компонентов и оформления их с помощью fxcss, работы с анимацией, воспроизведения видео и аудио, и конечно относительно работы с FXML.
Learn JavaFX 8. Kishori Sharan. Учебник на английском, в нем подробно описываются все основные элементы JavaFX, особенности их поведения и взаимодействия, описываются наблюдаемые свойства и связывания (properties and bindings), и другие полезные возможности, как вывод на печать и подробное описание обработки событий.
Руководство по JavaFX на metanit.com


Справочники
Java 8 Pocket Guide. Robert Liguori. Русский перевод: Java 8. Карманный справочник. Роберт Лигуори. Отличный справочник, с помощью которого можно моментально найти ответы на вопросы по стандартной библиотеке Java, лямбда-выражениям и т. д.


Онлайн-ресурсы
Российская Java User Group. В архиве очень много докладов по Java, Spring и так далее. Доклады в основном на русском, рассчитаны на опытных разработчиков. Awesome Java - поддерживаемый список лучших библиотек, фреймворков и приложений в мире Java. Useful java links - альтернативный список лучших библиотек, фреймворков и приложений в мире Java. Есть русская версия. Useful java links (video) - поддерживаемый список русскоязычных видео с докладов и конференций по категориям. baeldung.com - На данном сайте представлено огромное множество статей, уроков по разработке приложения на Spring. Уроки на сайте идут вместе с кодом, который вы найдете в Github в конце каждой статьи. Так же, в уроках представлены разные решения одной и той же проблемы, что не сомнено делает данным сайт полезным как для новичков, так и для опытных программистов. vladmihalcea - Данный сайт является официальным сайтом одного из разработчиков Hibernate - Vlad Mihalcea. На данном сайте вы найдете множество бесплатных уроков по Hibernate. А так же SQL и Spring Thorben Janssen - эксперт по JPA и Hibernate. Ведет текстовый и видеоблог. Мысли о Java - На данном ресурсе, как и на ресурсе выше вы найдете множество статей и уроков связанных с Hibernate и JPA. Автор сайта имеет многолетний опыт работы с Hibernate. Более десяти лет назад он использовал один из первых релизов Hibernate для реализации уровня персистентности корпоративных приложений.