Effective Java

エフェクティブジャバ

Effective Java の表紙
プログラミング
著者:
Joshua Bloch / 柴田 芳樹(ジョシュアブロック / シバタヨシキ)
出版社:
丸善出版
出版日:
2018年10月26日頃
ISBN:
9784621303252
在庫:
在庫あり
3(4 件 / 楽天ブックス)
上級者向け
Javaプログラミングインターネット・WEB デザインデザインパターンベストプラクティスオブジェクト指向Java 8モジュールシステム並列処理コード品質ソフトウェア設計

なぜ注目されているか

言及数
61位
総合131位 ↑ 10 ランクアップ 言及 40 件・うち記事 34 件を掲載
03620222023202420252026

書籍紹介

Java プログラマーにとって必読の定番書『Effective Java』の改訂第 3 版。

この第 3 版では、Java 8 で新たに導入されたラムダとストリームに関する章が新規に追加されたほか、オプショナル、インタフェースでのデフォルトメソッド、try-with-resources 文、@SafeVarargs アノテーション、モジュールなどの機能を扱った項目を含み、第 2 版の 78 項目から 90 項目に増加しています。

今日では Java は大きく複雑になり、並列実行から、繰り返し、各種データの表現まで、多くの事柄に対して多様な抽象化を持ち合わせています。
この大きさと複雑さを考えると、最新のベストプラクティスの指導書はなおさら重要です。

本書は多くのデザインパターンとイデオムを示すコード例を含んでおり、プログラミング言語 Java の正しい理解と、簡潔で明瞭で正確なソフトウェアの設計に役立つでしょう。
日本語版によせて

訳者まえがき

Effective Java によせて

まえがき

謝辞

第 1 章 はじめに

第 2 章 オブジェクトの生成と消滅

第 3 章 すべてのオブジェクトに共通のメソッド

第 4 章 クラスとインタフェース

第 5 章 ジェネリックス

第 6 章 enum とアノテーション

第 7 章 ラムダとストリーム

第 8 章 メソッド

第 9 章 プログラミング一般

第 10 章 例外

第 11 章 並行性

第 12 章 シリアライズ

付録 第 2 版に対応する項目

参考文献

索引

技書の森解説

Java の文法は書けるのに、クラスの公開範囲や例外の選び方、ジェネリックスの境界の付け方になると判断の根拠を説明できない。そうした段階の開発者に向けて、設計上の選択を 90 の項目に分けて理由とコード例で示したのが『Effective Java 第 3 版』 (Joshua Bloch 著、柴田 芳樹 訳、丸善出版、2018 年 10 月刊) です。原書は Effective Java Third Edition で、版元はこの改訂版を Java プログラマーにとっての定番書と紹介し、デザインパターンとイデオムを示すコード例を通じて、言語の正しい理解と簡潔で正確なソフトウェアの設計に役立つ本と位置づけています。

第 2 版との違い、ラムダとストリームの章と 90 項目

版元の紹介によれば、第 3 版では Java 8 で導入されたラムダとストリームの章が新しく加わり、オプショナル、インタフェースのデフォルトメソッド、try-with-resources 文、@SafeVarargs アノテーション、モジュールといった機能を扱う項目が入ったことで、第 2 版の 78 項目から 90 項目に増えています。日本語版の第 2 版は 2013 年 6 月に刊行されており、本書はその改訂版にあたります。巻末には第 2 版の項目との対応を示す付録があるため、旧版で覚えた項目番号から新しい項目を探し直すこともできます。Java 8 より前の書き方で止まっているコードを抱えている人にとっては、第 7 章「ラムダとストリーム」が、無名クラスからラムダへ、ラムダからメソッド参照へと書き換える判断の基準になります。

オブジェクト生成から並行性まで、12 章の構成と読みどころ

本書は第 1 章「はじめに」に続いて、第 2 章 オブジェクトの生成と消滅、第 3 章 すべてのオブジェクトに共通のメソッド、第 4 章 クラスとインタフェース、第 5 章 ジェネリックス、第 6 章 enum とアノテーション、第 7 章 ラムダとストリーム、第 8 章 メソッド、第 9 章 プログラミング一般、第 10 章 例外、第 11 章 並行性、第 12 章 シリアライズの全 12 章で構成されています。各項目は「コンストラクタの代わりに static ファクトリメソッドを検討する」「継承よりもコンポジションを選ぶ」のように、推奨する選択そのものが項目名になっているのが特徴です。たとえば第 2 章には、引数の多いコンストラクタに対する ビルダー の検討や、資源を直接結び付けるより 依存性注入 を選ぶ項目が並び、第 4 章には可変性を最小限にする項目が置かれています。

これらの項目が実務で効くのは、多くの場合、問題が表に出るのがずっと後だからです。equals と hashCode の契約を破ったクラスは、コレクションに入れたときに初めておかしな振る舞いを見せますし、公開した API の設計の誤りは、利用者が増えたあとでは直せません。オブジェクトを 不変 にしておけば共有やスレッドをまたぐ受け渡しで悩む場面が減る、といった理由付きの判断を項目単位で手元に置けることが、本書の価値の中心です。

Java の基礎を固めた中級者向け、通読より項目単位で引く使い方

前提は、Java の文法とクラスやインタフェース、継承といったオブジェクト指向の基本を一通り使えることです。推奨する選択と理由が項目ごとにまとまっているため、最初から通読するより、コードを書いていて迷った箇所や、レビューで指摘を受けた箇所に対応する章から読むほうが身につきやすい本です。指摘の根拠を言葉にできるようになりたい人には、コードレビューで読まれている知識の整理 もあわせて参考になります。一方で、Java の文法そのものを学ぶ段階の人や、Spring などのフレームワークの使い方を知りたい人には、本書は範囲が合いません。扱うのは言語と標準ライブラリの使い方の判断であり、特定のフレームワークの手順は対象外です。

業務で Java を書き、自分のコードがなぜその形なのかを説明する立場になった人にとって、本書は判断の根拠を 90 の項目として借りられる一冊です。迷うたびに該当する項目を引き、その理由まで読む習慣を付ければ、設計の議論で使える語彙が着実に増えていきます。

言及した記事 (34 件)

この本に興味がある方におすすめ

関連する本

関連記事

関連用語

共有: