BT

JRuby総まとめ:Java IntegrationとJSR-45によるデバッグの向上

| 作者: Werner Schuster フォローする 6 人のフォロワー , 翻訳者 金森 諭 フォローする 0 人のフォロワー 投稿日 2008年8月22日. 推定読書時間: 2 分 |
JRuby の次のメンテナンスリリースが今月後半に予定されている。今回の変更にはRubyコードからJavaライブラリをどのように使うかを定義しているJava Integrationの見直しがある。Java Integrationは型強制やオーバーロードなどの基本的なことだけでなく、RubyとJavaのやり取りの効率にも関係する。たとえばRubyのブロックをJavaのメソッドに渡すこともしようと思えば可能だ。

Charles Nutter氏は最近JRubyのJava Integrationに加えられた改良点をいくつかあげる(リンク)

0. 明らかなパフォーマンス向上

1. インターフェースを指定したメソッドの最後の引数にクロージャを渡すことができる。クロージャはそのインターフェースの型に変換されることになる。 thread = java.lang.Thread.new { puts 'here' }

2. 全てのメソッドで(アンダースコアを使った)Ruby式のメソッド名によってインターフェースの実装ができる。
class Foo
 include java.awt.event.ActionListener
 def action_performed(event)
 ...
 end
end

3. attr*.[..]を使ってインターフェースのプロパティ的なメソッド(getter/setterやis)を実装できる。

4. インターフェースの真偽値を返すメソッドはメソッド名に?を付けたメソッドで実装できる。

別の改良点としてはデバッグを向上させるJSR-45の採用がある。JSR-45(リンク)ではクラスファイルをソースファイルやソースコードと照らしあわせることができるようになる。JSR-45は一連のクラス属性(SourceDebugExtensionと呼ばれる)を定義していて、その属性にJSRで定義されたSMAP形式のメタデータを入れてクラスファイルがどのソースファイルからできたかを定義する。コンパイラのコードを見ると生成されたクラスファイルに行番号の情報を埋める機能がすでにできている。クラスファイルの生成に使うASMでは、visitLineNumberメソッド(リンク)から行番号をセットすることができる。

SMAPファイルを付加することで、jdbのような定番のJavaデバッガでもバイトコードにコンパイルされたRubyコードに対してステップ実行ができるようになる(jdbを使ってRubyファイルをステップ実行する方法がPastieにのっている(リンク))。

この新機能はJRubyで早くデバッグするためのワンステップとなる。しかし注意しておく必要があるのは、この方法はバイトコードにコンパイルされたコードに対してだけ使えるということだ。インタプリトされただけのコードではトレースやフックベースのデバッガを使わないといけない。アプリケーションコードをバイトコードにできるかを決める要素はいくつかある。たとえばバイトコードだとPermanent Generationメモリ領域を超える場合JVM自体がクラッシュして落ちてしまう。このためJRubyのJITはコンパイルされたメソッドの数を制限している(参考記事・英語)(この制限数は設定により変更可能)。

原文はこちらです:http://www.infoq.com/news/2008/08/jruby-java-integration-jsr45-dbg

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT