1. 引擎工厂的属性

引擎 名字 MIME类型 文件扩展
Nashorn nashorn,Nashorn
js,JS
JavaScript,javascript
ECMAScript,mcmascript
application/javascript
application/ecmascript
text/javascript
text/ecmascript
js
Groovy groovy   groovy
Renjin Renjin text/x-R R,r,S,s
SISC Scheme sisc   scheme,sisc

2. 获取manager

		ScriptEngineManager manager = new ScriptEngineManager();
System.out.println("Available factories: ");

3.  查看线程安全

for (ScriptEngineFactory factory : manager.getEngineFactories()){
    System.out.println(factory.getEngineName());
    
    //null:不安全
    //MULTITHREADED:安全
    //...
    System.out.println("线程安全:"+factory.getParameter("THREADING"));
}

4. 获取js引擎

		final ScriptEngine engine = manager.getEngineByName("nashorn");
if (engine == null) {
System.err.println("No engine for nashorn");
System.exit(1);
}

5. 调用脚本

		engine.eval("n=88");
Object evalResult = engine.eval("n+2");
System.out.println(evalResult); engine.put("x", 99);
evalResult = engine.eval("x+2");
System.out.println(evalResult);

6. 重定向输出

		Writer orinalWriter = engine.getContext().getWriter();
engine.getContext().setWriter(new PrintWriter("E:\\js.txt"));
engine.eval("print('hello')");
engine.getContext().setWriter(orinalWriter); //只有脚本引擎的输出被改变
System.out.println("hello");

7. 调用函数

		engine.eval("function greet(how ,whom) {return how+','+whom}");
evalResult = ((Invocable)engine).invokeFunction("greet", "hello","world");
System.out.println(evalResult);

8. 调用方法

		engine.eval("function Greeter(how){this.how=how}");
engine.eval("Greeter.prototype.welcome= function(whom) {return this.how+','+whom}");
Object yo = engine.eval("new Greeter('Yo')");
evalResult = ((Invocable)engine).invokeMethod(yo, "welcome","world");
System.out.println(evalResult);

9.调用接口

package shell;

public interface Greeter {
String welcome(String whom);
}
		//定义function
engine.eval("function welcome(whom) {return 'welcome hello,'+whom}"); Greeter greeter = ((Invocable)engine).getInterface(Greeter.class);
evalResult = greeter.welcome("world");
System.out.println(evalResult);

10. 编译脚本

		if(engine instanceof Compilable){
CompiledScript compiledScript = ((Compilable)engine).compile("print('hello xxx')");
compiledScript.eval();
}

J2SE 8的脚本的更多相关文章

  1. 使用Jena RDF API 开发脚本语言管理资源描述框架模型

    摘要 资源描述框架(Resource Description Framework RDF)是一种以XML格式描述元数据的标准格式.Jena是一种用于将关系数据库或是文本文件中所表示的数据建立为元数据模 ...

  2. 有关android工程的构建脚本(build.xml)的学习

    学习[android-sdk-linux根目录]/tools/ant/build.xml,觉得如下几点很有用,记录之 1)ant脚本中属性值是于前置定义优化的原则,即属性发生重复定义时,前面定义的值不 ...

  3. Linux服务器Jboss运行环境搭建步骤和开机自动启动脚本编写运行

    Jboss运行环境:Linux+Jdk+Jboss+jsp系统 Jboss软件说明:类似于Tomcat,就是一个跑Jsp系统的环境,他的站点路径跟Tomcat类似,Tomcat存放站点文件到webap ...

  4. tomcat多实例方案启动脚本

    批量启动 #!/bin/sh BASE_PATH="/usr/local/tomcat8/tomcat-ins/"bash $BASE_PATH/web1/tomcat.sh st ...

  5. Apache执行Python脚本

    由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...

  6. SQL Server镜像自动生成脚本

    SQL Server镜像自动生成脚本 镜像的搭建非常繁琐,花了一点时间写了这个脚本,方便大家搭建镜像 执行完这个镜像脚本之后,最好在每台机器都绑定一下hosts文件,不然的话,镜像可能会不work 1 ...

  7. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  8. 探真无阻塞加载javascript脚本技术,我们会发现很多意想不到的秘密

    下面的图片是我使用firefox和chrome浏览百度首页时候记录的http请求 下面是firefox: 下面是chrome: 在浏览百度首页前我都将浏览器的缓存全部清理掉,让这个场景最接近第一次访问 ...

  9. 第一个shell脚本

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...

随机推荐

  1. 在Docker中运行crontab

    在把自己的项目通过Docker进行打包时,由于项目中用到了crontab,不过使用到的基础镜像python:3.6-slim并没有安装这项服务,记录下在镜像中安装和配置crontab的过程. Dock ...

  2. javabean(实体类)转Map类型

    javabean(实体类)转Map类型 从网上"風亦飞"的导出EXCEL的源代码提取出来的.认为非常好用.分享一下给大家,主要看beanToMap方法就OK了 /*以下是从poi导 ...

  3. Oracle plsql乱码

    方法1.执行  set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK 方法2.执行--regedit--查找--NLS_LANG--设置值 SIMPLIFIED ...

  4. 通过直接编码添加折线图到ChartControl

    https://documentation.devexpress.com/#WindowsForms/CustomDocument2976 ChartControl lineChart = new C ...

  5. 洛谷4059找爸爸(Code+第一次月赛)

    题目:https://www.luogu.org/problemnew/show/P4059 dp. 1.看出-A-B(k-1)可以理解成连续空格的第一个 -A,其余 -B: 2.把会干扰的“上一步右 ...

  6. linux上通过lighttpd上跑一个C语言的CGI小页面以及所遇到的坑

    Common Gateway Interface如雷贯耳,遗憾的是一直以来都没玩过CGI,今天尝试一把.Tomcat可以是玩CGI的,但得改下配置.为了方便,直接使用一款更轻量级的web服务器ligh ...

  7. java ssl https 连接详解 生成证书 tomcat keystone

    java ssl https 连接详解 生成证书 我们先来了解一下什么理HTTPS 1. HTTPS概念 1)简介 HTTPS(全称:Hypertext Transfer Protocol over ...

  8. Linux 期中架构 inotify

    全网备份数据同步方案 备份网站内部人员信息  不能解决外部(人员)上传数据的备份 定时任务最短执行的周期为一分钟,采用定时任务方式,有时可能造成一分钟内的数据丢失 因此对于重要数据需要采用实时同步的方 ...

  9. 1108 Finding Average (20 分)

    1108 Finding Average (20 分) The basic task is simple: given N real numbers, you are supposed to calc ...

  10. [UE4]角色、动画蓝图、动画蒙太奇、动画之间的调用关系

    一.在“角色”中设置要使用的“动画蓝图” 二.在“动画蓝图”中使用“动画”和“混合动画” 三.在“混合动画”中,也可以使用“动画” 四.在角色中使用“动画蒙太奇”