Яков Фэйн

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

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

Java. Эффективное программирование (третье издание)

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

Java Concurrency in Practice

Классика по Многопоточности
Threads are a fundamental part of the Java platform. As multicore processors become the norm, using concurrency effectively becomes essential for building high-performance applications. Java SE 5 and 6 are a huge step forward for the development of concurrent applications, with improvements to the Java Virtual Machine to support high-performance, highly scalable concurrent classes and a rich set of new concurrency building blocks. In Java Concurrency in Practice, the creators of these new facilities explain not only how they work and how to use them, but also the motivation and design patterns behind them.
Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж.

Паттерны проектирования

Классика. Также известна под названием "Банда 4-х, Gang of 4 (GoF)"
Простые и изящные решения типичных задач, возникающих в объектно-ориентированном проектировании. Паттерны появились потому, что многие разработчики искали пути повышения гибкости и степени повторного использования своих программ. Найденные решения воплощены в краткой и легко применимой на практике форме. Авторы излагают принципы использования паттернов проектирования и приводят их каталог. Таким образом, книга одновременно решает две задачи. Во-первых, здесь демонстрируется роль паттернов в создании архитектуры сложных систем. Во-вторых, применяя содержащиеся в справочнике паттерны, проектировщик сможет с легкостью разрабатывать собственные приложения. Издание предназначено как для профессиональных разработчиков, так и для программистов, осваивающих объектно-ориентированное проектирование.
Редмонд Э., Уилсон Дж.

Семь баз данных за семь недель.
Введение в современные базы данных и идеологию NoSQL.

В книге описаны большинство из современных баз данных с открытым исходным кодом: Redis, Neo4J, CouchDB, MongoDB, HBase, PostgreSQL и Riak. Для каждой базы приведены примеры работы с реальными данными, демонстрирующие основные идеи и сильные стороны. Эта книга прольет свет на сильные и слабые стороны каждой из семи баз данных и научит вас выбирать ту, которая лучше отвечает требованиям. Издание предназначено для программистов разной квалификации, использующих базы данных в своей профессиональной деятельности.
Крэг Ларман

Применение UML 2.0 и шаблонов проектирования. Введение в объектно-ориентированный анализ, проектирование и итеративную разработку

В книге рассматриваются основные принципы и приемы объектно-ориентированного анализа и проектирования (ООА/П). В ней вы найдете сведения об итеративном и гибком моделировании, шаблонах проектирования, архитектурном анализе и многих других вопросах. Весь материал рассматривается в контексте гибкого подхода к разработке с совместным применением процесса UP и других итеративных методов.
Фредерик Брукс

Мифический человеко-месяц, или Как создаются программные системы

Классика по созданию ПО
Фактически книга Ф. Брукса представляет собой сборник очерков, в которых последовательно обсуждаются узловые проблемы разработки крупных программных проектов: повышение производительности труда программистов, организация коллективной работы, планирование и выполнение графика реализации. Одной из главных тем книги стала идея, получившая впоследствии название «закон Брукса», о том что привнесение в проект новых сил на поздних стадиях разработки лишь отодвигает срок сдачи проекта
G.L. McDowell

Карьера программиста или Cracking the Coding Interview

Карьера программиста.
Как устроиться на работу в Google, Microsoft или другую ведущую IT-компанию

Основную часть книги составляют ответы на технические вопросы и задания, которые обычно получают соискатели на собеседовании в таких компаниях, как Google, Microsoft, Apple, Amazon и других. Рассмотрены типичные ошибки, которые допускают кандидаты, а также эффективные методики подготовки к собеседованию.
Мартин Фаулер

Шаблоны корпоративных приложений

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

Азбука системного мышления

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

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

Подборки по Java

Offtopic: списки для чтения