Pull to refresh

Книжная полка: Java

Reading time 6 min
Views 108K
По мотивам «JAVA → Java по-русски. Часть первая: Книги» habrahabr.ru/blogs/java/66568


Добрый день, уважаемые хабровчане!
В предыдущем обзоре Java книг, проведенном пользователем Scala, было рассказано о «практических» книгах, вышедших на рынок в последние три года. Я же хочу рассказать об этих и других книгах с несколько иного ракурса: попытаться выделить ценность информации книг.
Я не любитель читать с монитора, и предпочитаю книги покупать в бумажном варианте. Чтобы сделать осознанный выбор, следует отдавать себе отчет в том, что книга несет некие фундаментальные знания, но никак не сборник «последние фишки». Также в данной статье я хочу упомянуть о других известнейших трудах, не касающихся Java напрямую. Посмотрим, что лучше всего выбрать для обучения языку?

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

К.Хорстманн – Java2: основы

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

«Выучив язык», надо уметь его правильно применять. В этом нам поможет

Г.Буч с его книгой «Объектно-ориентированный анализ и проектирование с примерами приложений»

Эта книга будет полезна как начинающим, так и продвинутым программистам. Основной её смысл – научить думать «объектно».
>прим: книга не относится напрямую к Java, поэтому отдельно ее не выделяю.


Само понимание объектно-ориентированного подхода дает превосходную почву для понимания паттернов проектирования. И в этом нам поможет

«Применение шаблонов Java» — С.Стелинг, О.Массен, 2001


«Почему паттерны, мы же и без них отлично кодим?» — довольно частый вопрос людей, «программирующих» на любом из ООП языков. Хочу эту ситуацию несколько прояснить: современное программирование уже не ремесло, а скорее фабрика, и важен не только результат, а скорость разработки, расширяемость и прочее. Это все не достижимо без грамотного проектирования. Во-вторых, чтение подобной литературы даст понимание самой организации Java, так как практически все в этом языке строится на паттернах.

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

К.Хорстманн – Java2: тонкости программирования

Замечательная книга, показывающая неочевидные «штучки» очевидного процесса. Без опыта – не суйтесь в дебри.

Не могу не упомянуть мою любимую книгу от

Стива Макконнелла – Совершенный код

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

Итак, мы уже поняли, что такое Java, и десктопные приложения нас больше не вдохновляют как раньше, потому мы решили писать серверные приложения.
Переходим к J2EE. Сразу отмечу, что для меня спецификация J2EE это не только сервлеты, jsp, jsf и пара Фреймворков. Для более глубоких знаний требуется совершенно другая литература, которую я не обнаружил среди русскоязычной (могу лишь посоветовать книги в оригинале, такие как «EJB 3 in Action» и «EJB Design Patterns: Advanced Patterns, Processes, and Idioms»).

Как уже упоминалось в статье хабропользователя Scala, книг по J2EE очень мало, и рассказать можно лишь о трех:

Буди Курняван — «Программирование web-приложений на языке Java»


Замечательная книга для новичка. В ней неплохо расписаны азы создания j2EE приложений на основе сервлетов и JSP. Мастера скажут, что это уже не актуально, и даже про EJB ничего не сказано. Но эта книга рассчитана на людей, только начавших знакомство с J2EE и работу серверных приложений слабо представляющих. Предоставляет базовые навыки разработки для Интернет. Так что свою миссию данное издание выполняет на все сто. Изучение фреймворков и других технологий – это уже отдельная история. Отдельно стоит сказать об отвратительном качестве печати: рисунки нечитабельны.

К.Хорстманн – «JavaServer faces»


Отличная книга по каркасу JSF из разряда must_have. Показывает все плюсы разработки на JSF в отношении удобства и скорости разработки, принцип построения приложения на «бобах» (beans), и многие другие преимущества этой технологии.

«Образцы J2EE. Лучшие решения и стратегии проектирования»


Дипак Алур, Джон Крупи и Дэн Малкс написали прекрасную книгу о паттернах для J2EE. Обязательна для чтения всем, кто сколько ни будь серьезно интересуется web-программированием на основе J2EE.

Почему я упустил из виду «сборник рецептов»? Да, она полезна, но эта не та книга, которую стоит покупать в бумажном варианте.

J2ME
Здесь дела обстоят совсем плохо. Все что мне доводилось читать сводилось к банальному тутореалу «напиши игру пока читаешь». Крайне бестолковая литература.

Вывод:


Все хотят быть на гребне волны в технологиях. Вот только технологии эти, к сожалению, рождаются на западе. Авторы пишут книги, их переводят… Тратится драгоценное время, и к выходу книги добрая половина тем уже не так актуальна. Но, тем не менее, чтение технической литературы (в т.ч. в оригинале) очень полезно в плане создания у себя в голове фундамента, на котором гораздо проще будет выстроить понимание современных технологий, нежели без них. Ведь работа программиста – это не просто набирать код, это тяжелый труд, требующий творческого подхода.
Что еще можно добавить? Для пущего эффекта — читаем оригиналы, документацию и форумы. Новичкам — в первую очередь — книги.

P.S.
Существуют книги – рассуждения, такие как «Гибкая разработка приложений на Java с использованием Spring, Hibernate и Eclipse». По сути, в них нет ни спринга ни хибернейта. Просто рассуждения на тему как нужно программировать. Описание подобных изданий я приводить не стану, пусть каждый себе выбирает сам, что ему читать перед сном.

UPD: Описание книги «Архитектура корпоративных приложений» М. Фаулера от пользователя sse



Мое мнение по поводу книги.
Первое, что отличает книгу — авторский стиль изложения. Все предельно ясно, и напоминает конспект, выполненный радивым студентом — записаны основные положения, выделены моменты, есть необходимые иллюстрации. Книга затрагивает широкий список вопросов: разделение приложения на слои, организация бизнес-логики, возможные сценарии работы с базой данных, организация UI в веб приложении (в книге не рассматривается UI для десктопных приложений, но впоследствии автор добавил эту информацию на свой сайт). Что немаловажно, приведены примеры на Java, что есть lingua franca для современного разработчика.
Всякий раз, когда в голове начинает крутиться мысль «а вот эту таблицу обернуть в класс, и тут унаследоваться — ура, я придумал новый способ», стоит взять книгу Фаулера и прочесть — вероятно, что там это задокументировано, изложено, описан усовершенствованный способ и приведены подводные камни и способы их обхода.
Книга разделена на две части, и этим очень напоминает структуру книги «Design Patterns» by GoF. Первая часть содержит общие положения о построении системы, а так же примеры применения знания из этой книги в реальных приложениях. Вторая часть является каталогом-справочником паттернов, сгруппированных по слоям приложения, в которых типично встретить каждый из них.
В завершение приведен ряд элементарных паттернов как наиболее общих и универсальных из области обработки и хранения данных, построения своих бизнес-объектов и советы по интерфейсной части.
Книга не из дешевых, но информация, приведенная в ней, себя окупает. На сайте Фаулера martinfowler.com она доступна в электронном варианте: можно «невозбранно» (с) ознакомиться, чтобы решить, нужна она вам, или нет. Я сразу понял, что нужна :)

UPD2: Описание от пользователя culvert изданий на английском языке


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

0. Java Language Specification 3rd Edition by James Gosling et al это самая главная книга, книга номер «ноль» этого списка, известная также как JLS. В третьей редакции описывается 5-ая версия языка. Я считаю, что каждый Java программист должен прочитать JLS хотя бы раз. Необходимо знать все возможности предоставленные языком для того чтобы использовать их самому и для того чтобы понимать код написанный другими. JLS это аналог JavaDoc или другой документации для используемых вами библиотек. Однако, в отличие от библиотечных классов, для которых документация обычно доступна из вашей среды программирования, по языку контекстная документация в средах программирования не предоставляется, поэтому JLS нужно читать практически «от корки до корки» хотябы на уровне оглавления и общего содержания каждого пункта. JLS является обязательной литературой при подготовке к сдаче экзамена на Sun Certified Java Programmer (SCJP).

1. Effective Java 2nd Edition by Joshua Bloch рассказывает как именно надо использовать язык Java, чтобы писать хорошие и понятные другим программы. Это сборник практических советов и шаблонов которые должны быть в репертуаре каждого Java программиста. Во второй редакции своего бестселлера Блох рассказывает об эффективном использовании всех возможностей 5-ой версии Java. Даже программист с многолетним опытом откроет в ней что-то новое и уж точно получит удовольствие от систематизации всех основных знаний про программирование на Java.

2. Java Concurrency in Practice by Brian Goetz et al(Must read если хотите писать хороший многопоточный код) необходима всем, кто пишет многопоточные приложения на Java. Её не нужно читать если вы пишете простые приложения а для бизнес-логики используете J2EE или другие каркасы приложений которые изолируют программиста от многопоточности. Однако, как только вам необходимо оптимизировать производительность или скорость реакции вашего приложения, то в современном мире от многопоточности вам не уйти. В этом случае книга Гоэтза будет вашим лучшим помощником.

3. Java Puzzlers: Traps, Pitfalls, and Corner Cases by Joshua Bloch, Neal Gafter это интересная книга которая состоит из интеллектуальных загадок исключительно на языке Java. Она раскроет перед вами все граничные случаи языка Java, научит как не надо программировать, чтобы ваш код был понятен. Книжка не обязательна для прочтения, но очень рекомендуется для подготовки к SCJP и для собственного удовольствия.
Tags:
Hubs:
+23
Comments 30
Comments Comments 30

Articles