脚本语言特征灵活。 脚本语言一般都是动态类型,可以不用声明变量类型而直接使用,可以在运行期改变类型。
便捷。 脚本语言是一种解释型语言,不需要编译成二进制代码,也不需要像 Java 一样生成字节码。它的执行是依靠解释器解释的。因此在运行期变更代码非常容易。而且不用停止应用。
调用Javascript示例import javax.script.*;
import java.io.FileReader;
import java.util.Scanner;
/**
* Java 调用脚本语言 Demo 程序
*/
public class ScriptInvokeDemo {
public static void main(String[] args) throws Exception {
// 获得一个 JavaScript 的执行引擎
ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
// 建立上下文环境
Bindings bind = engine.createBindings();
bind.put("factor", 1);
// 绑定上下文,作用域是当前引擎范围
engine.setBindings(bind, ScriptContext.ENGINE_SCOPE);
Scanner input = new Scanner(System.in);
while (input.hasNextInt()){
int first = input.nextInt();
int sec = input.nextInt();
System.out.println("输入参数是: " + first + "," + sec);
// 执行 js 代码(formula.js文件放置在项目根目录下)
engine.eval(new FileReader("formula.js"));
// 是否可调用方法
if(engine instanceof Invocable){
Invocable in = (Invocable) engine;
// 执行 js 中的函数
Double result = (Double) in.invokeFunction("calc", first, sec);
System.out.println("运算结果: " + result.intValue());
}
}
}
}
formula.js// 计算公式
function calc(var1, var2){
// factor 变量因子,从执行环境上下文中获取
return var1 - var2 * factor;
}
jrunscript 命令工具
Java 6 不仅仅提供了代码级别的脚本内置,还提供了一个 jrunscript 命令工具,它可以在批处理中发挥最大效能,而且不需要通过 JVM 解释脚本语言,可以直接通过该工具运行脚本。