Java 是强类型的静态语言, 即所有的代码在运行之前都必须先进行严格的类型检查并编译为 JVM 字节码. 这样做虽然保证了安全与性能, 但却牺牲了灵活性. 而那些动态语言 (JavaScript ,Python 等) 却可以在程序运行时改变程序的结构以及变量类型, 因此更具灵活性.
JSR-223 规范定义了 Java 虚拟机中运行的脚本与 Java 程序之间的交互方式, 在 Java 6.0+ 的版本现已全面支持该规范啦 O(_)O~
Java 6.0+ 内置了 JavaScript 解析引擎 Rhino, 所以可以很方便地调用 JavaScript 编写的动态脚本, 实现更灵活的业务逻辑.
我们使用 Rhino 实现了一个 JavaScript 乘法函数, 作为示例:
- ScriptEngineManager manager = new ScriptEngineManager();
- ScriptEngine engine = manager.getEngineByName("JavaScript");
- String scriptContent = "function multiply(a,b) {return a*b;}";
- // 注册脚本
- engine.eval(scriptContent);
- Invocable invocable = (Invocable) engine;
- // 调用注册函数
- System.out.println(invocable.invokeFunction("multiply", 2, 3));
invokeFunction() 第一个参数是调用函数的名称, 其它参数是该函数需要传入的参数列表.
输出结果:
6.0
是不是很简单呀 O(_)O 哈哈~
来源: http://www.jianshu.com/p/2d28d63af787