2010年1月27日水曜日

jrubycでプリコンパイルしてみた

JRubyではRubyスクリプトをプリコンパイルしてclassファイルにすることができる。

% type sample.rb
puts "hello world

% mkdir bin
% jruby -S jrubyc -t bin sample.rb
Compiling sample.rb to class sample

実行する時にはJRubyのライブラリをクラスパスに指定する。
JRuby 1.4.0では、jruby.jarを指定すれば十分なようだ。

% java -cp ./bin;C:/jruby-1.4.0/lib/jruby.jar sample
hello world

jarファイルにjarファイルを埋め込むことができるから、(Fat JarとかOne-Jarとか)
これで「rubyなんてインストールしてないよ」っていう人でも
Javaがインストールされていれば作成したプログラムを使ってもらえる。

ちなみに、jrubyはコンパイル済みのクラスファイルを実行することもできる。

% jruby sample.class

便利そうだけど、JRubyがインストールされている環境でjrubycでコンパイルしたclassファイルを実行できて嬉しいことがあるのかどうかちょっと疑問。

exerbみたいにrequireをトレースして必要なファイルを全てコンパイルしてJarに固めるような機能があったら便利そう。

2010年1月21日木曜日

Groovyは僕を幸せにするか?

Groovyを使ったらプロトタイプ開発=製品開発にできるだろうか?


プロトタイプ作成にRuby使って書いたコードを、製品用にJavaに書き直したとき
Rubyのコードは600行(約15KB)位だったのに
Javaのコードは1200行(約34.5KB)超えてちょっとうんざりした


Ruby→Javaにしなければならなかった理由は

  1. バグ修正、機能拡張 ← 担当者がRuby知ってることはオプション。Javaは必須要件。
  2. パフォーマンス ← 軽くて早いのがいい

という事だったかな。

「Java必須ならRubyも必須でしょ?」はちょっと難しそうだけど
「Java必須ならGroovyも常識でしょ?」ってちょっと頑張ればごり押しできるかも
...とか妄想してみたりしなかったり。

Groovyのパフォーマンスはどうなんだろう。調べてみたい。

Play!

PlayフレームワークはJavaでWebアプリ開発を簡単にする...らしい。
The Play framework makes it easier to build Web applications with Java

Javaで軽快に使える「軽量フレームワーク特集」
~本格的なRoRスタイルフレームワーク「Play!」

ほぅ。Groovyにも興味が出てきた。←え!そっち?