Java 脚本引擎

      脚本引擎,就是一个编程语言解释器,它的功能是解释执行用户的程序文本,将它译成计算机能执行的机器代码,完成一系列的功能。

      Java脚本引擎简单地说就是指Java提供的一组兼容操作各种脚本语言的的API。

      下面将我所了解得内容做以简单的记录,初来乍到,大神请轻喷,感谢!

      首先来个demo感受下:通过  ScriptEngineManager  对象,通过 getEngineByExtension("js")(通过扩展名,获取脚本对象);

  

public class Engine {

public static void main(String[] args) throws ScriptException {

   ScriptEngine engine = new
 ScriptEngineManager().getEngineByExtension("js"); if(engine==null){ throw new RuntimeException("找到不JavaScript语言执行引擎");
} engine.eval("var a; a = 10;print('这是JavaScript脚本引擎:'+a);");
}
}
      // 直接执行脚本
engine.eval("print('我他么的热死了!')");
System.out.println("---// 脚本语言绑定-----");
 // 脚本语言绑定
engine.put("name", "World");
engine.eval("var message = 'hello,'+name;");
engine.eval("print(message)"); Object obj = engine.get("message");
System.out.println(obj);
System.out.println(engine.get("name")); SimpleBindings bindings = new SimpleBindings();
bindings.put("hobby","写代码");
engine.eval("print('I like '+ hobby);",bindings); //重定向
ScriptContext context = engine.getContext();
context.setWriter(new FileWriter("aaa.txt"));
engine.eval("print('ni hao ya wo s ni da ge dy ')"); //自定义属性
context.setAttribute("name", "王宝宝", ScriptContext.GLOBAL_SCOPE);
context.setAttribute("name", "xiao bao bao", ScriptContext.ENGINE_SCOPE);
System.out.println( context.getAttribute("name")); Bindings binding = engine.createBindings();
binding.put("key","11111");
Bindings binding1 = engine.createBindings();
binding1.put("key","222"); context.setBindings(binding1, ScriptContext.GLOBAL_SCOPE); engine.eval("print(key);");

  


    注意:1.使用eval ()函数即可在Java代码中使用JavaScript 或其他脚本语言。

       2.Oracle Nashorn 为jdk1.8引擎版本名称。

       3.在jdk1.8环境下输出语句请使用:print();请勿使用println();否则报  javax.script.ScriptException异常!Java 脚本引擎

//代码执行效果
Oracle Nashorn
我他么的热死了!
------脚本语言绑定-----
hello,World
hello,World
World
I like 写代码
xiao bao bao

  

上一篇:HTML


下一篇:(Android数据传递)Service和Activity之间-- 借助BroadcastReceiver--的数据传递