今月末にバージョン1.0リリース
「本家Rubyより速い」、JRuby開発者に聞く
2007/05/10
PythonやRubyといった動的言語が人気だが、サン・マイクロシステムズは、そうした動きをJavaテクノロジに採り入れつつある。もともとのPythonやRubyはCで実装されているが、Javaによる実装である「Jython」や「JRuby」といった処理系が存在する。Ruby向けに書かれたコードはJVM上で稼働するJRubyでも動作する。同様に、Rubyブームの火付け役となった感もある「Ruby on Rails」(RoR)で構築されたサイトであっても、かなり高い互換性でJRuby上で動作するという。米国サンフランシスコで開催中のJavaOneで、JRubyプロジェクトの中心人物に話を聞いた。
Ruby on RailsもJVM上で稼働
現在、JRubyは6人のコア・コミッターと30〜35人のコミュニティメンバーによって開発が進められている。6人のコア・コミッターのうちの2人、チャールズ・ナッター(Charles Nutter)氏とトーマス・エネボー(Thomas Eebo)氏は、2006年9月にサン・マイクロシステムズに社員として迎え入れ、現在はフルタイムでJRubyの開発に取り組んでいるという。
「2004年のRubyConfに参加してRubyがおもしろそうだなと思ったのがRubyとの最初の関わりです。ただ、Rubyに興味があったのに、Javaで実装するということになって、今ではJavaばかり使っています(笑)。 サンに入る前は、JRubyは週末だけのプロジェクトだったのが、平日も週末もフルタイムでJRubyに関わることになると、もしかして自分は興味を失うんじゃないかとも思っていましたが、ますます仕事が楽しくなっています」(トーマス・エネボー氏)
今月末にバージョン1.0を正式にリリースするというJRubyだが、本家のRuby1.8との互換性は高い。「互換性には気を遣っています。自分たちで作成したテストツールで互換性の検証をしています」(エネボー氏)といい、RoRで書かれたコードも、サンのJavaアプリケーションサーバ「GlassFish」上で稼働するという。
Rubyには、本家のRubyとJRuby以外にも、高速処理を売りにしたYARV(Yet Another Ruby VM)という実装もある。Rubyは言語仕様が明確にドキュメント化されていないため、こうしたRuby仮想マシン間の互換性を懸念する声も出ていたが、「サンで作成したテストツールは、Rubyコミュニティに提供するつもり」(エネボー氏)といい、互換性に関する心配は杞憂となりそうだ。サンはこれまでにも、Rubyコミュニティに対してソースコード保存用のサーバや、開発ツールなどを提供しており、RoRで注目を集めたRubyが、サンによるJRubyへのコミットメントによってさらに広範囲の注目を集めそうだ。特に商用利用に関して言えば、「Java EEのライブラリやJavaクラスを、Rubyの文法で自然に使えるように作業を進めている」(エネボー氏)というのはJava開発者にとっても、Rubyの文法に慣れ親しんだ開発者にとっても朗報だろう。
処理速度のチューニングも進んでいる。JRubyは高速実行を目指したYARVと、「ほぼ同等か、テスト項目によってはやや遅い程度の速度」(エネボー氏)といい、本家のRubyよりは確実に速いとしている。
「動的言語はヘルメットを付けずに走るバイクのようなもの」
JRubyやJythonといった人気の言語がJavaプラットフォーム上で動くとなると、Java言語の位置付けにも影響を受けるのではないかという疑問が出てくる。この疑問に対して、Javaの生みの親であるジェームス・ゴスリン(James Gosling)氏は、「RubyやPythonといった動的言語はHTMLを生成するのに適した言語だが、それがコンピューティングのすべてではない」とコメントしており、例えば、NASDAQの電子取引では1秒間に約15万のトランザクションをJava EEで処理しており、そうした用途ではJavaのスケーラビリティや柔軟性、セキュリティが勝ると指摘する。
「動的言語を使うのは、ヘルメットを付けずにバイクで走るようなものだ。そのほうがヘルメットを付けてから走り出すよりずっと速いが、コードの安全性や保守性といった面では問題を抱えることになる」(ゴスリング氏)
用途や開発規模によって使い分けられる言語の選択肢が増えるのは、開発者には朗報だ。いずれにしても、Javaプラットフォームは、もはやJava言語だけが動く環境ではない。
関連リンク
情報をお寄せください:
- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る - エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る - VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します - さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
|
|
キャリアアップ
- - PR -
転職/派遣情報を探す
「ITmedia マーケティング」新着記事
Xに迫る新興SNS「Threads」と「Bluesky」 勢いがあるのはどっち?
Metaは最近のBluesky人気をけん制するためか、立て続けに機能アップデートを実施している...
もしかして検索順位に関係する? SEO担当者なら知っておきたい「ドメイン」の話
この記事では、SEOの観点から自社Webサイトに適したドメインの選び方を考えます。適切な...
B2Bマーケターの「イマ」――KPI・KGIはどう設定? 他部門への関与度は?
メディックスがITmedia マーケティングと共同で開催したウェビナー「2024年最新調査から...