Effective Java
エフェクティブジャバ
- 著者:
- Joshua Bloch / 柴田 芳樹(ジョシュアブロック / シバタヨシキ)
- 出版社:
- 丸善出版
- 出版日:
- 2018年10月26日頃
- ISBN:
- 9784621303252
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
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 件)
新人さんにすすめる有益な技術書達 2022春
♡ 528読書, まとめ, 新人プログラマ応援Effective Javaのまとめのまとめ
♡ 360Java, EffecviveJavaJavaから職業プログラマをスタートするプログラミング初心者に読んでほしい技術書たち(2017年版)
♡ 54Java10年前はGoFのデザインパターン本を読んで何やらわかった気になっていました
♡ 51Java, デザインパターン, Qiita10th_過去enumについて
♡ 32Java【Java】static と synchronized から始めるマルチスレッド入門
♡ 17Java, マルチスレッド, メモリ管理, static, 排他制御Java達人への道:Effective Java 第3版からの学び
♡ 16java, デザインパターン, effectivejava例外的状況にだけ例外を使う 〜 Seleniumでの要素存在判定を題材に
♡ 12Python, Selenium, 例外, 例外処理【Cloud9 Advent Calendar Day1】今年購入してよかったガジェット11選
♡ 7Java, デザインパターン, ガジェット2025年の私の最近の勉強法
♡ 5ポエム, 仕事効率化, 勉強法
この本に興味がある方におすすめ
関連する本
関連記事
リーダブルコードの次に読む本 - ステップアップの読書ルート
リーダブルコードを読み終えた後、設計力を段階的に高めるための読書ルートと、各レベルで学ぶべきテーマを紹介します。
設計の引き出しは経験だけでは増えない
実務経験だけでは設計の引き出しに限界があります。なぜ経験だけでは不十分なのか、本が設計力に対して果たす、他で代えにくい役割を論じます。
あの有名 OSS のコードは、この本の影響を受けている
広く使われているオープンソースソフトウェアの設計には、技術書と共通の語彙や原則が残っています。OSS のコードから辿れる影響と、似ているだけの例の見分け方を整理しました。
関連用語
Builder パターン
複雑なオブジェクトの生成をメソッドチェーンで段階的に構築するデザインパターン
Web Worker
ブラウザーのメインスレッドとは別のスレッドで JavaScript を実行し、UI のブロッキングを防ぐ仕組み
Go
Google が開発したシンプルで高速なコンパイル言語で、goroutine による軽量な並行処理が特徴
goroutine
Go の軽量スレッドで、数十万規模の並行処理を低コストで実現する
S3 ライフサイクル
S3 オブジェクトのストレージクラスを自動的に移行し、コストを最適化する機能
デザインパターン
ソフトウェア設計で繰り返し現れる問題に対する再利用可能な解決策のカタログ