лучшие учебники по java для начинающих
Книги, которые должен прочитать Java программист: от новичка до профессионала
Книги, которые должен прочитать Java программист: от новичка до профессионала
[Примечание переводчика: термины градации «профессионализма» оставлены англоязычные в связи с трудностью их адекватного перевода на русский и несовпадением с привычными Junior-Middle-Senior-Lead. Перевод достаточно вольный — если знаний языка хватает, то лучше читать оригинал, как и советует автор. Оба языка для меня не родные, так что про ошибки сообщайте в личку — исправим. Здесь и далее в квадратных скобках примечания переводчика]
Я заметил, что в последние месяцы я рекомендую одни и те же книги как новичкам, так и опытным разработчикам. Поэтому я решил составить список этих книг. Они составили мне неплохую компанию в процессе моего роста от новичка до сегодняшнего уровня (какой-бы он не был 🙂 ) Составить список мне помогали друзья и коллеги. Особая благодарнасть Frank Appel, Rüdiger Herrmann, Benjamin Muskalla и Ralf Sternberg
Порядок книг в списке отражает мой персональный выбор. Меняйте его, как вам угодно 🙂 Одна важная вещь — если вы покупаете книгу из этого списка, то всегда выбирайте англоязычный вариант. Даже если есть перевод на ваш родной язык, оригинальная версия почти всегда лучший выбор.
Beginner
Если вы только начали знакомство с Java, то для начала нужно познакомиться с синтаксисом языка. Существует большое количество книг для этого. Практически всегда содержание этих книг очень похоже, но вот стиль написания отличается кардинально.
Есть две книги, которые стоит порекомендовать. Head First Java нестандартная, но легкочитаемая. Как и вся серия, вы можете любить её или нет (я обожаю их). Java, A Beginner’s Guide более традиционная книга, которая отлично объясняет Java. После того, как вы сполна ознакомились с синтаксисом и базовыми конструкциями, я рекомендую прочитать еще одну книгу перед тем, как переходить к следующему этапу (это справедливо и для других языков программирования). Test Driven Development (автор Kent Beck) описывает технику программирования, который мы используем в EclipseSource. ИМХО TDD должна входить в курс обучения каждого программиста.
Journeyman
Journeyman — программист, которые уже знает язык, сделал несколько небольших проектов, но которому еще предстоит развиться до профессионала. Конечно, я уверен, что вы не согласны с этим утверждением (я не был согласен, например). Но после пяти лет в этом статусе вы согласитесь 🙂
Простых знаний языка недостаточно — вам необходимо углублять их. Для этих целей практически любой профессионал Java порекомендует книгу Effective Java, автор Joshua Bloch. Другая книга — The Pragmatic Programmer — похожа на сборник заметок. Она подробна раскрывает те темы, с которыми вы столкнетесь как программист, поэтому ее также обязательно надо прочитать. Но знание языка не научит вас хорошо писать программы. С моей точки зрения одна из долгосрочных задач программиста — научиться правильно создавать архитектуру приложений. Для этих целей Design Patterns Book, написаная Бандой Четырех [нет, это не те, которые левые в КПК, а распространённое название группы авторов (Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес)] — хорошее начало.
Согласно книге TDD (автор Beck) золотое правило — это: красный, зеленый, рефактор. Martin Fowler объясняет последний пункт в своей книге Refactoring Book. После того, как все тесты прошли успешно и вы основательно переработали код, необходимо прочитать книгу Clean Code (Robert C. Martin) (минимум два раза). После первого раза я более чем уверен, что вы начнете думать про свой код по-другому [и вряд ли в лучшую сторону]. OSGi in Action смотриться странно в этом списке. Я добавил ее сюда, потому что я думаю, что модульность один из самых важных принципов дизайна приложений. Java-программисту просто необходимо знать OSGI. Помните, я упомянул, что вы не будете соглашаться со мной, что вы не станете Professional, пока не побудете в статусе Journeyman по крайней мере несколько лет? Я уверен, что после прочтения The Clean Coder я вас убедил. Robert C. Martin пишет про себя и свой путь развития от новичка до профессионала. Это действительно самое настоящее откровение!
Professional
Я использую слово «Professional», потому что в этом контексте его используют многие авторы. Но я не люблю использовать это слово для описания уровня программиста. «Professional» звучит так, как будто вы уже достигли вершины. Но это просто-напросто неправда. Программист никогда не может закончить свое обучение [впрочем, это справедливо для 83% профессий]. Книги, которые я поместил в эту категорию — просто более продвинутые. Они углубляются в детали или тренируют вас на роль лидера команды.
Совсем немного можно сделать в Java, не используя многопоточность. Пока вы в статусе Journeyman, скорее всего у вас в команде будет человек [ну-да, ну-да], который сможет вам помочь с этой темой. Но рано или поздно настанет момент, когда вам нужно будет научиться многопоточности самому. Brian Goetz проделал огромную работу в своей книге Java Concurrency in Practice. Быть профессионалом — значит брать ответственность. А так как вы программист — это еще значить нести ответственность за устаревший код. Micheal Feathers описал эту скучную тему немного веселее в книге Woking Effectively with Legacy Code. Также вы должны уметь брать ответственность за свою команду. Tom DeMarco и Timothy Lister постарались раскрыть эту тему в Peopleware, где описали, как работают эфективные команды и важные характеристики таких команд. Просто объяснить трудную тему — очень тяжелая задача. Немноге авторы способны на это. Martin Fowler проделал огромную работу в книге Patterns of Enterprise Application Architecture, где подробно описал процесс проектирования ПО.
Надеюсь, вам понравились (или понравятся, если вы еще не читали) эти книги. Если вы не согласны со списком, или можете порекомендовать другие интересные книги — отмечайтесь в комментариях [присоединяюсь к автору. Также в комментариях к оригинальной статье есть несколько интересных книг. Те книги из списка, что я уже прочитал — однозначно стоили этого. Ну и теперь есть неплохой список для продолжения]
Что почитать про Java прямо сейчас?
Язык Java появился в уже далёких в 1990-х годах и менее чем за 5 лет стал одним из трёх самых популярных языков на планете. Сегодня, в том числе благодаря развитию мобильного мира, Java продолжает быть современным и невероятно востребованным представителем мира IT.
Но популярность вкупе с возрастом имеет и обратную сторону медали — за эти 23 года было издано огромное количество литературы. Некоторые книги стали настоящей классикой, поэтому именно на них ориентируются преподаватели на учебных курсах даже сегодня в 2018 году. Однако это не означает, что за последние годы не издавалось хороших книг. В подтверждение этого, автор GeekBrains Илья Бубнов изучил онлайн-магазины, чтобы найти десяток самых рейтинговых книг по Java, изданных или переизданных на русском языке за последний год.
Java на примерах. Практика, практика и только практика
Начнём мы с книг, наполненных примерами с комментариями, ведь именно в них заложена особая ценность при изучении нынешней версии Java. «Java на примерах» — доработка аналогичной книги Сеттера 2016 года. Тот экземпляр отличался абстрактными задачами, поданными без контекста и с поверхностным подходом, который без использования дополнительной литературы был бесполезным.
Эта книга сделала шаг вперёд в плане качества: код годен для реального применения, информация подаётся правильной дозировкой, а для понимания задач новичку достаточно официальной документации по Java.
Современный Java. Рецепты программирования
В своей книге Коузен рассматривает подходы к решению более чем 70 классических задач. Большинство из них ориентированы на Java SE8, так как именно эта версия совершила мини-революцию в языке, но есть и дополнение из девятой версии.
Эту книгу будет полезно прочитать тем, кто уже учится на курсах или даже имеет пару лет опыта. То есть базовой теории здесь почти нет, зато достаточно много внимания уделено
возможностям обновлённой Java: лямбда-выражениям, функциональным интерфейсам, предикатам и многому другому.
Java для начинающих. Объектно-ориентированный подход
Книга написана профессиональными преподавателями по Java, поэтому с точки зрения подачи материала придраться не к чему. Сначала вы познакомитесь со средой разработки, после этого перейдёте к основам ООП и языка. Всё сопровождается примерами кода и образными сравнениями, у вас не возникнет проблем с пониманием теории.
Ещё один плюс — книга не обрывается на базовых возможностях Java, а затрагивает некоторые моменты продвинутого программирования. Для этого в конце даже есть специальный раздел со сценариями, в которых можно применить изученный материал. Единственное, что может не понравиться в «Java для начинающих», это частые повторения фундаментальных понятий языка. Для новичка это скорее плюс, но если Java для вас просто очередной язык, читать становится тяжеловато.
Java. Карманный справочник
Четвёртое издание популярной серии справочников O’Reilly, обновлённое до версии Java 9. Как и в другим книгах, здесь вы найдёте дублирование официального документа, но с живым языком и более качественной структурой. Естественно, учиться по такой книге достаточно тяжело, а вот купить и положить на рабочий стол будет очень полезно.
Java для чайников
Ещё одна классическая серия книг. Как подобает серии, здесь очень много практической, пошаговой теории, которая позволит человеку, даже далёкому от программирования, понять и проникнуться Java. Это не практический учебник и не справочник; это книга, которую можно прочитать один раз и понять, хочешь ли ты двигаться дальше. Она обновлена до Java 9 и переиздана в 2018 году. Но для долгого объяснения ООП и базовых программ версия не имеет значения.
Java 9. Полный обзор нововведений. Для быстрого ознакомления и миграции
Название книги однозначно показывает целевую аудиторию. Эта книга не подойдёт новичкам, тем, кто слабо знаком с программированием в целом и с Java в частности. Однако тем, кто изучал Java много лет назад, а теперь потребовалась бумажная книга, где в терминах описаны изменения девятой версии — это полезная литература. Адаптация книга прошла безболезненно, поэтому для людей, которые давно дружат с Java, будет полезно купить «Полный обзор нововведений» и положить на ближайшую книжную полку.
Java SE 9. Базовый курс
Кей Хорстманн — автор нескольких известнейших книг по Java. Конкретно эта будет интересна не столько теорией, хотя здесь её хватает, сколько способом подачи и последующей практикой. Информация подаётся небольшими порциями и тут же закрепляется в упражнениях. С точки зрения усвояемости такой подход полезен большинству людей, однако в качестве справочника такая книга имеет явный недостаток — стандартная темы может быть растянута на несколько страниц.
Java SE от Хорстманна, пожалуй, одна из самых популярных учебных книг по языку. Поэтому если информация в предыдущих книгах вам показалось слишком сжатой, сложной для понимания, то здесь вы точно этого не почувствуете.
Изучаем Java EE. Современное программирование для больших предприятий
Профильная книга, что только придаёт ей ценность, Себастьяна Дашнера, в 2016 году удостоившегося звания Java-champion (это очень круто, если что). Это не книга для обучения языку, она, скорее, подойдёт тем, кто собрался перейти от прикладного уровня к созданию корпоративных приложений. Здесь есть всё необходимое: общие принципы создания таких продуктов, организация работы по принципу DevOps, фундаментальные основы для создания тестов.
Java. Полное руководство
Герберт Шилдт — автор множества книг не только по Java, но и по другим языкам. Данная работа — та самая классика, причём обновлённая уже в десятый раз до версии Java 9. На почти полутора тысячах страниц вам предстоит путь от изучения принципов ООП до компонентов JavaBeans. Здесь много теории и примеров с комментариями, в общем, всё то, что хочется видеть новичку в, быть может, единственной бумажной книге по программированию.
В мировой практике книга Шилдта также является общепризнанной must-read, входит в топ на Amazon и фигурирует практически во всех рейтингах лучших публикаций по Java. Издание на русском языке не испортило оригинал, а значит к прочтению строго рекомендуется.
Изучаем Java
Книга популярной серии Head First — определённый знак качества для тех, кто хочет быстро вникнуть в незнакомую тему. Здесь есть всё, чтобы новичку познакомиться с языком: юмор, иллюстрации, упражнения, примеры с комментариями. При этом вам даже не обязательно знать основы программирования, здесь всё подробно расписано.
Если говорить о недостатках, то это, конечно же, слабая актуальность книги. Английская версия была издана аж 13 лет назад, то есть от современных возможностей Java она невероятно далека. Для начала подойдёт, но в качестве настольного справочника лучше держать другие книги.
Java. Библиотека профессионала
Завершим мы рейтинг одним важным примером того, почему программисту нужно знать английский язык и использовать оригинальную литературу. «Java. Библиотека профессионала» — ещё одна отличная книга Хорстманна, давно ставшая классикой. Состоит из двух томов «Основы» и «Расширенные средства программирования», каждый под 1000 страниц, поэтому на нехватку информации точно не пожалуетесь. Это уже 10-е по счёту издание, в России оно появилось в конце 2017 года. Оно посвящено Java SE 8, хотя сейчас актуальна уже 9 версия, но не это самое страшное. К сожалению, как это часто бывает, адаптация не прошла бесследно — перевод и экономия на печати сильно понизили градус крутости труда Кей С. Хорстманна. Вам придётся столкнуться с такой дикостью, как, например, перевод аббревиатуры IDE (тут он ИСР). В изучении языка вам это не помешает, но если вы совсем зелёный программист, можете понабраться неправильных слов.
В связи с последним примером, возник важный вопрос: а какие книги вы НЕ рекомендуете покупать из-за «кривой» адаптации?
«Писать на Java не работа, писать на Java — праздник»: книги для начинающих Java-программистов
Java — сильно типизированный объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Приложения Java обычно транслируются в специальный байт-код, поэтому они могут работать на любой компьютерной архитектуре с помощью виртуальной Java-машины. Дата официального выпуска — 23 мая 1995 года.
Несмотря на возраст, Java остаётся самым популярным и самым востребованным языком. Чтобы упростить его изучение, мы подготовили подборку книг по программированию на Java, которые пригодятся начинающим разработчикам.
Java: The Legend
В этой книге рассказывается о развитии языка Java. Рассматриваются его история, влияние, которое он оказал на другие языки, становление Java EE, а также его будущее: Java 9, Project Panama, Project Valhalla и интернет вещей.
Introduction to Programming Using Java (7-е издание)
Эта книга — учебник по программированию для начинающих, где в качестве языка выбран Java. Каждый раздел снабжён упражнениями, а в конце прилагается весь необходимый код.
Изучаем Java
Язык Java имеет крайне дружественный синтаксис, но это не значит, что разобраться в нем так уж легко. Книга «Изучаем Java» построена на визуализации и несколько отличается от классических учебников. Она имеет очень подробное изложение, массу живых примеров и упражнения для закрепления в каждом разделе. Подойдёт всем тем, кто ничего не слышал про программирование, в том числе и про объектно-ориентированное, так как Java — полностью объектно-ориентированный язык, и изучать его нужно именно в таком контексте.
В общем, «Изучаем Java» — это не только бестселлер, но и благодаря нестандартной форме обучения и подачи материала одна из лучших книг для начинающих в принципе.
Think Java
Эта книга отлично подойдёт в качестве учебного пособия для начинающих программистов. Сложность тем постепенно увеличивается: сперва обсуждаются базовые принципы, а затем — рекурсия и ООП. Все примеры кода выложены на GitHub.
Программирование на Java для начинающих
Книга довольно небольшая (около 190 страниц). В ней достаточно сжато подаются основы языка Java, но после прочтения книги станет возможным писать собственные приложения на Java. Пособие наполнено иллюстрациями, поясняющими результат исполнения кода. Книга подойдет для тех, кому нужно максимально быстро освоить синтаксис Java.
Java Programming for Kids
Цель этой книги — помочь в изучении Java. В ней описываются принципы создания приложений с графическим пользовательским интерфейсом на примере двух игр: «Крестики-нолики» и «Пинг-понг». Хотя книга и рассчитана на детей старше 12, программистам постарше она тоже подойдёт. Последняя глава — бонусная: в ней рассказывается, как публиковать свой код на GitHub.
Философия Java
Данная книга горячо любима программистами за глубокое и поистине философское изложение тонкостей языка Java. Это пособие считается одним их лучших учебников по Java, поскольку в нем уделено внимание не только синтаксису языка, но и особенностям написания кода на Java. Эти подходы сравниваются с методами в других языках программирования.
Object-Oriented vs. Functional Programming
Споры между фанатами ООП и функциональщиками не прекращаются уже много лет. В своей книге автор обсуждает сходства этих парадигм программирования и тенденцию по их сближению. Примеры на Java помогут вам:
What’s New in Java 8
Эта книга — короткое введение в Java 8. Она поможет разобраться в основных фичах этой версии языка, таких как Project Lambda, Date-Time API, Streams и Nashorn.
Java. Библиотека профессионала. Том 1. Основы
Книга ориентирована на читателей, уже имеющих опыт в программировании на каком-либо языке. В десятом издании рассматривается Java SE 8.
Книга состоит из двух томов. В данной подборке рассматривается первый том. В нем рассматриваются самые разные вопросы: от принципов объектно-ориентированного программирования до обобщений, коллекций, лямбда-выражений, разработки графического интерфейса средствами библиотеки Swing, а также новейшие методики параллельного и функционального программирования.
Java for Python Programmers
Эта книга рассчитана на тех, кто уже знает Python. Сперва рассматривается простая Java-программа, затем рассказывается об основных конструкциях, которые присутствуют почти во всех языках. После основ разбираются уникальные фичи Java.
Java: A Beginner’s Guide
Краткое введение в Java от Oracle. Описываются его история и философия, а также основы разработки.
Также рекомендуем изучить стайлгайд от Google, спецификации Java SE и официальные руководства по стандартной и энтерпрайз-версиям языка.
Если вы знаете другие книги, которые стоит разместить в этой подборке, делитесь ими в комментариях.
Хинт для программистов: если зарегистрируетесь на соревнования Huawei Cup, то бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании.
Перейти к регистрации
ТОП-10 лучших книг по Java для программистов
Не имеет значения, хотите вы улучшить скилл или только собираетесь начать изучение, здесь вы найдете лучшие книги по Java для программистов.
На нашем сайте вы найдете уйму книг, в том числе лучших по вашему мнению. Здесь же собраны книги, посвященные языку программирования Java. Так чего же мы ждем? Поехали!
Освеженная подборка книг по Java для программистов
Эффективная Java – Джошуа Блох
Ничего удивительного, что эффективная Java от Джошуа Блоха – это лучшая книга. Это определенно обязательная к прочтению книга по Java для программистов любого уровня. Вы получите массу информации по ЯП и его API, т. к. автор является создателем нескольких ключевых классов, таких как java.lang и Java Collection framework.
Clean Code: A Handbook of Agile Software Craftsmanship – Robert C. Martin
Еще одна вечная Java-классика. Как следует из названия, вы научитесь писать правильный код, что само по себе является трудной задачей.
Выучить Java легко, а вот написать хороший код, использующий ООП-принципы, – непросто. Именно для этого предназначена данная книга.
Роберт К. Мартин делится большим опытом разработчика ПО, обучая вас различным методам программирования и практикам, которые будут полезны в повседневной работе программиста.
Java. Библиотека профессионала – Кей С. Хорстманн
Самый популярный русский двухтомник по Java. Десятое издание обновили с учетом Java 8. В первом томе труда рассматриваются основные понятия и принципы современного подхода к программированию. В данной книге очень подробно на понятных примерах рассматривается базовый синтаксис, безопасность, методики ООП и параллельного программирования, Swing и многое другое. Книга подойдет как для практикующего специалиста, так и для новичка, решившего изучить этот ЯП.
Head First. Паттерны проектирования – Эрик Фримен, Элизабет Робсон
В этом выпуске Head First Design Patterns, обновленном под Java 8, представлены проверенные на практике шаблоны, используемые разработчиками для создания функционального, элегантного, многоразового и гибкого ПО. По окончании обучения вы сможете воспользоваться лучшими практиками проектирования и опытом тех, кто боролся с кодом и одержал победу. Все, что вам может понадобиться в процессе работы над проектом можно найти в этой книге.
Spring в действии – Крейг Уоллс
Фреймворк Spring – это тот продукт, без которого не обойтись программисту на Java. В данной книге описана работа со Spring 3: интересные особенности выражений языка SpEL, новые функциональные решения, связанные с контейнером IoC, а также REST. Автор снабдил каждую главу интересными и понятными примерами. Издание предназначено как для начинающих специалистов, так и для более опытных программистов.
Test Driven: TDD and Acceptance TDD for Java Developers – Lasse Koskela
Тестирование является важным навыком. Все разработчики начинают с модульных тестов на JUnit, но знание этой библиотеки не сделает из вас профессионального программиста.
При разработке через приемочные тесты сначала пишется исполняемый тест того, что должен делать код приложения, а только после этого можно писать сам код. Это требует больших знаний и в этом поможет данная книга. Рекомендуем к прочтению.
Изучаем Java – Кэти Сиерра, Берт Бейтс
Данный мировой бестселлер отличается от других похожих книг своей уникальной подачей информации. Она излагается не в строгой, а в понятной и свободной форме с визуальным подкреплением полученной информации. Вы рассмотрите такие темы, как: основы синтаксиса, ООП, сеть, многопоточность, распределенное программирование, тестирование и многое другое.
Алгоритмы на Java – Роберт Седжвик, Кевин Уэйн
Книга этих двух авторов зарекомендовала себя лучшей по алгоритмизации. В издании рассматривается огромное количество материала, среди которого структуры данных, алгоритмы сортировки Java, алгоритмы поиска, обработки графов и строк, а также популярные алгоритмы, которые будет очень полезно знать любому программисту.
Издание пестрит понятными иллюстрациями, лаконичной описательной частью, хорошо подобранными кусками кода и упражнениями для каждой части и главы.
Head First Object-Oriented Analysis and Design – Brett D. McLaughlin
Объектно-ориентированный анализ и дизайн научат вас анализировать, проектировать и писать серьезный ОО софт, который легко использовать, поддерживать, расширять и добавлять в него новые функции, не “ломая” существующие. Вы узнаете как:
Java. Полное руководство – Герберт Шилдт
В данной книге, подготовленной к работе с Java 9, вы найдете, как правильно разрабатывать, компилировать, отлаживать и выполнять код на Java. Книга также охватывает некоторые из более продвинутых функций Java, включая многопоточное программирование, универсальные шаблоны, лямбда-выражения, Swing и JavaFX. Это практическое руководство Oracle Press содержит подробную информацию о системе модулей Java SE 9 и, в качестве дополнительного бонуса, включает в себя введение в JShell.