Если задать вопрос о том, какую книгу стоит прочесть о Java, все скажут, что «Effective Java». Эта книга есть во всех списках рекомендованных книг по Java — за исключением, пожалуй, только тех, авторы которых пытаются продать вам свои книги. Есть несколько причин, почему эта довольно старая книга остаётся такой популярной.
Во‑первых, эта книга учит, как писать хороший Java‑код. Это значит не только быстрый код, но и читаемый, и поддерживаемый. Она описывает общие Java‑паттерны, которые делают ваш код более понятным для других программистов. Книга не рассказывает о том, как «хачить» JVM, — только о том, как использовать её более эффективно.
Во‑вторых, хотя автор не расскажет о Stream API или лямбдах (для этого нужно дождаться третьего издания), он рассказывает о других сложных темах: дженериках, параллельном программировании и сериализации. Практически всё из книги можно и нужно применять в своей ежедневной работе.
С другой стороны, книга посвящена Java 6. Есть достаточно много изменений, которые появились в Java 7 и 8 и которые не освещены в этой книге. К примеру, Stream API заслуживает того, чтобы его описали в книге, подобной этой. Надеюсь, что третье издание появится достаточно скоро.
В заключение: «Effective Java» — не такая большая книга. В ней порядка 350 страниц, написанных не очень сложным английским. Она стоит усилий, затраченных на чтение.