javaから実行その2 - Clojure 
2014/01/25 
clojureです。
javaから文字列を渡してコンパイルして、できあがったオブジェクトを実行してみます。
コンパイルするコストが小さければ、実行させたいときにコンパイルして実行したいなと。
package jp.deiji.ext;
import java.io.StringReader;
import clojure.lang.Compiler;
import clojure.lang.Var;
public class ExtClojure02 {
    public static void main(String[] args) {
        a();
    }
    static void a() {
        new clojure.lang.RT();
        String str = "(def hello (fn [] (println \"Hello world\")))";
        Object o = Compiler.load(new StringReader(str));
        System.out.println(o);
        System.out.println(o.getClass());
        Var v = (Var) o;
        v.call();
        v.invoke();
    }
}
実行結果です。
#'clojure.core/hello
class clojure.lang.Var
Hello world
Hello world
: