NetBeans 6.5のbetaをほとんど使ってなかったので、使ってみた。何に使おうか悩んだんだけど、とりあえずJRubyをお試ししてみよう。ということでタイトルのJRubyでJavaのクラスを呼んでみるを試してみよう。
さて、呼ぶために必要な手順は2つだけだ。
- require 'java'をする
- include_class or include_packageをする
以上!簡単すぎる。ということでArrayListを使ってみた。
# 前準備
require 'java'
include_class('java.util.List')
# ArrayListのインスタンスを作ってaddメソッドを使ってみる
list = java.util.ArrayList.new
list.add("こんにちは")
list.add("世界")
# eachでくるくる回すことも出来るのね
list.each do |item|
puts item
end
実行すると、普通に結果が出る。
こんにちは
世界
これでSwingを使ったりとかもやりたい放題だ。ただ、これじゃあまり面白くないので外部のjarファイルに定義されているJavaのクラスを呼ぶ方法を試してみた。因みにCLASSPATHを通すことはしない!
まず、Javaのクラスライブラリのプロジェクトを作る。クラスはお試しなので1つだけ。文字列を返すだけにした。
package com.wankuma.kazuki.jruby.sample;
public class Greeter {
public String greet(String name) {
return "こんにちは!" + name + "さん!";
}
}
これをビルドしてgreeter.jarを作成する。それを、JRubyのプロジェクトのlibフォルダ(ソースフォルダ)にコピーする。
さて、このjarファイルの中にあるクラスを使うための手順は以下の3つになる。
- require 'java'をする
- requrie 'jarファイル名'をする
- include_class or include_packageをする
なんとjarファイルをそのままrequire出来ちゃう。素敵だ。
ということでやってみた。
# 前準備
require 'java'
# jarファイルをrequireで読み込む
require 'greeter.jar'
# 後は普通に使えるようになる
include_class('com.wankuma.kazuki.jruby.sample.Greeter')
greeter = com.wankuma.kazuki.jruby.sample.Greeter.new
puts greeter.greet('田中 太郎')
実行してみると…
こんにちは!田中 太郎さん!
おお~ちゃんと使えてる。いいね。
POIとかも手軽に使えちゃいそう。