あとがき
本書は、フィル・ワドラーが2003年にアメリカからスコットランドに戻り、エジンバラ大学で教鞭をとることになったときに始まった。当時、Javaコミュニティ・プロセスで5年間受け入れられずにいたGeneric Java(Bracha et al. 1998)が、ついにJava 5に搭載されることになった。フィルはGeneric Javaの著者の一人であり、私は関数型プログラミングの経験があったので、この主要な次期機能に関する共同書籍プロジェクトは、明らかなチャンスに思えた。結局のところ、私はフィルの型理論の深いバックグラウンドには及ばなかった。そこで彼は、ジェネリックスの比較的理論的な扱いを補完するものとして、Javaコレクション・フレームワークにおける、最も重要な実用的アプリケーションに関するパートを提案した。これは私の特殊化ではなかったので、初期化の努力は控えめに言ってもお粗末なものだった。ジョシュ・ブロッホには一生恩義を感じている。彼は非常に寛大で詳細なレビューを書いてくれて、小さなエラーもすべて訂正してくれたし、資料の質も変えてくれた。
それから20年近く経ってからこの本に戻るのは、興味深い経験だった。仕事を始める前は、ジェネリクスもコレクションも、新版を出すほど変わっていないと発見するかもしれないと心配していた。結局のところ、Javaは後方互換性で有名なのだから、きっとこの本は時代を超越しているはずだ。プログラミングのイディオムやスタイルが20年以上変わっていないと考えるのは馬鹿げているのではないだろうか?結局のところ、プログラミングのイディオムやスタイルが20年以上変わっていないと考えるのは馬鹿げているのではないだろうか?しかし、何よりも驚いたのは、この2つのことが真実である可能性があるということだった。Javaはその間、際立って安定していたにもかかわらず、Javaプログラムのスタイルやイディオムは大きく変わってしまったのだ。というのも、あるプログラミング・スタイルが不人気になると、それに関連する言語は滅びるか、少なくとも無価値なものになる、ということを繰り返し見てきた世界で、私は専門家として育ったからだ。Javaを含む1990年代の言語は、30年経った今でも人気がある。そしてそれは、異なる時代にルーツを持つ言語を、いかにして現代の環境で使うのにふさわしいと感じられるようにするかという、大きな課題を提示している。
おそらく最大の変化は、メモリに対するプロセッサのスピードとパワーが大幅に向上したことだろう。これは、複数のキャッシュ・レベルを持つマルチプロセッサ・システムが一般的になり、メモリの遅延効果、特にキャッシュの振る舞いが、しばしばプログラミングの性能を支配するようになったことを意味する。そのため、空間的な局所性は、Javaの自動メモリ管理哲学の根底にあった「メモリ内のオブジェクトの物理的な位置は第一義的には重要ではない」という前提に挑戦する、優れた性能のための主要な要件となっている。JVMとガベージ・コレクタ実装の継続的な進化は、アプリケーション・プログラマをこの影響から完全に保護するのに役立っているが、リンクされたデータ構造を使用するたびに慎重な精査が必要であることに変わりはない。本書の初版には、データ構造としての配列の非推奨を主張する、あまり古びていないセクションがあった!Javaの継続的な適応の表れとして、Project Valhallaの1つの目標は、オブジェクトをキャッシュしやすい値オブジェクトに平坦化することによって、この問題に対処することである。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access