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异常!

 

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

  

 

转载于:https://www.cnblogs.com/xwy6/p/7240517.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值