Здесь собран список лучших, по моему мнению, когда либо написанных книг про 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).