Java
著:ジョシュア・ブロック(Joshua Bloch)訳:柴田芳樹
刊行:2008年11月25日
ページ数:348
判型:B5変形
税込価格:3,780円
ISBN10:489471499X
ISBN13:9784894714
Javaプログラミングのベストセラー、7年ぶりの改訂版!
Google社, Sun Microsyste
10年前にこの本があったのならとホント思うよ。私にはJavaの本など必要ないと思われるかもしれないが、この本だけは必要だ。
―― ジェームズ・ゴスリン(サン・マイクロシステムズ、フェロー、副社長)
すばらしい本だ。プログラミング言語Javaとオブジェクト指向プログラミング全般を使いこなすためのアドバイスがぎっしり詰まってる。
―― ギッラード・ブラーハ(Java言語仕様 第3版、共著者)
本書は、プログラミング言語Java とその基本ライブラリーを、最も効果的に使用する手助けになることを目的としています。経験に基づいたプログラマのための必須のルール78個をまとめることで、日々のプログラミングで直面するさまざまな問題を解決するベストプラクティスを提供します。本書を活用すればJavaを深くまで理解でき、今まで以上にきれいで正確な、頑健で再利用可能なコードが書けるようになるでしょう。
第2版では、初版から7 年が経過しており、リリース1.5 で新たに導入されたジェネリックス、enum、および、アノテーションに関する項目が、第5 章「ジェネリックス」、第6 章「enum とアノテーション」として新規に追加されています。また、初版の「スレッド」の章はタイトルも変更されて第10 章「並行性」となっており、その内容のかなりの部分が書き直されています。
本書は、Ken Arnold、James Gosling、David Holmes による『プログラミング言語Java 第4 版』を補完する内容であり、初版のタイトルにあった「プログラミング言語ガイド」の名にふさわしいものです。James Gosling の言葉は誇張ではありません。Java でプログラミングするすべてのソフトウェアエンジニア必読の書といえるでしょう。
―― ギッラード・ブラーハ(Java言語仕様 第3版、共著者)
本書は、プログラミング言語Java とその基本ライブラリーを、最も効果的に使用する手助けになることを目的としています。経験に基づいたプログラマのための必須のルール78個をまとめることで、日々のプログラミングで直面するさまざまな問題を解決するベストプラクティスを提供します。本書を活用すればJavaを深くまで理解でき、今まで以上にきれいで正確な、頑健で再利用可能なコードが書けるようになるでしょう。
第2版では、初版から7 年が経過しており、リリース1.5 で新たに導入されたジェネリックス、enum、および、アノテーションに関する項目が、第5 章「ジェネリックス」、第6 章「enum とアノテーション」として新規に追加されています。また、初版の「スレッド」の章はタイトルも変更されて第10 章「並行性」となっており、その内容のかなりの部分が書き直されています。
本書は、Ken Arnold、James Gosling、David Holmes による『プログラミング言語Java 第4 版』を補完する内容であり、初版のタイトルにあった「プログラミング言語ガイド」の名にふさわしいものです。James Gosling の言葉は誇張ではありません。Java でプログラミングするすべてのソフトウェアエンジニア必読の書といえるでしょう。
【著者紹介】
ジョシュア・ブロック(Joshua Bloch):Google 社のチーフJava アーキテクトであり、Jolt Award受賞者。以前は、Sun Microsyste
《訳者紹介》
柴田 芳樹(しばた よしき):1959 年生まれ。九州工業大学情報工学科で情報工学を学び、1984年同大学大学院で情報工学修士課程を修了。Unix(Solaris/Li
【目次】
日本語版によせて
訳者まえがき
Effective Java によせて
まえがき
謝辞
第1章 はじめに
第2章 オブジェクトの生成と消滅
項目1 コンストラクタの代わりにstatic ファクトリーメソッドを検討する
項目2 数多くのコンストラクタパラメータに直面した時にはビルダーを検討する
項目3 privateのコンストラクタかenum 型でシングルトン特性を強制する
項目4 privateのコンストラクタでインスタンス化不可能を強制する
項目5 不必要なオブジェクトの生成を避ける
項目6 廃れたオブジェクト参照を取り除く
項目7 ファイナライザを避ける
第3章 すべてのオブジェクトに共通のメソッド
項目8 equals をオーバーライドする時は一般契約に従う
項目9 equals をオーバーライドする時は、常にhashCode をオーバーライドする
項目10 toString を常にオーバーライドする
項目11 clone を注意してオーバーライドする
項目12 Comparable
第4章 クラスとインタフェース
項目13 クラスとメンバーへのアクセス可能性を最小限にする
項目14 public のクラスでは、public のフィールドではなく、アクセッサーメソッドを使う
項目15 可変性を最小限にする
項目16 継承よりコンポジションを選ぶ
項目17 継承のために設計および文書化する、でなければ継承を禁止する
項目18 抽象クラスよりインタフェースを選ぶ
項目19 型を定義するためだけにインタフェースを使用する
項目20 タグ付クラスよりクラス階層を選ぶ
項目21 戦略を表現するために関数オブジェクトを使用する
項目22 非static のメンバークラスよりstatic のメンバークラスを選ぶ
第5章 ジェネリックス
項目23 新たなコードで原型を使用しない
項目24 無検査警告を取り除く
項目25 配列よりリストを選ぶ
項目26 ジェネリック型を使用する
項目27 ジェネリックメソッドを使用する
項目28 API の柔軟性向上のために境界ワイルドカードを使用する
項目29 型安全な異種コンテナーを検討する
第6章 enum とアノテーション
項目30 int 定数の代わりにenum を使用する
項目31 序数の代わりにインスタンスフィールドを使用する
項目32 ビットフィールドの代わりにEnumSet を使用する
項目33 序数インデックスの代わりにEnumMap を使用する
項目34 拡張可能なenum をインタフェースで模倣する
項目35 命名パターンよりアノテーションを選ぶ
項目36 常にOverride アノテーションを使用する
項目37 型を定義するためにマーカーインタフェースを使用する
第7章 メソッド
項目38 パラメータの正当性を検査する
項目39 必要な場合には、防御的にコピーする
項目40 メソッドのシグニチャを注意深く設計する
項目41 オーバーロードを注意して使用する
項目42 可変長引数を注意して使用する
項目43 null ではなく、空配列か空コレクションを返す
項目44 すべての公開API 要素に対してドキュメントコメントを書く
第8章 プログラミング一般
項目45 ローカル変数のスコープを最小限にする
項目46 従来のfor ループよりfor-each ループを選ぶ
項目47 ライブラリーを知り、ライブラリーを使う
項目48 正確な答えが必要ならば、float とdouble を避ける
項目49 ボクシングされた基本データより基本データ型を選ぶ
項目50 他の型が適切な場所では、文字列を避ける
項目51 文字列結合のパフォーマンスに用心する
項目52 インタフェースでオブジェクトを参照する
項目53 リフレクションよりインタフェースを選ぶ
項目54 ネイティブメソッドを注意して使用する
項目55 注意して最適化する
項目56 一般的に受け入れられている命名規約を守る
第9章 例外
項目57 例外的状態にだけ例外を使用する
項目58 回復可能な状態にはチェックされる例外を、プログラミングエラーには実行時例外を使用する
項目59 チェックされる例外を不必要に使用するのを避ける
項目60 標準例外を使用する
項目61 抽象概念に適した例外をスローする
項目62 各メソッドがスローするすべての例外を文書化する
項目63 詳細メッセージにエラー記録情報を含める
項目64 エラーアトミック性に努める
項目65 例外を無視しない
第10章 並行性
項目66 共有された可変データへのアクセスを同期する
項目67 過剰な同期は避ける
項目68 スレッドよりエグゼキューターとタスクを選ぶ
項目69 wait とnotify よりコンカレンシーユーティリティを選ぶ
項目70 スレッド安全性を文書化する
項目71 遅延初期化を注意して使用する
項目72 スレッドスケジューラに依存しない
項目73 スレッドグループを避ける
第11章 シリアライズ
項目74 Serializab
項目75 カスタムシリアライズ形式の使用を検討する
項目76 防御的にreadObject
項目77 インスタンス制御に対しては、readResolv
項目78 シリアライズされたインスタンスの代わりに、シリアライズ・プロキシを検討する
付録
初版に対応する項目
参考文献
索引
- レビュー (0)
- トラックバック (0)
- トラックバックURL :
- http://www.pej-hed.jp/tb.cgi/2619

