JRubyクィックスタート
翻訳校正:原井彰弘
RubyとJavaを結びつけてJRubyができあがった。よいものとよいものを組みあわせれば2倍よいものができあがるという良い例だ。
(神がわざと組み合わせたとすら思える)ピーナッツバターとチョコレートのように「よいものとよいものを組みあわせれば2倍よいものができあがる」という考え方のもと、JRubyはRubyとJavaを結びつけた。西側の資本主義と東側の社会主義がかつて出会ったように、型に関して制限の少ない言語が型に関して厳密な言語に出会うさまを、これからご覧に入れよう。
JRubyは100%Javaによって実装されたRubyのインタプリタである。Rubyの全ての機能を有しているわけではないが、Rubyのほとんどの組み込みクラスが用意されている。
言うまでもないことではあるが、JRubyを最大限に活用したいならばJavaとRubyについて学ぶ必要がある。Javaのプログラマの方は、まずRubyの入門者向け記事及びもうひとつの記事を参考にして欲しい。その記事に書かれている内容を理解しているという前提で、この記事ではJRubyの世界を覗いてみる。
JRubyを入手する
まず、最初にすべきことは http://dist.codehaus.org/jruby/ で最新のjruby-binアーカイブをダウンロードすることである。必要なものはこのアーカイブの中に全て含まれている。ダウンロードが完了したら自分の好きな場所にアーカイブを展開し、binディレクトリへのパスをpath環境変数に追加しよう。
全てが完了したら、次のコマンドが正しく実行できるはずである。
jruby -v ruby 1.8.5 (2007-08-23 rev 4201) [ppc-jruby1.0.1]
コードを書く
まず、次のコマンドを入力してインタラクティブコンソールを呼び出してみよう。
jirb irb(main):001:0>
JRubyがRubyのインタプリタであるということは、今まで我々が見てきたRubyのコードは何でも動作させることが可能だということだ。
irb(main):001:0> puts "Hello World"
Hello World
=> nil
irb(main):002:0> [1, 2, 3, 4, 5].each { |n| puts n*n }
1
4
9
16
25
=> [1, 2, 3, 4, 5]
ここでは何も驚くことはない。我々があえてネイティブのRubyインタプリタではなくJRubyを使っているのは、Javaの機能を利用するためである。それでは、Javaというフレームワークをここで取り込んでみよう。
irb(main):003:0> require 'java' => true
ただし、ここで一般的なJavaのコードを利用しようとすると以下のように失敗してしまう。
irb(main):004:0> System.out.println("Hello world")
NameError: uninitialized constant System
from (irb):4:in `binding'
from /Users/chris.duckett/tmp/jruby/jruby-1.0.1/lib/ruby/1.8/irb.rb:150:in `eval_input'
from /Users/chris.duckett/tmp/jruby/jruby-1.0.1/lib/ruby/1.8/irb.rb:70:in `signal_status'
from /Users/chris.duckett/tmp/jruby/jruby-1.0.1/lib/ruby/1.8/irb.rb:147:in `eval_input'
from /Users/chris.duckett/tmp/jruby/jruby-1.0.1/lib/ruby/1.8/irb.rb:70:in `each_top_level_statement'
from /Users/chris.duckett/tmp/jruby/jruby-1.0.1/lib/ruby/1.8/irb.rb:146:in `loop'
from /Users/chris.duckett/tmp/jruby/jruby-1.0.1/lib/ruby/1.8/irb.rb:146:in `catch'
from /Users/chris.duckett/tmp/jruby/jruby-1.0.1/lib/ruby/1.8/irb.rb:146:in `eval_input'
from /Users/chris.duckett/tmp/jruby/jruby-1.0.1/lib/ruby/1.8/irb.rb:70:in `start'
from :1:in `catch'
from /Users/chris.duckett/tmp/jruby/jruby-1.0.1/lib/ruby/1.8/irb.rb:69:in `start'
from :1
JRubyで普通のHello Worldを動作させるには、Javaの基礎に立ち戻って当たり前だと思っていたことを見直す必要がある。
- ホワイトペーパー
- 話題のタグ
グーグル、JavaScriptプログラミングツールをリリース
Windowsの歴史 Windows Server 2008編:同じカーネルを持つ「Vista」とは対照的に早くから支持を得たサーバOS
Windowsの歴史 Windows Server 2003 R2編:安定性と先進性の両立目指す「R2」の先駆けとなったOS
モジラ、「Firefox 3.6」の第1ベータ版をリリース
進むストレージ環境の見直し
100万円で実現!中小企業の情報漏えい対策
―エン・ジャパン厳選求人☆毎週更新―
【最終警告】パンデミック対策特集
企業ITシステムの企画、構築、運用のイロハ
大丈夫?あなたの会社のセキュリティ対策
最大32個のセンサーが電力を徹底管理!