JRuby開発の苦悩、改善の道は一日にしてならず

    後藤大地  [2008/08/18]

    JRuby

    JRubyの主要開発者であるCharles Nutter氏が'Twas Brilligにおいて、ここしばらくの間続けられたきたJRuby開発についてまとめている。同氏のブログとしては文書量が多く、JRuby開発の苦悩のようすが伝わってきて興味深い。結論からいえば、苦労の末に次にリリースされるJRuby 1.1.4はもっとパフォーマンスが優れたものになり、バグも減り、機能も増えるということだ。ただし、それは簡単な道のりではなかったようだ。

    執筆現在でJRubyの最新版は7月19日(米国時間)に公開されたJRuby 1.1.3。実行速度も改善され十分安定してきたことから、1.1系のリリースはメンテナンス対応を除いて1.1.3で最終にしたい意向を持っていたという。というのも、RubyとJavaの両方のコードで複雑化してしまったJava Integration (JI)サブシステムをなんとかしたいという理由から、現状のコードベースは1.1.3で終了し、新しく書き直したJIをベースとして新しいバージョンをリリースしたいという思惑があったからだ。

    実験的にJIの入れ替えとなるコードも開発され良好な性能も確認されてはいるものの、現在のJIと比べると圧倒的に評価期間が短いという欠点がある。JIの機能をすべてチェックするテストツールが存在していないため、結局のところ新しく開発したJIを導入することもまた苦痛をともなく結果になってしまう。結局Charles Nutter氏は新しくJIを開発することを断念し、地道に従来のJIのリファクタリングを続けることを選択したという。

    リファクタリングの進展状況は全体の25%ほどしか進んでいないとされているが、それでもいくつかの性能でかなり優れた性能改善が実現されている。またリファクタリングが進んでコードがシンプルになった結果として、これまでサポートが見送られてきた新しい機能の実現やバグの修正が簡単に実施できるようになったという副次効果も生まれている。

    JIを経由した場合のバイトリストアペンドとRubyコードで動作するバイトリストアペンドの性能比較 - 'Twas Brilligより抜粋

    オーバーロードされたInteger.valueOfを使った性能比較 - 'Twas Brilligより抜粋

    Ruby配列をJava配列に変換する処理を使った性能比較 - 'Twas Brilligより抜粋

    リファクタリングの作業はCharles Nutter氏によって進められている。残りの75%の作業の多くはJIのリファクタリングにあてられるようだ。最終的にJIのコアロジックをJava実装に置き換え、実装の大幅なシンプル化と狙っていくとしている。結局次のリリースは2008年8月中のリリースが予定されているJRuby 1.1.4となる。リファクタリング作業はしばらく継続することになりそうだから、このままいけば1.1.5などのリリースも実施されることになりそうだ。

    JRubyをベースとしたWebアプリケーションの開発や運用を進めているものもあり、こうしたJRubyの積極的な開発は注目すべきところだ。さらなるパフォーマンスの向上、互換性の向上、バグの修正など開発すべき内容は多いが、今後も注目されるプロダクトだ。

    関連記事

    JRuby 1.1系最新版登場 - 82問題修正、インタプリンタ性能大幅向上 [2008/7/24]
    起動大幅改善JRuby 1.1.2、YAMLシンボル処理は100倍以上 [2008/5/29]
    JRuby 1.1登場、このパフォーマンス注目 [2008/4/8]
    JRuby、Google SoC 2008で開発加速か [2008/2/29]
    JRuby 1.1 RC版登場 - 鬼車取り込みと143の問題修正 [2008/1/9]
    JRuby、鬼車を取り込む [2007/11/30]
    Ruby製JRubyコンパイラ誕生へ - 前段階のJVMバイトコードビルダは完成 [2007/11/21]
    開発版JRuby 1.1、Rubyと同程度の性能をRailsで達成か [2007/10/30]
    JRuby 1.1は試金石 - より完璧なプロダクトを目指して、バグ報告受付中 [2007/10/24]
    JRuby、Ruby 1.8に完全に対応したRuby-Javaコンパイラを開発 [2007/10/1]
    JRuby 1.0.1登場 - 30の互換性問題を修正、1.0ユーザはアップグレードを [2007/8/28]
    JRuby 1.1のロードマップ公開 - Javaバイトコードへのコンパイラなどを提供 [2007/8/24]
    JRuby、Java 5への移行を決定 - 1.x系はJava 1.4.2を引き続きサポート [2007/8/10]
    JRubyでも議論、Java 1.4.2からJava 5への移行問題 [2007/7/30]
    JRuby 1.0、待望のリリース! - Rubyとの互換性が目標レベルを達成 [2007/6/11]
    "JRuby 0.9.8"登場 - 聞こえてくる1.0の足音 [2007/3/7]
    JRuby 0.9.2登場 - opensslエクステンションを追加、Railsサポートも改善 [2006/12/12]
    JRuby 0.9.1登場 - 6割スピードアップしRailsサポートも改善 [2006/10/21]
    話題のJRubyを動かしてみよう 導入編 - JRubyのコツをつかむ [2006/9/11]
    話題のJRubyを動かしてみよう TIPS編 - 書いてみよう自分のコード [2006/9/12]
    SunもRubyに注力 - JRubyコアデベロッパ2名をフルタイム雇用 [2006/9/11]
    "JRuby" 0.9.0正式リリース - 次期バージョンではどうなる? [2006/7/6]
    RailsやWebBrickも動作、Ruby-Javaの相互接続"JRuby" 0.9.0RC1 [2006/7/5]

    関連サイト

    関連したタグ

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン