image

  • フォト Amazonギフト券
    ※この時計の時刻は、閲覧しているパソコンのものであり、必ずしも正確な時間とは限りません

検索

最近のトラックバック

無料ブログはココログ

« 2008年8月6日 | トップページ | 2008年8月8日 »

2008年8月7日

2008-08-07

java の ScriptEngineManage の実験

- http://d.hatena.ne.jp/koichiarchi/20070821/1187669141
> JavaからRubyを使う - koichi’s swap memory

この記事にある java のサンプルを MacOSX 10.5 で動作させてみた。

その前に まずは、
classpath 指定をして java を実行する shell script をつくった。

$ cat run.sh
#! /bin/sh

JRUBY_LIBS=\
$JRUBY_HOME/lib/bsf.jar:\
$JRUBY_HOME/lib/jruby.jar:\
$JRUBY_HOME/lib/profile.jar:\
/Users/youichikato/work/www/jsr223-engine/jruby/build/jruby-engine.jar

java -cp $JRUBY_LIBS:. $*

まずは、有効な engine の調査だ。
$ cat ScriptEngineSearch.java
// See
//  http://d.hatena.ne.jp/koichiarchi/20070810/1186736204

import javax.script.ScriptEngineFactory;
import javax.script.ScriptEngineManager;

/**
* 使用可能なスクリプトエンジンを調べる
*/
class ScriptEngineSearch {
    public static void main(String args[]) {
        ScriptEngineManager manager = new ScriptEngineManager();

        // 使用可能なエンジンの一覧を取得
        for (ScriptEngineFactory engine : manager.getEngineFactories()) {
            System.out.println("enfine full name = " + engine.getEngineName());

            // エンジン生成時に使用出来るショートネーム
            for (String shortName : engine.getNames()) {
                System.out.println("- engine short name = " + shortName);
            }
        }
    }
}

走らせると
$ ./run.sh ScriptEngineSearch
nfine full name = JRuby Engine
- engine short name = jruby
- engine short name = ruby
enfine full name = AppleScriptEngine
- engine short name = AppleScriptEngine
- engine short name = AppleScript
- engine short name = OSA

おー、jruby が認識されている。

次は、外部の jruby scriファイルを実行する例だ。
$ cat tax.rb
def tax(m)
  puts m * 1.05
end

$ cat JRubyFileExecute.java
// See
//  http://d.hatena.ne.jp/koichiarchi/20070821/1187669141

import java.io.FileReader;
import java.io.IOException;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class JRubyFileExecute {

    private static ScriptEngine ruby = new ScriptEngineManager().getEngineByName("ruby");

    public static void main(String[] args) throws ScriptException, IOException {
        FileReader reader = new FileReader(args[0]);
        ruby.eval(reader);
        ruby.put("m", 980);
        ruby.eval("tax($m)");
    }
}

走らせると、
$ ./run.sh JRubyFileExecute tax.rb
1029.0
素晴らしい!

- https://scripting.dev.java.net/
> scripting: Project Home Page
には、サポートされる script の一覧がある。

java のソースコードを生成 or 入力し、それを compile して実行
なんてことをすれば、java を script 言語のように扱えるだろう。

« 2008年8月6日 | トップページ | 2008年8月8日 »

mokuji

2013年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

google

  • twitter
  • __
  • _
    Googleボットチェッカー

合わせて読む

  • 合わせて読む
    フィードメーター - katoy: cocolog あわせて読みたい

リンク