软件简介

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

java复制类mytool_MyTools相关推荐

  1. 干货:排名前 16 的 Java 工具类!

    2019独角兽企业重金招聘Python工程师标准>>> 干货:排名前 16 的 Java 工具类!   在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最 ...

  2. 排名前 16 的 Java 工具类

    转载来自微信公众号:Java 技术栈.如有侵权,请联系作者删除!! 在 Java 中,工具类定义了一组公共方法,这篇文章将介绍 Java 中使用最频繁及最通用的 Java 工具类.以下工具类.方法按使 ...

  3. java流类图结构_java I/O 流总结

    一.java 流操作有关的类和接口: 类                                                                          说明 Fil ...

  4. beanutils工具类_16 个超级实用的 Java 工具类!

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...

  5. java轻量级并行工具类_16 个超级实用的 Java 工具类

    原标题:16 个超级实用的 Java 工具类 源 /juejin 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名, ...

  6. 【Java系列】从JVM角度解析Java核心类String的不可变特性

    凯伦说,公众号ID: KailunTalk,努力写出最优质的技术文章,欢迎关注探讨. 1. 前言 最近看到几个有趣的关于Java核心类String的问题. String类是如何实现其不可变的特性的,设 ...

  7. java 文本工具类_干货:排名前16的Java工具类

    原标题:干货:排名前16的Java工具类 作者丨Java技术栈 https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Ja ...

  8. java复制文件_java多种文件复制方式以及效率比较

    1.背景 java复制文件的方式其实有很多种,可以分为 - 传统的字节流读写复制FileInputStream,FileOutputStream,BufferedInputStream,Buffere ...

  9. java 复制文件_Java中复制文件的4种方法

    Java拷贝文件是一种非常常见的操作.但是java.io.File类没有任何快捷方法可以将文件从源复制到目标文件.在这里,我们将了解学习可以在java中复制文件的四种不同方法. 方法一:使用Strea ...

最新文章

  1. json.dumps()、json.dump()、json.loads()和json.dumps()的区别
  2. PAT甲级1049 Counting Ones (30 分):[C++题解]统计1的个数、数位统计
  3. Java 设计模式之外观模式
  4. 首批 8 款 5G 手机获 3C 认证;iPhone6 系列停产;Android Q Beta 5 发布 | 极客头条
  5. [Java] 蓝桥杯ALGO-143 算法训练 字符串变换
  6. BIO | NIO | AIO (Java版)
  7. SQL Server误区30日谈-Day25-有关填充因子的误区
  8. window多个oracle查版本,Oracle SQL多版本VERSION_COUNT产生的可能性
  9. x61 linux 驱动下载,ThinkPad T61/X61换XP系统及驱动下载
  10. Tensorflow学习笔记-基于LeNet5结构的ORL数据集人脸识别
  11. 01背包与完全背包详解
  12. 中科院计算机研究所排名,中国科学院计算技术研究所
  13. Software Performance Testing - 全链路压测知识点整理
  14. android开发流程
  15. python批量提取视频帧
  16. 五个受用一生的学习网站,高效免费,想提升自己能力的快来看看
  17. 最简易的Cfree代码,cfree爱心代码。
  18. Excel一行头尾置换
  19. 如何查看IE浏览器保存的密码
  20. edge打开时被360首页恶意绑定

热门文章

  1. SpringBatch tasklet实现和用法(十)
  2. 解决mysql无法启动和重启:mysql.sock文件解锁
  3. win11安装chocolatey软件包管理工具(win版)
  4. docker客户端连接远程docker服务端(export方式)
  5. idea GsonFormat插件使用报错 StringIndexOutOfBoundsException: begin 0, end -1, length 9
  6. deepin v20.1折腾美化之Plank dock任务栏安装
  7. loadrunner脚本运行时设置:Run Logic设置运行次数
  8. Scala特质(类似Java中的接口)
  9. Hadoop SSH免密登录公钥生成并实现不同主机间的免密登录
  10. 图片日志:深拷贝和浅拷贝的区别/序列化及反序列化