何故、今、Rubyに注目するのか?
Rubyの実行速度が大きく改善されようとしているからです。
いくら言語仕様が良かろうと実行速度が遅ければ、個人的には
注目に値しません。
Matz氏が2000年(平成12年度)の未踏でRuby実装のVM化の実験を
開始してからRuby実装のVM化をずっと待っていました。
もっと早くRuby実装のVM化が実現されると思われたのですが、2000年
の未踏以降、Matz氏によるRuby実装のVM化は停滞し、消滅したかの
ようにみえました。
諦めかけていた頃、ko1(笹田)氏が2004年の未踏ユースにてYARVの
実装を開始。徐々にYARVの改良が行われ、去年2月の0.4リリースで
Ruby1.8系のほぼ全機能が実現されました。
去年6月のRuby会議のMatz氏の発表にて2.0へのYARV採用の方向性
が示され、去年11月にRuby1.9系へのYARVのマージが行われました。
RubyVMの誕生です。
RubyVMはPHPと同様に動的にコンパイルを行い生成されたバイトコード
を実行するので利用者が実行環境がインタープリタかVM(バイトコード
インタープリタ)かを意識することはありません。
Javaの場合、素のVM->JIT->AOTの順に改良が行われ、パフォーマンス
が改善されてきました。
次世代Rubyは今、素のVMの段階です。ただし、VMの技術自体は日々進歩
しているので、Javaの初期実装よりはずっとパフォーマンスが良いと思います。
(JavaのバイトコードとRubyのバイトコードは特性が異なるので単純には比較
できません...。)
JITやAOTの技術を用いたVMの改良は1.9.1リリース後の中長期ターゲット
になると思われます。
蛇足となりますが、現時点での実行速度においてJavaVM>>RubyVMで
あることは間違いありません。
Ruby(VM)はCで作成されたモジュールによる言語?拡張をサポートしている
ので、実行速度においてネックとなる部分をCで記述、アドオンするようにする
ことで実行速度をJavaで作成されたアプリと遜色ないレベルまで引き上げる
ことは可能となっています。
Javaはかっちり作り込みを行う領域向け、Rubyはプロトタイピングしながら
作り込んでいくような領域向けと利用領域(層)が異なることを付記しておきます。
#JavaとRubyのどちらが優れているかなんてことは考えていません。
#堅い言語としてJavaにコミット、柔らかい言語としてRuby及びJavaScriptに
#注目しています。