第 285 回 PTT のお知らせ


日時: 2002年12月12日 (木) 18:30 から
場所: 東京農工大学工学部情報コミュニケーション工学科 7号棟 3階 3K室
      JR中央線東小金井駅南口から,西へ向かって徒歩8分程度です.
      農工大の東門に建物の配置図があります.WWWを見られる方は,
      
      http://www.cs.tuat.ac.jp/access.html
      
      に案内図があります.

話者: 笹田 耕一(東京農工大学工学部 並木研)
題名: Rava〜Rubyで書いたJavaVMの話〜
概要:
プログラミング言語 Java は JavaVM によりプラットホーム独立な実行環境を 提供しており、現在までに Sun や IBM などの企業、またオープンソースによ り JavaVM が多く開発されている。大半の JavaVM は性能を重視するために言 語C などのコンパイラ型言語で記述されている。また、Java でインタプリタ型 の言語、例えば Scheme の処理系などを Java で記述するような試みもなされ ている。しかし、先述の性能面での理由から JavaVM を他のインタプリタ型言 語で記述する試みは少ない。

本報告では、スクリプト言語 Ruby による JavaVM である Rava について紹介 する。スクリプト言語 Ruby は国産オブジェクト指向スクリプト言語で、記述 性や生産性について定評のある言語である。これらの特徴をもつ Ruby を用い て JavaVM を作成することで、容易に JavaVM を開発できるのではないかと考 えた。現在 Rava は Java クラスファイルのロード、バイトコードの解釈実行、 Ruby によるネイティブメソッドの記述・実行、例外処理機構、スレッドの管理 機能および実験的なJITコンパイル機能を有している。具体的には次の項目につ いて述べる予定である。


食事: ありません.東小金井駅近辺のモスバーガー,途中のピーコック (マクドナルドあり)などをご利用ください.
忘年会のお知らせ:
なお、発表の後、PTTの忘年会を行います。 東小金井駅周辺でお店(東小金井駅北口「もて茄子や」)を予約しますので、 出席される方は、お手数ですが、下記までご連絡を 12/3(火)までにいただけますでしょうか。 学生¥3000、社会人¥6000程度を予定しています。

出席の連絡先 伊知地 ichiji@acm.org および並木 namiki@cc.tuat.ac.jp までご一報ください。代表者が一括してお申し込みの場合には,忘年会出 席者全員の氏名をご連絡下さい。


第285回 PTTメモ


日時: 2002年12月12日(木) 18:30 から
場所: 東京農工大学工学部情報コミュニケーション工学科 7号棟 3階 3K室
出席者: 並木美太郎,品野勇治,駿藤浩之(農工大), 伊知地宏(ラムダ数教研),佐口泰之(富士ゼロックス), 多田好克,鈴木信吾(電通大),長慎也(早大), 丸山一貴,疋田敏朗,副田俊介,松崎公紀,田中哲朗(東大)
題目: Rava〜Rubyで書いたJavaVMの話〜
話者: 笹田 耕一(東京農工大学工学部 並木研)
概 要:
 Ruby による JavaVM の実装である Rava を紹介した。

 発表ではデモとその実装方式、そして評価を示し、処理速度が非常に遅い ことを確認した。

 そして、処理速度の向上のために実験的にJIT コンパイラを作成し、単純な インタプリタとしての実装よりも処理速度が大幅に短縮されたことを示した。

 また、Ruby を用いたことによる生産性の向上が顕著に表れたのを示した。

質疑応答:

Q.「ぶぶ」という Java による scheme の実装はあったよね?
A.はい。サーベイ不足でした。

Q.メソッドテーブルを名前とのハッシュテーブルで保持すると遅くならないか?
A.遅くなりますが実装が楽なのでこうしました。

Q.サブルーチンスレッディングによる解釈実行はメソッド実行のコストがかか
ってしまうのでは?
A.かかります。それは JIT コンパイラによって解決します。

Q.case/when が遅い、とのことですが、case/when を分割しておいたら速くな
るのでは?
A.思いつきませんでした。実際に評価してみないとわかりません。

Q.ラベル付き break などで goto 文は使うだろうから、そのまま Ruby のソー
スへ変換するのは難しいのでは?
A.Ruby の構文(try/catch)で対応できそうなので、多分大丈夫じゃないかと思
います。
(注記:Ruby にはラベル付き脱出用 break はありませんでした。訂正します)

Q.スレッドに関して2日かかっているが、何か問題があったのか。
A.java.lang.Thread におけるスレッド処理自体の理解とそれに順ずる処理、お
よび関連するバイトコードのバグフィックスに時間がかかりました。

Q.JavaVM 以上の機能はつけられないか?(ロードしたクラスファイルが古いも
のに変わっていたらリロードするなど)
A.つけられると思います。クラスファイルの日付のチェックをどのタイミング
に行うか、などが少し悩ましいのですが、例えば Java プログラマが明示的に
クラスローダにロードさせるような機構は可能だと思います。

Q.デバッグなどに便利な機能はつけられないか?
A.つけられると思います。工夫のしどころだと思いますが。

Q.例えばスレッド切り替えタイミングを全部ユーザが指定するようにできると
か。
A.スレッド管理をラウンドロビンに変えるとか、Ruby のスレッド切り替えを停
止するようなものを利用するなどして実現可能だと思います。

Q.VM の実行状態を可視化できるのでは?(有用かはわからないが)
A.可能だと思います。Rubyにも手軽に扱うことが出来る GUI 環境が揃ってきて
いるのでこれも意外と手軽に出来るんじゃないでしょうか。用途としては、ス
タックマシンが動くところを見ることが出来る、という教育用でしょうか。

Q.全国大会に、どんなテーマで出すの?
A.検討中です。Ruby で書いたことによる生産性が主になるような気がします。

Q.もっとrubyらしい作り方は無いの?
A.あるのかもしれません。模索します。JIT コンパイル時の手続きの持ち方に
少し工夫してあります。

Q.厳密なJavaVMを作ろうとしたら、結局 Ruby で書いても他の言語で書いても
行数とかかわらないのでは?
A.そうかもしれません。ただ、やはり(性能と引き換えの)高機能さがあるの
で、Ruby での書き易さはあると思います。

Q.未実装バイトコードとは?
A.テストで動かした Javaプログラムで利用されていないバイトコードです。未
実装バイトコードが現れたら実装する、というスタンスだったので。

Q.あなたの出自は?
A.(会場で答えましたが忘れました)