TOPシステム開発> JRubyが注目される理由
JRuby
JRubyを知る!

第1回:JRubyとは?

著者:アスタリクス  大西 正太   2007/9/3
前のページ  1  2  3  次のページ
JRubyが注目される理由

   では前述したようなJavaを取り巻く動向とJRubyはどのように結びつくのでしょうか。まずJRubyとはどのようなものなのかを説明していきましょう。

JRubyとは

   JRubyはその名から想像できる通り「JavaVM上でRuby言語のプログラムを動作させるソフトウェア」です。いわば「プラットフォームとしてのJava」に組み入れられるRubyであると表現できます。

   JRubyはCharles Nutter氏、Thomas Enebo氏などが中心となってオープンソースで開発が続けられています。2007年6月にリリースされたJRuby 1.0はRuby 1.8.5に高い適合性を持っており、多くのRubyで書かれたプログラムを実行することが可能です。


JRubyに期待されていること

   アプリケーション開発をするという観点において、JRubyの利用は下記のようなメリットを期待されています。

  • ミドルウェアに枯れた技術であるJavaを使うことでパフォーマンス・安定性を獲得する
  • アプリケーションをRuby/Rails上に作ることで生産性の確保ができる
  • 豊富なJavaライブラリをRailsから利用することができる

表1:JRubyを利用するメリット

   つまりJRubyを用いることで、Ruby陣営の課題であるパフォーマンスや安定性の問題と、Java陣営の課題であるEoDの両方を満たせる可能性があるわけです。これがJRubyが注目されている理由であると考えられます。


Javaオフィシャル化するJRuby

   JRubyの簡単な歴史を表2にまとめまてみました。

年月 出来事
2001年 JRuby初公開
2006年10月 コミッタのCharles Nutter氏、Thomas Enebo氏がSun MicrosystemsにJRuby開発者としてフルタイムで雇用
2007年6月 JRuby1.0の公開

表2:JRubyの歴史

   実はJRubyの開発は、Java陣営がEoDやJava言語は可換であるという方向性を打ち出すよりもずっと以前からはじまっていました。一方、ごく最近に主要コミッタ2人がSun Microsystemsに雇用されています。つまりJRubyコミュニティは単純に草の根的なオープンソースソフトウェアとして開発を継続してきて、2006年頃になって自分たちの活動がJava本家の方向性と一致してきたのでその時流に乗ったわけです。その結果、Java陣営のよりオフィシャルなプロジェクトとしてクローズアップされ、急激に注目を集めるようになってきました。

   JRubyが現在注目されている理由は先ほど述べた通りですが、開発者に認知されるようになったきっかけとしては、上記のようなJava陣営からの期待と後押しが大きかったように思います。


JRubyの現状

   現在JRubyはようやく1.0がリリースされた段階で、具体的な実績などはまだこれからです。したがって、実用性という点から考えると、安定性の面でまだまだ不安な部分があり、上述してきたような期待に応え切れているとはいえない状態です。またベンチマークにもよりますが、パフォーマンス面でも現在は通常のRubyインタプリタと同程度(または分野によって優れていたり、劣っていたりする)のようです。

   しかし開発者達はこれらの問題に本気で取り組んでおり、また現在のJRuby界隈の活気からすると近い将来、これらの問題についても解決されていくに違いありません。


JRubyのアーキテクチャ

   JRubyのアーキテクチャがどのようなものなのか簡単に説明します。


JRubyとJavaの連携形式

   JRubyとJavaは図2のように、2つの形式での連携が可能です(模式図なので、実際の動作とは異なる部分があります)。

JRubyとJavaの連携形式
図2:JRubyとJavaの連携形式
(画像をクリックすると別ウィンドウに拡大図を表示します)

   このように、JavaからRubyを呼び出すことや、逆にRubyからJavaの呼び出しができます。開発者のバックグラウンドや実行環境の都合に応じてどちらの言語を主としてソースコードを記述するのかを選ぶことができ、これによって利用の障壁を低くしています。


JRubyの実行形態

   現在のJRubyはデフォルトでインタプリタとコンパイラが併用されます。これはJIT(Just In Time)方式と呼ばれます(図3)。

JITのイメージ
図3:JITのイメージ

   基本的にはコンパイルを行って成功すればそのバイトコードを、失敗したらインタプリタ上で動作します。つまりJRubyの開発が進んでコンパイラが対処できるコードが増えていくとパフォーマンスが向上していくような作りになっているわけです。この構造でJRuby上で動作可能なアプリケーションを確保しつつ改善を続けていくインクリメンタルなリリースを実現することができるのです。

   もちろん普通にコンパイルすることもできます。その場合jrubycコマンドを使ってRubyソースコードを指定し、コンパイルに成功すればJavaの.classファイルが生成されます。いくつかのJRubyライブラリにクラスパスを通せば普通のJavaクラスとしてjavaコマンドから利用することが可能です。

前のページ  1  2  3  次のページ


株式会社アスタリクス 大西 正太
著者プロフィール
株式会社アスタリクス  大西 正太
JavaEEフレームワークの設計構築や開発プロセス策定などの業務を経て、現在は新規ビジネス創生に携わる。Ruby on Rails上に構築したオープンソースのCMS「Rubricks」(http://rubricks.org/)のコミッタ。


INDEX
第1回:JRubyとは?
  はじめに
JRubyが注目される理由
  JRuby周辺プロダクト