MyToolsJava 工具包

联合创作 · 2023-09-28 13:22

该 jar 包对 java 调用 Groovy 、JavaScript、Clojure 脚本语言的接口进行封装,方便在java程序中进行多语言混合编程

在jar中增加对URLClassLoader类进行继承重写实现动态加载和拆卸jar,使用Message类进行jar插件间的解耦调用。

包管理工具采用 Gradle 进行管理

MyTools工具类旧版本git地址 : https://gitee.com/iproject/MyTools.git

MyTools工具类最新版本git地址:https://gitee.com/iproject/MyTools2.git

使用示例:

 

    @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调用的支持

 

浏览 7
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报