本書は、Javaでプログラムする際に多くのプログラマが直面する問題を300例以上も取り上げ、わかりやすいレシピ集というスタイルで解説しています。すでにJavaの基礎は習得したプログラマがステップアップするために最適な一冊です。取り上げている内容は、コンパイル、デバッグ、データの入出力、GUI開発、ネットワーク機能など基礎的なものから、正規表現、データ構造、他の言語とのミックスなど本書独自のものまで幅広く、Javaプログラムのサンプル集として決定版と言えるものです。
Javaクックブック
―Java開発者のためのレシピ集
Ian F. Darwin 著、宇野 浩司 監訳、豊福 剛 訳
- TOPICS
- クックブック , Programming , Java
- 発行年月日
- 2002年08月
- PRINT LENGTH
- 832
- ISBN
- 4-87311-095-5
- 原書
- Java Cookbook
- FORMAT
目次
監訳者まえがき まえがき 1章 さあ始めよう―コンパイル、実行、デバッグについて レシピ1.0 はじめに レシピ1.1 Javaでのコンパイルと実行―JDKについて レシピ1.2 カラーハイライト対応のエディタを使った編集とコンパイル レシピ1.3 IDEを使ったコンパイル、実行、テスト レシピ1.4 本書に収録されたクラスを使う レシピ1.5 jrを使ってコンパイルを自動化する レシピ1.6 makeを使ってコンパイルを自動化する レシピ1.7 Antを使ってコンパイルを自動化する レシピ1.8 アプレットを実行する レシピ1.9 非推奨警告が表示されたら レシピ1.10 #ifdefがないけど、条件デバッグするには レシピ1.11 デバッグ情報の表示 レシピ1.12 デバッガを使う レシピ1.13 単体テスト―デバッガを使わずに済む方法 レシピ1.14 Javaのクラスファイルを逆コンパイルする レシピ1.15 Javaファイルを逆コンパイルされないようにする レシピ1.16 意味のわかるトレースバックを表示させるには レシピ1.17 Javaソースコードを探すには レシピ1.18 プログラム:Debug 2章 ランタイム環境を操作する レシピ2.0 はじめに レシピ2.1 環境変数を取得する レシピ2.2 システムプロパティ レシピ2.3 JDKのリリースに依存するコードを書く レシピ2.4 オペレーティングシステムに依存するコードを書く レシピ2.5 CLASSPATHを有効活用する レシピ2.6 拡張APIや他のパッケージのAPIを使う レシピ2.7 コマンドライン引数を解析する 3章 文字列を料理する レシピ3.0 はじめに レシピ3.1 substringを使って文字列を分解する レシピ3.2 StringTokenizerを使って文字列を分解する レシピ3.3 StringBufferと+を使った文字列の連結 レシピ3.4 文字列を1文字ずつ処理する レシピ3.5 文字列の行揃え レシピ3.6 Unicode文字をStringに変換する レシピ3.7 文字列を単語や文字で逆順にする レシピ3.8 タブを変換する/タブに変換する レシピ3.9 大文字と小文字の区別について レシピ3.10 テキスト文書をインデントする レシピ3.11 印刷可能でない文字を入力する レシピ3.12 文字列の最後にある空白を除く レシピ3.13 CSVデータの解析 レシピ3.14 プログラム:簡単なテキストフォーマッタ レシピ3.15 プログラム:Soundexによる氏名の比較 4章 正規表現でパターンマッチング レシピ4.0 はじめに レシピ4.1 正規表現の構文 レシピ4.2 REの実際の動作について レシピ4.3 Javaで正規表現を使う レシピ4.4 REをインタラクティブにテストする レシピ4.5 一致部分を検索する レシピ4.6 一致部分を置換する レシピ4.7 一致パターンをすべて表示する レシピ4.8 一致する行を検索する レシピ4.9 match()とsubst()での大文字と小文字の区別 レシピ4.10 REをプリコンパイルする レシピ4.11 テキスト中の改行に一致させる レシピ4.12 プログラム:データマイニング レシピ4.13 プログラム:Grepの完全バージョン 5章 数値を料理する レシピ5.0 はじめに レシピ5.1 文字列が妥当な数値かチェックする レシピ5.2 大きな型の数値を小さな型の変数に格納する レシピ5.3 浮動小数点を使わずに分数を計算する レシピ5.4 浮動小数点の精度を保証する レシピ5.5 浮動小数点を比較する レシピ5.6 浮動小数点数を丸める レシピ5.7 数値をフォーマットする レシピ5.8 2/8/10/16進数への変換 レシピ5.9 整数の数列を処理する レシピ5.10 ローマ数字で表示する レシピ5.11 複数形を意識したフォーマット処理 レシピ5.12 乱数を生成する レシピ5.13 よりまともな乱数を生成する レシピ5.14 三角関数の計算 レシピ5.15 対数の計算 レシピ5.16 行列の乗算 レシピ5.17 複素数の計算 レシピ5.18 とても大きな数を処理する レシピ5.19 プログラム:TempConverter―華氏温度と摂氏温度の換算表 レシピ5.20 プログラム:数の回文 6章 日付と時刻 レシピ6.0 はじめに レシピ6.1 今日の日付を求める レシピ6.2 指定したフォーマットで日付/時刻を表示する レシピ6.3 日付を別のエポックで表現する レシピ6.4 YMDHMSをCalendarやエポック経過秒に変換する レシピ6.5 文字列を解析してDateにする レシピ6.6 エポック経過秒をDMYHMSに変換する レシピ6.7 DateやCalendarに対して加算や減算を行なう レシピ6.8 2つのDateの差を求める レシピ6.9 2つのDateを比較する レシピ6.10 曜日/月/年あるいは週を求める レシピ6.11 カレンダー表示 レシピ6.12 高精度のタイマー レシピ6.13 処理をしばらくスリープさせる レシピ6.14 プログラム:お知らせサービス 7章 Javaで使えるデータ構造 レシピ7.0 はじめに レシピ7.1 配列を使ったデータ構造 レシピ7.2 配列の大きさを変更する レシピ7.3 配列よりも動的なデータ構造 レシピ7.4 Iteratorを使ってデータに依存しないアクセスを実現する レシピ7.5 連結リストのデータ構造 レシピ7.6 HashtableやHashMapを使った対応付け レシピ7.7 PropertiesやPreferencesに文字列を格納する レシピ7.8 コレクションをソートする レシピ7.9 Java 1.1でソートする レシピ7.10 わざわざソートせずにすます レシピ7.11 セット レシピ7.12 コレクションにあるオブジェクトを探す レシピ7.13 Collectionを配列に変換する レシピ7.14 イタレータを自前で提供する レシピ7.15 スタック レシピ7.16 多次元のデータ構造 レシピ7.17 コレクションのまとめ レシピ7.18 プログラム:実行時間の比較 8章 オブジェクト指向の技法 レシピ8.0 はじめに レシピ8.1 オブジェクトを表示する:toString()を使ったフォーマット処理 レシピ8.2 equals()メソッドをオーバーライドする レシピ8.3 hashCode()メソッドをオーバーライドする レシピ8.4 clone()メソッドをオーバーライドする レシピ8.5 finalize()メソッド レシピ8.6 インナークラスを使う レシピ8.7 インタフェースを介してコールバックを提供する レシピ8.8 多形性/抽象メソッド レシピ8.9 値渡し レシピ8.10 自前の例外を活用する レシピ8.11 プログラム:Plotter 9章 入出力 レシピ9.0 はじめに レシピ9.1 標準入力から読み取る レシピ9.2 標準出力に書き出す レシピ9.3 ファイルを名前で開く レシピ9.4 ファイルをコピーする レシピ9.5 ファイルを文字列に読み込む レシピ9.6 標準ストリームの割り当てを変更する レシピ9.7 ストリームを複製して書き出す レシピ9.8 さまざまな文字セットで読み書きする レシピ9.9 厄介な改行文字 レシピ9.10 プラットフォーム依存ファイルのコードに注意 レシピ9.11 継続行を読む レシピ9.12 ファイルを走査する レシピ9.13 バイナリ形式データ レシピ9.14 ファイルでの位置を移動する レシピ9.15 Cで作成されたデータをデータストリームに書き出す レシピ9.16 シリアライズされたオブジェクトの保存と復元 レシピ9.17 SerialVersionIDを使ってClassCastExceptionsを予防する レシピ9.18 JARやZipアーカイブを読み書きする レシピ9.19 圧縮ファイルを読み書きする レシピ9.20 プログラム:テキストをPostScriptに変換する レシピ9.21 プログラム:TarList(ファイル変換) 10章 ディレクトリとファイルの操作 レシピ10.0 はじめに レシピ10.1 ファイルの情報を取得する レシピ10.2 ファイルを作成する レシピ10.3 ファイル名を変更する レシピ10.4 ファイルを削除する レシピ10.5 一時ファイルを作成する レシピ10.6 ファイルの属性を変更する レシピ10.7 ディレクトリを一覧表示する レシピ10.8 ルートディレクトリを取得する レシピ10.9 ディレクトリを新規作成する レシピ10.10 プログラム:Find 11章 シリアルポートとパラレルポート レシピ11.0 はじめに レシピ11.1 ポートを選択する レシピ11.2 シリアルポートを開く レシピ11.3 パラレルポートを開く レシピ11.4 ポートの衝突を解決する レシピ11.5 ロックステップ方式でポートを読み書きする レシピ11.6 イベント駆動方式でポートを読み書きする レシピ11.7 スレッド方式でポートを読み書きする レシピ11.8 プログラム:Penmanプロッタ 12章 グラフィックスとサウンド レシピ12.0 はじめに レシピ12.1 Graphicsオブジェクトを使って描画する レシピ12.2 グラフィックスコンポーネントをテストする レシピ12.3 テキストを描画する レシピ12.4 コンポーネントの中央にテキストを描画する レシピ12.5 ドロップシャドウを描画する レシピ12.6 画像を描画する レシピ12.7 サウンドファイルを再生する レシピ12.8 ビデオ動画を表示する レシピ12.9 Graphics2Dを使ってテキストを描画する レシピ12.10 JDK1.1での印刷処理 レシピ12.11 Java2での印刷処理 レシピ12.12 プログラム:PlotterAWT レシピ12.13 プログラム:Grapher 13章 GUI レシピ13.0 はじめに レシピ13.1 GUIコンポーネントを表示する レシピ13.2 ウィンドウのレイアウトをデザインする レシピ13.3 タブ区画で表示する レシピ13.4 アクションの処理:ボタンで何かを実行させる レシピ13.5 無名のインナークラスを使ってアクションを処理する レシピ13.6 「ウィンドウを閉じる」でプログラムを終了させる レシピ13.7 ダイアログでユーザの応答を求める レシピ13.8 プログラムの出力をウィンドウに表示する レシピ13.9 JFileChooserを使ってファイルを選択する レシピ13.10 色を選択する レシピ13.11 メインウィンドウをスクリーンの中央に配置する レシピ13.12 Swingプログラムのルック&フィールを変更する レシピ13.13 プログラム:独自のフォント選択ダイアログ レシピ13.14 プログラム:独自のレイアウトマネージャ 14章 国際化と地域化 レシピ14.0 はじめに レシピ14.1 I18Nのリソースを使ってボタンを作成する レシピ14.2 利用可能なロケールを一覧する レシピ14.3 国際化リソースを使ってメニューを作成する レシピ14.4 国際化のためのルーチンを作成する レシピ14.5 国際化リソースを使ってダイアログを作成する レシピ14.6 リソースバンドルを作成する レシピ14.7 JILTを使ってコードを国際化する レシピ14.8 特別なロケールを使う レシピ14.9 デフォルトロケールを設定する レシピ14.10 メッセージをフォーマット処理する レシピ14.11 プログラム:MenuIntl レシピ14.12 プログラム:BusCard 15章 ネットワーククライアント レシピ15.0 はじめに レシピ15.1 サーバに接続する レシピ15.2 ネットワークアドレスを調べて報告する レシピ15.3 ネットワークエラーを処理する レシピ15.4 テキストデータの読み書きを行なう レシピ15.5 バイナリデータの読み書きを行なう レシピ15.6 シリアライズされたデータの読み書きを行なう レシピ15.7 UDPデータグラム レシピ15.8 プログラム:TFTPクライアント レシピ15.9 プログラム:Telnetクライアント レシピ15.10 プログラム:チャットのクライアント 16章 サーバサイドJava:ソケット レシピ16.0 はじめに レシピ16.1 サーバを立ち上げる レシピ16.2 応答を(文字列やバイナリで)返す レシピ16.3 オブジェクトの情報を返す レシピ16.4 複数のクライアントを処理する レシピ16.5 ネットワークのログを作成する レシピ16.6 プログラム:Javaチャットサーバ 17章 ネットワーククライアント その2:アプレットとウェブクライアント レシピ17.0 はじめに レシピ17.1 ウェブページにJavaを組み込む レシピ17.2 アプレットの作り方 レシピ17.3 アプレットのホストにあるサーバに接続する レシピ17.4 アプレットを使ってドキュメントを表示させる レシピ17.5 アプレットを使ってCGIスクリプトを実行させる レシピ17.6 URLの内容を読む レシピ17.7 URLからHTMLを抽出する レシピ17.8 ファイルからURLを抽出する レシピ17.9 ファイル名をURLに変換する レシピ17.10 プログラム:MkIndex レシピ17.11 プログラム:LinkChecker 18章 ウェブサーバJava:サーブレットとJSP レシピ18.0 はじめに レシピ18.1 サーブレット:HTMLページを生成する レシピ18.2 サーブレット:フォームのパラメータを処理する レシピ18.3 クッキー レシピ18.4 セッションのトラッキング レシピ18.5 サーブレットからPDFを生成する レシピ18.6 HTMLとJavaを混在させる:JSP レシピ18.7 取り込み(include)と転送(forward) レシピ18.8 JavaServer Pagesからサーブレットを使う レシピ18.9 JavaBeanを使ってJSPを簡潔にする レシピ18.10 JSPの基本構文 レシピ18.11 プログラム:CookieCutter レシピ18.12 プログラム:JavaDotウェブニュースポータル 19章 Javaと電子メール レシピ19.0 はじめに レシピ19.1 メールを送信する:ブラウザ対応バージョン レシピ19.2 メールを送信する:実用バージョン レシピ19.3 メール送信機能をもつサーバプログラム レシピ19.4 MIMEメールを送信する レシピ19.5 メールの設定を行なう レシピ19.6 JavaMailを使わずにメールを送信する レシピ19.7 メールを読む レシピ19.8 プログラム:MailReaderBean レシピ19.9 プログラム:MailClient 20章 データベースにアクセスする レシピ20.0 はじめに レシピ20.1 テキストファイルでデータベース レシピ20.2 DBMデータベース レシピ20.3 JDBCの設定と接続 レシピ20.4 JDBCデータベースに接続する レシピ20.5 JDBCでクエリーを送信し、結果を取得する レシピ20.6 JDBCでパラメータ付きSQL文を使う レシピ20.7 JDBCでストアードプロシジャを使う レシピ20.8 ResultSetを使ってデータを変更する レシピ20.9 SQLを使ってデータを変更する レシピ20.10 JDBCメタデータを取得する レシピ20.11 プログラム:JDAdmin 21章 XML レシピ21.0 はじめに レシピ21.1 XSLTを使ってXMLを変換する レシピ21.2 SAXを使ってXMLを構文解析する レシピ21.3 DOMを使ってXMLを構文解析する レシピ21.4 DTDを使って構造を検証する レシピ21.5 DOMを使ってXMLを生成する レシピ21.6 プログラム:xml2mif 22章 分散コンピューティング:RMI レシピ22.0 はじめに レシピ22.1 RMIによる通信規約を定義する レシピ22.2 RMIクライアント レシピ22.3 RMIサーバ レシピ22.4 ネットワークでRMIを使用する レシピ22.5 プログラム:RMIコールバック レシピ22.6 プログラム:RMIWatch 23章 パッケージとJAR レシピ23.0 はじめに レシピ23.1 パッケージを作成する レシピ23.2 Javadocを使ってクラスのドキュメントを作成する レシピ23.3 jarコマンドでアーカイブを作成する レシピ23.4 JARからアプレットを実行する レシピ23.5 JDKを使ってアプレットを実行する レシピ23.6 JARからプログラムを実行する レシピ23.7 クラスをJavaBeanにする レシピ23.8 ビーンをJARに瓶詰めする レシピ23.9 サーブレットをWARファイルにパッケージする レシピ23.10 Write Once, Install Anywhere レシピ23.11 Java Web Start レシピ23.12 JARファイルに署名する 24章 スレッド レシピ24.0 はじめに レシピ24.1 コードを別スレッドで実行する レシピ24.2 アニメーション動画を表示する レシピ24.3 スレッドを停止する レシピ24.4 待ち合わせとタイムアウト レシピ24.5 スレッド通信:コードを同期させる レシピ24.6 スレッド通信:wait()とnotifyAll() レシピ24.7 エディタでの自動保存 レシピ24.8 マルチスレッドのネットワークサーバ 25章 イントロスペクションとClassという名前のクラス レシピ25.0 はじめに レシピ25.1 クラス記述子を取得する レシピ25.2 メソッドとフィールドを探して使用する レシピ25.3 クラスを動的にロードし、インスタンスを作成する レシピ25.4 ゼロからクラスを生成する レシピ25.5 性能を測定する レシピ25.6 クラスの情報を表示する レシピ25.7 プログラム:CrossRef レシピ25.8 プログラム:AppletViewer 26章 他言語と一緒にJavaを使う レシピ26.0 はじめに レシピ26.1 外部プログラムを実行する レシピ26.2 プログラムを実行し、その出力を記録する レシピ26.3 BSFを使ってJavaとスクリプトを混在させる レシピ26.4 ネイティブコード(C/C++)をブレンドする レシピ26.5 ネイティブコードからJavaを呼び出す レシピ26.6 プログラム:DBM あとがき 索引 コラム目次 make対ant エスケープを二重化するのを忘れてはいけません サブクラス、抽象クラス、インタフェースのどれを使う? ソフトウェアを国際化する3つのステップ UDPクライアントを作成するための6つのステップ サーブレットをデバッグするには HttpSessionを使ってサーブレットをデバッグするには SMTPを使ってメールを送信するための基本手順 Storeを使ってメールを読む方法 JDBCクエリーを使う手順 RMIを使うための手順 RMIサーバを作成するための手順 Java Web Startを使うには Javaでネイティブコードを呼び出す手順