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

      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

  

Java 脚本引擎的更多相关文章

  1. 8.4(Java学习笔记)java脚本引擎(Rhino)

    一.java脚本引擎 java脚本引擎是沟通java和脚本语句之间的桥梁,可以通过对应的脚本引擎在java中调用各种脚本语言. 二.脚本引擎执行脚本代码 ScriptEngineManager:为Sc ...

  2. java 脚本引擎执行js

    为用到时,使用方便直接保存一下代码 package com.xzlf.reflectTest; import java.io.BufferedReader; import java.io.FileIn ...

  3. [19/04/19-星期五] Java的动态性_脚本(Script,脚本)引擎执行JavaScript代码

    一.概念 Java脚本引擎是jdk 6.0之后的新功能. 使得Java应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在Java平台上调用各种脚本语言的目的. Java脚本API是连接Jav ...

  4. Java_脚本引擎_01_用法入门

    一.前言 最近有个需求,需要在js中调用java,这样能避免更新java,从而实现代码的热更新. 于是想到用 Nashorn JavaScript 引擎. 二.概述 通过 JDK 8 的 Nashor ...

  5. Java_脚本引擎_00_资源帖

    一.精选资料 1.w3cschool—Java 脚本引擎 2.Riding the Nashorn 二.参考资料

  6. 复杂多变场景下的Groovy脚本引擎实战

    一.前言 因为之前在项目中使用了Groovy对业务能力进行一些扩展,效果比较好,所以简单记录分享一下,这里你可以了解: 为什么选用Groovy作为脚本引擎 了解Groovy的基本原理和Java如何集成 ...

  7. Java 8 的 Nashorn 脚本引擎教程

    本文为了解所有关于 Nashorn JavaScript 引擎易于理解的代码例子. Nashorn JavaScript 引擎是Java SE 8的一部分,它与其它像Google V8 (它是Goog ...

  8. JDK8在Java转让Javascript脚本引擎动态地定义和运行代码

    import java.lang.*; import java.util.Arrays; import java.util.List; import javax.script.Invocable; i ...

  9. Java中通过脚本引擎调用js函数

    import java.io.*; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.scri ...

随机推荐

  1. Image和字节数组互转

    using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; ...

  2. GridView七十二绝技-大全(收藏版)(转至别人博客)

    快速预览:GridView无代码分页排序GridView选中,编辑,取消,删除GridView正反双向排序GridView和下拉菜单DropDownList结合GridView和CheckBox结合鼠 ...

  3. KBEngine简单RPG-Demo源码解析(2)

    七:服务端资产库文件夹结构http://kbengine.org/cn/docs/concepts/directorys.html看assets, 注意:demo使用的不是默认的assets资产目录, ...

  4. npm 的用法

    当用npm 安装依赖时如果加上  --save  就会自动把依赖模块添加到package.json中  别人下载时直接npm install 加载后就可以了

  5. JS运动框架的封装过程(一)

    给大家出一道题,从起点A走到目的地B,一共用了1000毫秒,每一次是30毫秒,请问你在这里面得到了哪些信息? 信息有哪些呢? 第一个,总时长是:1000毫秒 第二个,多久时间走一次?30毫秒 第三个, ...

  6. React Native之APK文件签名及打包

    生成apk签名文件 我们使用android studio的方式进行签名 AS工具栏找到并点击 build->gennrate signed apk 两种情况: 1.这里如果已经有签名文件了则直接 ...

  7. HDU 3829 Cat VS Dog / NBUT 1305 Cat VS Dog(二分图最大匹配)

    HDU 3829 Cat VS Dog / NBUT 1305 Cat VS Dog(二分图最大匹配) Description The zoo have N cats and M dogs, toda ...

  8. SecureFX 乱码问题

    英文平时连终端的都是用SecureCRT, 今天试了一些SecureFX, 结果乱码了, 把redhat下的中文桌面标题显示乱码, 然后参考了一下别的前辈, 完美解决, 下面是解决办法: 1.找到配置 ...

  9. 对于mariadb安装后可以默认使用无密码登录的问题解决方案

    mariadb安装后默认可以无密码登录 所以首先我们要设置root用户的密码 mysqladmin -u root -p password 密码 [遇到enter直接enter就行,注意,如果是重新设 ...

  10. Linux项目自动部署

    场景:linux中自动部署项目在工作中经常遇到,快速高效的部署项目能够大幅提高工作效率.现在将项目部署的过程记录下来,以供参考,其中用到的知识点现在还有很多不很清楚,后面要好好琢磨琢磨! 1 项目部署 ...