ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

JRuby on BSF

コマンドラインからbsfで用意されたMainを使って実行

E:\jruby-1.1.4\lib\ruby\gems\1.8\gems\rubeus-0.0.6-java\examples>java -Djruby.ho
me=%JRUBY_HOME% -classpath %JRUBY_HOME%\lib\jruby.jar;%JRUBY_HOME%\lib\bsf.jar;.
 org.apache.bsf.Main -in rubeus_swing_example01.rb
Result: javax.swing.JFrame[frame0,0,0,410x322,layout=java.awt.BorderLayout,title
=Rubeus Swing Example 01,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,ro
otPane=javax.swing.JRootPane[,4,30,402x288,layout=javax.swing.JRootPane$RootLayo
ut,alignmentX=0.0,alignmentY=0.0,border=,flags=16777675,maximumSize=,minimumSize
=,preferredSize=],rootPaneCheckingEnabled=true]

E:\jruby-1.1.4\lib\ruby\gems\1.8\gems\rubeus-0.0.6-java\examples>

プログラム内から呼び出すことも可能

import java.io.*;

import org.apache.bsf.BSFManager;
import org.apache.bsf.util.IOUtils;

public class CallRubyBSF
{
	public static void main(String[] args) throws Exception
	{
		// JRubyエンジンを初期化
		BSFManager.registerScriptingEngine("ruby", "org.jruby.javasupport.bsf.JRubyEngine", new String[]{"rb"});
		BSFManager manager = new BSFManager();
   
		// Rubyスクリプトを実行
		manager.exec("ruby", "rubeus_swing_example01.rb", -1, -1, getFileContents("rubeus_swing_example01.rb"));
	}

	private static String getFileContents(String filename) throws IOException
	{
		FileReader in = new FileReader(filename);
		return IOUtils.getStringFromReader(in);
	}
}

gemも問題なく動きます。
が、BSFはJava6のScriptingにとって変わるような気がします。