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

JAVA*
По мотивам «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 и для собственного удовольствия.
+23
22 августа 2009, 21:30
151
Monyag 7,0

комментарии (29)

+2
PATRICK17 #
Это точно пока книги переведут они уже неактуальны… Поэтому лучше читать в оригинале.

Стива Макконнелла – Совершенный код — хорошая книга. Недавно прочел. Вообще все книги в обзоре неплохие, покрайней мере, которые я прочитал.
+1
Wolverine #
J2ME
Здесь дела обстоят совсем плохо. Все что мне доводилось читать сводилось к банальному тутореалу «напиши игру пока читаешь». Крайне бестолковая литература.

Вартан Пирумян. Платформа программирования J2ME для портативных устройств. Довольно неплохая книга (точнее лучшее, что читал по сабжу), никаких игр, много базовой информации от которой уже потом можно оттолкнуться :)
0
Monyag #
1. она не перееиздавалась, насколько мне известно; 2. перевод как будто с наскальных рисунков; 3. прилично устарела.
Я бы обратил внимание на «Beginning J2ME: From Novice to Professional, Third Edition (Novice to Professional)». Но увы, только в оригинале.
0
Wolverine #
А с тех пор много чего изменилось в J2ME? Новые версии конфигурации и профилей не выходили… Базовые знания она в принципе дает даже сейчас (структура мидлета, жизненный цикл, что есть AMS, работа с сетью и RMS). Остальное докуривается по докам, разборов чужих сорцов (хотя бы из WTK). По-крайней мере прочитав эту книгу уже через два дня у был нужный мидлет (простенький, для расчетов по учебе), а не змейка из Буткевича :)))
0
Wolverine #
Пропустил слово. «через два дня у меня был»
0
Monyag #
суть не в изменениях, а в том, что бумажный вариант не достать. Базовые знания они не теряют актуальность, но их контекст уже не тот, который был семь-восемь лет назад.
>По-крайней мере прочитав эту книгу уже через два дня у был нужный мидлет (простенький, для расчетов по учебе), а не змейка из Буткевича :)))
я писал графическую игрушку с ИИ (по учебе) по Горнакову. Не самые приятные воспоминания об этом процессе связаны именно с книгой. Листание других — не поправили ситуации
+1
django #
По j2me читать литературу можно только на англ. языке, вся русская чушь, в том числе и этот Пирумян — на помойку. Могу это сказать точно, так как полтора года этим занимался и перечитал практически всё что есть.
+4
Aldarund #
Раз уж тут есть «Совершенный код», то не могу не порекомендовать книгу «Программист-прагматик» — www.ozon.ru/context/detail/id/1657382/. Частично пересекается с совершенным кодом, но она более концентрированная. Стоит одного прочтения как минимум.
0
voidMan #
Тогда и «Джоэл о программировании» не забудьте, тоже стоит минимум одного прочтения
0
iZENfire #
«Джоэл: и снова о программировании»
Продолжение вышедшего в 2006 году бестселлера «Джоэл о программировании» представляет собой подборку самых популярных статей, опубликованных автором на его сайте www.joelonsoftware.com
+1
sse #
Мне неловко советовать эти книги, но раз вы заговорили про паттерны, где:
— отличный справочник Э.Гаммы: «Паттерны проектирования» (E.Gamma «Design patterns») для начинающих;
— совсем не корпоративная «Архитектура корпоративных приложений» М. Фаулера (M.Fowler «Patterns of Enterprise Application Architecture»для уже продвинутых?

:)
0
Monyag #
Конечно, справочник Гамма, Хелм, Джонсон, Влиссидес вещь хорошая, но в обзор эта книга не попала по той простой причине, что обзор Java-ориентирован, а «приемы объектно ориентиорованного программирования: паттерны проектирования» ориентированы (!)примерами на С++ и SmallTalk.
>«Архитектура корпоративных приложений» М. Фаулера
Эта книга не попала в обзор, так как я ее не прочел полностью и рекомендовать «от себя» я её не могу. И цена на мой взгляд завышена.
0
iZENfire #
Есть ещё по паттернам проектирования:
Марк Гранд «Шаблоны проектирования в Java», Новое знание, 2004 — ISBN 5-94735-047-5
0
etc #
Очень полезный пост, наверное он и станет толчком для изучения мной Java :)

Сейчас читаю Г. Буч «Объектно ориентированнный анализ и проектирование с примерами приложений», 3 издание. Пока прочитал треть, но нужно сказать многовато воды и книга, по моему субъективному мнению, тяжеловато читается, по крайней мере в мои 18 :) Это я к тому, что одна и та же книга, прочитанная с разницой во времени в два года воспринимается абсолютно по разному :)
0
iZENfire #
Советую ещё почитать:

Кент Бек «Шаблоны реализации корпоративных приложений», Вильямс, 2008 — ISBN 978-5-8459-1406-4, 0-321-41309-1

Джерард Месарош «Шаблоны тестирования xUnit: рефакторинг кода тестов», Вильямс, 2009 — ISBN 978-5-8459-1448-4, 978-0-13-149505-0
0
dzmitryc #
Стоит рекомендовать ещё и «Thinking in Java» (Философия Java). Читая буржуйский вариант убивается 2 зайца: более полный текст (русский страниц на 400 короче) + бесплатное изучений английского языка :)
А насчёт чтения с монитора — есть ведь читалки с «электронной бумагой». PDF/DjVu читается «на ура».
На данный момент возник один минус электронных книг — их слишком много. И ограничителя в виде стоимости при возможности скачать с рапиды/торрентов как-то не ощущается.
0
ice9 #
>А насчёт чтения с монитора — есть ведь читалки с «электронной бумагой». PDF/DjVu читается «на ура».

Ну насчет «на ура» это вы загнули. PDF/Djvu с рисунками, таблицами и примерами кода с большой вероятностью будет нечитабелен.
0
dzmitryc #
При повороте на 90 градусов помещается как раз страница «по ширине». Хотя, с рисунками на всю страницу по высоте да, выходит косячек
0
ice9 #
Поворот — да, облегчает дело, но не всегда, увы. С рисунками и кодом больше всего проблем.
0
defcon #
Имхо, в плане ООАД, стоит начинать с Лармана (Крэг Ларман, Применение UML 2.0 и шаблонов проектирования), а не с Буча, он более современен. Там и примеры не C, а Java; и больше шаблонов раскрыто; и упор на UML, а не на нотацию Буча; и упор на agile unified process; и т.д.

0
Acvilon #
Мне очень понравились книги: Java — Эффективное программирование автор Джошуа Блох, Философия Java автор Брюс Эйкель (читать только в английском варианте последнее издание, т.к. переведено ужасно; на русском достаточно хороший перевод у предыдущего издания), Паттерны авторы Банда Четырех, Рефакторинг автор Мартин Фаулер. Если эти книги вы прочтете, то вы уже на высоком уровне, а дальше практика-практика-практика, и не забывать про повторение!
+2
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 и для собственного удовольствия.

P.S. не уверен что есть переводы этих книжек, и лично вам вообще не советую читать технические книжки на русском
0
zholdas #
Книги Хорстмана можно найти вот в этом торренте
0
zholdas #
Книги Хорстманна можно скачать в этом торренте
0
Monyag #
Фактор скачивания украденных книг является основным препятствием для выпуска дополнительного тиража «Swing: Эффектные пользовательские интерфейсы». Не читайте ворованных книг, дорогие читатели, иначе мы рискуем потерять хорошую компьютерную литературу на бумаге в принципе…
©Портянкин
0
AlexeyTokar #
насчет книги Буди Курняван — «Программирование web-приложений на языке Java». Вы указали что «ничего нет о EJB». Есть…
0
Monyag #
есть. больше ста страниц. Но я написал:
>>Мастера скажут, что это уже не актуально, и даже про EJB ничего не сказано.
Именно мастера. Для новичков данной информации вполне хватит вплоть до отвращения к EJB :)
0
CyMpak #
Недавно начал переходить на Java и был удивлен отсутствием в списке таких фамилий как Эккель и Шилдт. На моем уровне Дао это очень неплохие книги, хотя пока сравнивать особо не с чем. Если сравнивать с указанным в списке, то как у них с качеством?
0
kontiky #
Вот еще, на мой взгляд, must read book
Java Generics and Collections

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