読書会(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也。
[ 戻る ]