elizarov


Блог Романа Елизарова


Previous Entry Share Next Entry
Список книг которые должен прочитать каждый Java программист
elizarov

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

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

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

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

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

UPDATE: Написал новую заметку про книжку, которая безусловно полезна для всех программистов, независимо от технологии: "Что должен знать каждый программист: Алгоритмы". А здесь обновил название экзамена (было Sun Certified Java Programmer, теперь Oracle Certified Professional Java Programmer).


  • 1
Согласен насчет книг 1, 2. Отличные книги. 3 не читал, а вот 0 мне кажется мало полезной.

Ее должен читать каждый кто обрабатывает код на Java, но не каждый программист. Сейчас имеется такое большое количество языков, даже в J2EE мире (Java, JSP, Query Language-и, XML-дескрипторы), которые постоянно менются и имеют огромные спецификации, что уследить за всеми их особенностями просто не возможно. Имхо, нужно знать основные конструкции и идиомы использвоания, а детали не так важны. Язык должен быть чем-то вроде библиотеки, чтобы им пользоваться не нужно его досконально знать, и java этому условию соответствует.

Всё зависит от того какой у вас full-time job. Если вы пишете всего по немногу (Java, JSP, Queries, XML, etc), то глубокое знание JLS не нужно. Согласен с утверждением, что "java этому условию соответствует", в том смысле что концептуально Java проста и содержит немного сюрпризов которые могут поставить новичка в тупик по сравнению с другими языками типа C# и C++. Ходит даже мнение что в C++ невозможно стать экспертом. Однако и в Java сюрпризов полно -- читайте Java Puzzlers!.

А вот если вы бОльшую часть времени пишите и читаете (sic!) Java код, то JLS это одно из тех ваших знаний которые вы постоянно используете. Я в свой жизни повидал массу багов и кривого кода, которые были прямым следствием того, что их авторы не были в курсе JLS, то есть не знали языка Java.

К сожалению, особенно важно это стало в Java 5, когда многие новые возможности порой ведут себя очень нетривиальным образом и надо просто знать что именно происходит. А это, как раз, всё и описано в JLS.

а как там супер-пупер ручка?
игрушка или польза от нее есть?

Пока только игрушка. Пользу не извлекаю.

Даже не знаю. Я не читал №0, а только №1 и №2.
Надо сказать, что после них (и нескольких лет активного девеломпента на java) в №3, когда ее просматривал, не видел для себя особых сюрпризов.

(Deleted comment)
"Да и надо ли..." -- Однозначно надо! При наличии практики пользы еще больше, так как позволяет переосмыслить практику на качественно новом уровне.

  • 1
?

Log in

No account? Create an account