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の基礎に立ち戻って当たり前だと思っていたことを見直す必要がある。
- ホワイトペーパー
- 企画特集
ロリポップ!がリニューアル
ESBでIT投資の無駄を劇的に解消する
集積度も性能も、業界最高水準のブレードPC
パンデミック対策特集
インターネット上の悪意を未然に防ぐには?
今注目の「サジェスト検索」−デモ掲載中
御社のログ活用しませんか!?
【徹底対談】運用管理ツールの賢い使い方
◆エン・ジャパン厳選求人☆毎週更新◆
SOA、BPM、SaaS −今、企業に必要なこと
中小企業のセキュリティリスクとは?
仮想環境を実現するソリューション特集
そのストレージで仮想化に対応できますか?
セキュリティ&ユーザ事例【SIer Club】
ストレージメディア特設サイト開設
- ■ストレージ容量50%削減保証■
- エンタープライズにおけるSUSEの強み
- サーバー監視・運用のコストを削減するには
- サービス・ドリヴン・データセンター
- 話題のタグ
Windows 7はLinuxへの切替が簡単:注目の仮想ディスクフォーマット「VHD」
iPhone OS 3.0で変わった「絵文字」
OSSのクラウド基盤「Eucalyptus」を使う(4)--インストール〜ノード構築
俳優経験者が指南する「人前で上手く話すためのティップス10選」
「うるまでるびペイント」登場:絵は上手下手ではなく制作過程に楽しみが
待てば回路の日和あり--「iPhone 3GS」発売、しかし――