読書会(Java仮想マシン仕様)第4回議事録

[ 戻る ]


「Java仮想マシン仕様」を読む会 第4回議事録

日時:2000年1月15日(土)10−16時
場所:Javaカンファレンス事務局会議室(曙橋)
出席者(敬称略):金山・小川・鷲見・前橋・高橋(記)
概要:4.9節から5.2節まで
当日の様子については速報をご覧下さい。
http://web.archive.org/web/20010604222720/http://www.java-conf.gr.jp/archives/jfriends-ml/msg00895.html

論点
・p.95 三段落目「〜自身を検証する必要がある。」
 の自身とは何か?
 原著では、"for itself"(独力で)となっている。
 →「コンパイラの力を借りたりせず、VMだけでやりなさい」ということ
 ではないか? という意見でまとまった。
・p.96 パス2において
 final節とあるが原著ではfinal classとある。
 →ここはfinalクラスと訳すべき。
・p.96 パス3 データフロー解析とは?
 ※メモが不十分で意味がとれませんが、とりあえず記しておく
 JavaVMではスタックのチェック(ループでスタック状態が変わっていないか)
 インストラクションでは、分岐はジャンプ文だけである
 インタプリタなのに速いのはこのあたり
・p.99 クラスローダの話題から、話し(雑談)が転がる
 ORBってなぜ必要? モバイルエージェントって? ObjectSpace社のVoyagerは?
 オムロンと共同で組み込み向けの小さなORBを開発している。Jiniは?
・p.100 newについて
 例の#1という表現は分かりにくい。実際にはクラスシグネチャがはいる。
 newはヒープに領域を取るだけ(未初期化)
 が終わって、はじめて初期化
・4.9.5節
 例外ハンドラで、2つcatchがあったなら、start_pc, end_pcも2つになるのか?
 それではcatchの数だけ必要となり、無駄が多いのでは?
 テーブル定義をみるとそうなるはず。
 javapで実際にやってみようということになり、簡単なプログラムを書いてみた
     :
  try {
    FileInputStream fis = new FileInputStream(...);
  } catch (IOException e) {
     :
  } catch (Exception e) {
     :
  }

 と書いて、javap -c をかけると、Exception tableが見れる
 from to target
  0    10   13   
  0    10   21   
・4.9.6節
 サブルーチンコールはfinallyのためだけにあるようなものだ
 メソッドコールでも内部メソッドのようにコンパイル時に決まるようなものは
 サブルーチンコールにした方が性能がよくなるでは。(この後、できる/でき
 ないという話が続く)
・5章(宮崎さん訳の2版にそって進めていった)
  184行目(注:資料の行数)
 == の比較 クラス内だけでなくパッケージをまたがって満たすはず
 ==で比較できるのは混乱のもと
・5.2節
 スタートアップ:組み込みのときの起動についてはけっこう問題になっている
 (確かROMからの起動とか、ファイルシステムがないときの起動とかについて
  話しが出てたト思いますが、メモには書いてませんでした)

----------------------------------------------------------------------
最後に「Javaバーチャルマシン」(オライリー)を持っていた人が
著訳者の鷲見さんからサインをしてもらい、本日の読み会を終了しました。

終了後は前回と同じく牛タン屋にいって乾杯しました。


[ 戻る ]