Effective Java 第2版 (The Java Series)を読みました

Java SE 5で採用された、java.util.concurrentフレームワークとか、Enum(初版でもEnumが必要!と力説していた)とか、Genericsネタが追記されて、最近のJavaを使っている人も安心して読める内容になりました。
内容の素晴らしさとは別に、この本の示す、Javaプログラマーの採るべき考え方が特に好きです。第1章のp.2に書いてある

本書の規則は常に100%適用される訳ではありませんが、大多数の場合における優れたプログラミングの実践を特徴付けています。それらの規則に何も考えずに従うべきではありません。ほんの時折、正当な理由がある場合に規則を破るべきです。プログラミングの技を学ぶことは、他のほとんどの修行と同様に、最初に規則を学んで、それからいつ規則を破るかを学ぶことから成り立っています。

とか、第8章のp.227に書いてある

パフォーマンスのために、健全なアーキテクチャの原則を犠牲にしてはなりません。速いプログラムよりも良いプログラムを書くように務めてください。良いプログラムが十分に速くなければ、そのプログラムのアーキテクチャは、そのプログラムを最適化することを可能にします。良いプログラムは、情報隠蔽(information hiding)の原則を具体化しています。つまり、可能なところでは個々のモジュール内に設計上の決定を極小化していますので、個々の決定はシステムの残りの部分に影響を与えることなく変更できます(項目13)。

などの記述に現れている、

  • 「良いプログラム」を書くこと、「良いアーキテクチャを保つこと」に専念するべき

という考え方ですね。
実際、一昔前のJavaと違って、最近のJavaはよっぽどのことが無い限り、「Javaだから遅い」ということは無くなってきているように思います(リソース食いであることは確かですが)。もちろん、リアルタイム性を求められる環境や、GUI、OSの機能を直接使用する箇所など、Javaが不得手とする環境はまだまだある訳ですが、基本的なアプリケーション作成の場合に、敢えてパフォーマンスのために変なことをする必要は、極端に減っているのではないかと。
ハードウェアの性能も含めて、Javaプラットフォームの性能が向上している今、この本の主張する所の意味は「Javaが遅かった」以前よりもずっと、大きくなっているんじゃないかな、と思います。