読書会(More Java Pitfalls)第2回議事録

[ 戻る ]


"More Java Pitfalls"を読む会 第2回議事録

開催日時:2003年6月28日 10:00 〜 17:00
開催場所:東山社会教育館 第3研修室
参加者(敬称略):宮本、高橋(徹)、高橋(智)、根本、宮本、金井、村山

自己紹介:省略
書記:高橋(智)
読み手:各自が予習を担当したItemNoの日本語訳を紹介

■はじめに
  今回は参加者がたった6人と、とても寂しい状況になりました。英語ということで
  敷居が高いからでしょうか? 最近Java読書会の宣伝を行っていないので、適当な
  メーリングリストなどで宣伝したほうが良いと思います。


■Item5: Avoiding Granularity Pitfalls in java.util.logging (P48以降)

  ◆Logging API はJDK1.4から搭載されている

  ◆JREのlibに置くPreference Fileは具体的には?
    --> logging.properties

  ◆SWING,CORBA用のプロパティファイルがある
    -->その他にも色々なプロパティファイルがあるが探しづらい
       -->Javadocのhtmlファイルを'.properties'というkeywordでgrepするとか?
          -->JDK1.4でgrepしたらこれだけ有りました
               flavormap.properties
               accessibility.properties
               awt.properties
               content-types.properties
               logging.properties
               jndiprovider.properties
               jndi.properties
               swing.properties
               jaxp.properties
               orb.properties

  ◆setUseParentHandlers(boolean)メソッドの意味が分かりづらい
    -->「親ハンドラー」「親ロガー」は、Java言語の「派生」「継承」とは違う

  ◆Logger.getLogger(String)の呼び出しでは、同じ文字列を渡すと同じLoggerが
    返ってくるはず
    -->実際のところはどうなんでしょうか?

  ◆「Log4J」と「Logging API」の違いは?
    -->IBMのdeveloperWorksに解説記事があったはず!!
    -->「Log4J」のほうが「Logging API」よりもわかり易い? 高機能?

  ◆Logging API はマルチスレッドに対応しているのか?
    -->たしかLog4Jには、スレッドに関連した機能があったはず!!

  ◆ログがXML形式で出力されるのは分かり易いと言えるのか?
    -->XML形式のログのビューワが製品で有るらしい!!
       -->情報求む!!
    -->FileHandlerを作成・利用すると、デフォルトではXML形式で出力される
       -->デフォルトのプロパティファイルで設定されているのでは?
          -->formatterでXMLFormatterが指定されている
          -->自分でformatterが指定できる

  ◆JavaOne2003 in SF のセッションで
      「Java Technology Logging: The Past, the Present,  and the Future」
    というものがあった
    -->「未来」とはどのようなものか?
       -->JavaOne2003のセッションのスライドを参照すること!!
          -->SunのWebサイトで年会費$99で、映像・音声のストリーミングサービス
             が開始されている


■Item6: When Implementations of Standard APIs Collide

  ◆List6.1の59行目のみがXMLを実装したAPIの違いを示している
    -->選択したAPIによってはエラーが出力される
       -->エラーの内容はList6.4に書かれている(JDK1.4の時)
       -->そもそもなぜエラーが出力されてしまうのか?
          -->APIに関する「しきたり」があるらしい。「しきたり」に従わない場合
             には、cloneNodeメソッドを呼ぶと例外が送出される
       -->List6.4に表示されている例外の行番号が、実際のソースコードと一致して
          いないのではないか?
          -->筆者がソースを書き換えた時の影響か?

  ◆最近リリースされたJDK1.4.2ではXMLのAPIに互換性が無くなっているらしい!!
    -->何かのJ2EEサーバーを起動した時にNamespace関連のエラーが表示されたらしい
       -->情報求む!!

  ◆endorsedディレクトリの指定方法にはシステムプロパティもある
    -->-Djava.endorsed.dirs=....
       -->dirsということは複数のディレクトリを指定できるのでは?
    -->システムプロパティが無い場合には JRE/lib/endorsed が使用される

  ◆JVMで複数のXML APIを実行時に切り替えられるのだろうか?
    -->DocumentBuilderFactoryクラスを利用できるのではないか?
       -->システムプロパティを実行時に書き換えてみるとどうか?
          -->実験してみる!!(宿題)
    -->同じ種類のXML APIだが、そのVersionが違う場合はどうか?
       -->そもそも、この場合がItem6の話である(笑)


■Item7: My Assertions Are Not Gratuitous!

  ◆前著「Java Pitfalls」のItem50の日本語訳を読んで
    -->「表明」ではなく「アサート」とカタカナで訳されている
    -->アルゴリズムの「速いバージョン」と「遅いバージョン」とをassertで比較する
       ことはよくあることなのか?
       -->処理の正しさを確認するために「NASAのスペースシャトル」で採用されてい
          るらしい
    -->private String stackEntry()メソッドの「4行スキップ」の意味は?
       -->不要な行を無視するため
       -->JVMの実装によっては違うかもしれない

  ◆そもそもタイトルの「My Assertions Are Not Gratuitos!」の正しい日本語訳は?
    -->「asesrtionは不必要ではない」か?

  ◆「Invariants」の日本語訳は?
    -->「不変式」か?

  ◆「This action」の訳は? 何を意味しているのか?
    -->「選手リストが初期化され利用可能であるという不変式自身」のことか?

  ◆System.out.println()文は、なぜ苦痛なのか?
    -->そもそもassertion自体もコメントが無ければ苦痛ではないか?
       -->前著「Java Pitfalls」のItem50でも「コメントは重要だ」と言っている

  ◆「formal code proof」の日本語訳は?
    -->「数学的に証明された手順」か?

  ◆「without a net」の日本語訳は?
    -->「一人で」ということか?

  ◆assert文を付けてコンパイルしても、assertを無効にして実行すれば、ほとんど
    変わらないくらい効率的なはず!!
    -->実際にはほんの少し遅くなるはず!!
       -->確認してみる!!(宿題)

  ◆例外で「Unknown Source」と出力されるのはどんな時?
    -->Hotspotが最適化した時?

  ◆「good practice」の日本語訳は?
    -->難しい!!(笑)

  ◆コマンドラインオプション -esa の「システム」の意味は?
    -->確認する(宿題)

  ◆「safety-sensitive なクラス」の日本語訳は?
    -->「安全性に配慮したクラス」のこと?
    -->どんな時に使うのか?

  ◆「ヘルパーメソッド」は「ヘルパークラス」のことではない

  ◆AssertionError は Exception で catch するのは良いが、Throwable で catch
    すると、AssertionError が 隠されてしまう!!

  ◆ところで
        try {
          ...
        }
        catch(Object o) {
          ...
        }
    という記述は可能か?
    -->確認する(宿題)


■Item8: The Wrong Way to Search a DOM

  ◆「not considered ignorable な white space」とは具体的にはどのようなものか?


■Item9: The Saving-a-DOM Dilemma

  ◆DOMなどのinterfaceは、CORBAのIDLで定義されている


■Item10: Mouse Button Portability

  ◆「LCD」の正式名称は?

  ◆MouseWheelListener はJDK1.3からか? JDK1.4からか?
    -->存在自体を初めて知った

  ◆getContentPane().add("Center", l) という使い方は良くない
    -->"Center"ではなく、定数を使おう!!

  ◆Item10で解説している「ホイール」は、ホイールをクリックしたのか? それとも
    ホイールを回したのか?

  ◆Mac OS X で、「ホイールマウス」ではどのような実行結果になるのか
    -->試してみる(宿題)

  ◆GUIを設計する時は、Mac OS X の Aqua を基準に設計すると良い
    -->Aqua の UIコンポーネントが一番サイズがデカイから
       -->「Mac OS X for Java Geeks」でもそのように解説されている


■さいごに
  打ち上げでは、駅前にある「牛角」で焼肉を食べました。お一人様 \2,400也。


[ 戻る ]