Java学习之动态编译-动态脚本引擎-脚本引擎执行javascript代码
2015-03-14 22:44
996 查看
脚本引擎执行javascript代码
JAVA脚本引擎是从JDK6.0之后添加的新功能。脚本引擎介绍:
使得JAVA应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在JAVA平台上调用各种脚本语言的目的
Java脚本API是连通Java平台和脚本语言的桥梁
可以把一些复杂异变的业务逻辑交给脚本语言处理,这又大大提高了开发效率。
获得脚本引擎对象:
ScriptEngineManager sem = new ScriptEngineManager();ScriptEngine engine = sem.getEngineByName("javascript");
Java脚本API为开发者提供了如下功能:
获取脚本程序输入,通过脚本引擎运行脚本并返回运行结果,这是最核心的接口。注意:接口。Java可以使用各种不同的实现,从而通用的调用js,groovy,python等脚本
js使用了:Rhino
Rhino是一种使用Java语言编写的javascript的开源实现,原先有Mozilla开发,现在被集成进入jdk6.0
官方首页:https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino
应用:
通过脚本引擎的运行上下文脚本和Java平台间交换数据
通过Java应用程序调用脚本函数。
代码:
public class TestRhiho { public static void main(String[] args) throws ScriptException, NoSuchMethodException, IOException { //获得脚本引擎对象 ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine engine = sem.getEngineByName("javascript"); //定义变量,存储到引擎上下文中:即可以被Java使用,也可以被javascript使用 engine.put("msg", "world is very big"); String str ="var user = { name:'zhangsan',age:10,school:['清华','北大']};"; str += "println(user.school)";//注意不能定义为alert(); //执行脚本 engine.eval(str); engine.put("msg", "you are pretty girl"); System.out.println(engine.get("msg")); //定义函数 engine.eval("function add(a,b){return a+b;}"); //执行js函数 //取得调用接口 Invocable jsinvoke = (Invocable)engine; //调用方法 Object result = jsinvoke.invokeFunction("add",new Object[]{1,2}); System.out.println(result); //导入其他Java包,使用Java类 String jscode = "importPackage(java.util); var list = Arrays.asList([\"张三\",\"李四\"])"; engine.eval(jscode); List<String> list = (List<String>)engine.get("list"); for(String temp:list){ System.out.println(temp); } //执行一个js文件 URL url = TestRhiho.class.getClassLoader().getResource("a.js"); FileReader fr = new FileReader(url.getPath()); engine.eval(fr); //Invocable js = (Invocable)engine; //js.invokeFunction("test", null); fr.close(); } }
相关文章推荐
- java 动态编译与用Rhino引擎执行javascript代码
- JDK8中Java调用Javascript脚本引擎动态定义与执行代码
- JDK8中Java调用Javascript脚本引擎动态定义与执行代码
- Java脚本引擎执行 javascript 代码
- 脚本引擎执行javascript代码_Rhino引擎JAVA215
- JVM学习笔记(二)------Java代码编译和执行的整个过程
- 脚本引擎Rhino执行javascript代码
- JVM学习笔记(二)------Java代码编译和执行的整个过程
- JVM学习笔记(1、 基本结构;2、Java代码编译和执行的整个过程3、内存管理和垃圾回收 4、 内存调优 )
- 执行脚本代码的java引擎--测试代码
- 页面上动态编译及执行java代码
- 使用脚本引擎增加程序运行时动态执行能力(Java篇)
- 一个可以让你用javascript脚本动态执行java的框架Seppia
- JVM学习笔记(二)------Java代码编译和执行的整个过程
- JVM学习笔记(二)------Java代码编译和执行的整个过程
- 利用javax.tools动态编译执行java代码
- JVM学习笔记(二)------Java代码编译和执行的整个过程【转】
- JVM学习笔记(二)------Java代码编译和执行的整个过程
- C# Javascript引擎,如何在C#中执行现有的Javacript代码?
- JVM学习笔记(二)------Java代码编译和执行的整个过程