pearson
alwayslearning

Java

Effective Java 第2版

  • 和書
  • at 2008/11/21 10:42:00
  • 2008 |
  • 正誤表 |
  • 3,000~5,000円
 著:ジョシュア・ブロック(Joshua Bloch)
 訳:柴田芳樹
 刊行:2008年11月25日
 ページ数:348
 判型:B5変形
 税込価格:3,780円
 ISBN10:489471499X
 ISBN13:9784894714991

Javaプログラミングのベストセラー、7年ぶりの改訂版!



Google社, Sun Microsystems社でJavaプラットフォームの設計と実装をリードしてきた著者が、優れたソフトウェア設計のための知識と経験を凝縮させたルールブック。すべてのJavaプログラマにとっての必読書です!

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 でプログラミングするすべてのソフトウェアエンジニア必読の書といえるでしょう。


【著者紹介】

ジョシュア・ブロック(Joshua Bloch):Google 社のチーフJava アーキテクトであり、Jolt Award受賞者。以前は、Sun Microsystems 社のDistinguished Engineer、および、Transarc 社の上級システムデザイナーであった。JDK 5.0 の言語拡張およびJava コレクションフレームワークなどの、数多くのJava プラットフォームの機能の設計および実装をリーディングしてきた。『JavaPuzzlers 罠、落とし穴、コーナーケース』と『Java 並行処理プログラミング』の共著者でもある。


《訳者紹介》

柴田 芳樹(しばた よしき):1959 年生まれ。九州工業大学情報工学科で情報工学を学び、1984年同大学大学院で情報工学修士課程を修了。Unix(Solaris/Linux)、C、Mesa、C++、PL/SQL、Java などを用いた様々なソフトウェア開発に従事。1988 年暮れから4 年半、米国西海岸に駐在し、途中ゼロックス社のパロアルト研究所で1 年を過ごす。現在は、ソフトウェア設計コンサルタントとして、ソフトウェア開発、教育、コンサルテーション等に従事している。一方、私的な時間に技術雑誌記事の執筆や技術書の翻訳を行っている。

訳者のホームページ



【目次】

日本語版によせて
訳者まえがき
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 Serializable を注意して実装する
 項目75 カスタムシリアライズ形式の使用を検討する
 項目76 防御的にreadObject を書く
 項目77 インスタンス制御に対しては、readResolve よりenum 型を選ぶ
 項目78 シリアライズされたインスタンスの代わりに、シリアライズ・プロキシを検討する
付録
初版に対応する項目
参考文献
索引


  • レビュー (0)
  • トラックバック (0)
トラックバックURL :
http://www.pej-hed.jp/tb.cgi/2619