您的位置:首页 > Web前端 > JavaScript

Java调用脚本语言(JavaScript)

2013-08-25 14:25 357 查看
在jdk1.6之后就支持了调用脚本语言,比如PHP,Ruby,Groovy,JavaScript

脚本语言优点:

灵活:脚本语言一般都是动态类型,可以不用声明变量类型而直接使用,也可以在运行期改变类型。

便捷:脚本语言是一种解释型语言,不需要编译成二进制代码。

一些易变业务可以使用脚本语言编写。

下面给出一个例子程序:

demo.js
function formula(var1, var2){
return var1 + var2 * factor;
}

简单的运算

CallJavaScript.java
package org.xxz.test;

import java.io.FileReader;
import java.util.Scanner;
import javax.script.Bindings;
import javax.script.Invocable;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

@SuppressWarnings("resource")
public class CallJavaScript {
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("input numbers: "+first+" " +sec);
// 执行js代码
engine.eval(new FileReader("src/org/xxz/test/demo.js"));
if(engine instanceof Invocable){
// 是否可调用方法
Invocable in = (Invocable) engine;
// 执行js中的函数
Double result = (Double) in.invokeFunction("formula", first, sec);
System.out.println("result:" + result.intValue());
}
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: