软件简介
该 jar 包对 java 调用 Groovy 、JavaScript、Clojure 脚本语言的接口进行封装,方便在java程序中进行多语言混合编程
在jar中增加对URLClassLoader类进行继承重写实现动态加载和拆卸jar,使用Message类进行jar插件间的解耦调用。
包管理工具采用 Gradle 进行管理
使用示例:
@Test
public void testJava() throws Exception {
JavaHepler jh = new JavaHepler();
//jh.putPath("Test", "test.Test");
//IMethod d = jh.newInstance("Test");
//or
IMethod d = jh.newInstance("test.Test");
IInvoke i = d.getMethod("p");
i.invoke();
i = d.getMethod("p2");
i.invoke("MyTools");
}
//@Test
public void javaScript() {
long b = System.currentTimeMillis();
String[] s = new String[] { "test/test.js" };
JSHelper js = new JSHelper(s);
js.addField("ca").javaToJs(System.out);
System.out.println(js.getMethod("test").invoke());
js.exit();
long e = System.currentTimeMillis();
System.out.println("js :" + (e - b));
}
//@Test
public void groovy() throws Exception {
String file = "test/Test.groovy";
long b = System.currentTimeMillis();
GroovyHelper gh = new GroovyHelper();
//gh.putPath("Test", file);
//gh.newInstance("Test").getMethod("t").invoke();
//or
gh.newInstance(file).getMethod("t").invoke();
long e = System.currentTimeMillis();
System.out.println("Groovy :" + (e - b));
}
//@Test
public void clojure() throws Exception {
String file = "test/test_t.clj";
long b = System.currentTimeMillis();
ClojureHelper cl = new ClojureHelper();
//cl.putPath("test", file);
//IMethod c = cl.newInstance("test");
//or
IMethod c = cl.newInstance(file);
IInvoke i = c.getMethod("t3");
System.out.println(i.invoke(4));
long e = System.currentTimeMillis();
System.out.println("clojure :" + (e - b));
}
//@Test
public void jython() throws Exception {
String file = "test/Test.py";
long b = System.currentTimeMillis();
JythonHelper jy = new JythonHelper();
//jy.putPath("Test", file);
//jy.newInstance("Test").getMethod("t").invoke();
//or
jy.newInstance(file).getMethod("t").invoke();
long e = System.currentTimeMillis();
System.out.println("jython :" + (e - b));
}
//@Test
public void jruby() throws Exception {
String file = "test/Rr.rb";
long b = System.currentTimeMillis();
JRubyHelper jr = new JRubyHelper();
//jr.putPath("Rr", file);
//Object obj = jr.newInstance("Rr").getMethod("c2f").invoke(100);
//or
Object obj = jr.newInstance(file).getMethod("c2f").invoke(100);
System.out.println(obj);
long e = System.currentTimeMillis();
System.out.println("jruby :" + (e - b));
}
//@Test
public void beanShell() throws EvalError, IOException{
long b = System.currentTimeMillis();
BeanShellHelper bsh = new BeanShellHelper();
bsh.getFied("a").set("Hello World");
bsh.load("test/test.bsh");
System.out.println(bsh.getFied("b").get());
long e = System.currentTimeMillis();
System.out.println("jruby :" + (e - b));
}
增加对beanShell调用的支持