nashorn 性能

引入了Java 8和名为“ Nashorn”的新JavaScript引擎。 Nashorn基于Da Vinci Machine,该项目旨在为JVM添加动态语言支持。 Nashorn是使混合软件比以前更轻松的一个很好的里程碑。 该引擎的出色功能使您能够在Java(任何其他编译语言)代码和javascript之间进行全双工通信。

使用Nashorn的最简单方法是JDK 8或OpenJDK 8中捆绑的命令行工具,您可以在“ / bin”中找到它。 通过执行jjs,您将面对jjs提示符,提示您可以交互使用Nashorn,也可以将js文件作为参数传递给jjs。 您可以在下面找到使用jjs的基本示例:

考虑下面的simple.js文件:

var name="Nashorn";
print(name);

现在,通过调用:jjs simple.js,将在屏幕上显示“ Nashorn”文本。

我认为jjs足以用于介绍,如果您需要更多信息,可以键入jjs -help。

您也可以在Java代码中使用Nashorn脚本引擎。 考虑下面的Program.java文件:

public class Program {public static void main(String... args) throws ScriptException {ScriptEngineManager factory = new ScriptEngineManager();ScriptEngine nashornEngine = factory.getEngineByName("nashorn");nashornEngine.eval("print('hello world');");}
}

使用此简单的代码,您的屏幕上将会显示一个非常漂亮的问候世界。 您也可以将js文件评估为脚本引擎,ScriptEngine接口的eval方法具有Reader抽象类类型的重载。 因此,您可以简单地传递任何作为Reader类实例的对象。 考虑以下代码:

script1.js内容:

var version = 1;function hello(name) {return "hello " + name;
}

Program.java内容:

public class Program {public static void main(String... args) throws ScriptException, NoSuchMethodException {ScriptEngineManager factory = new ScriptEngineManager();ScriptEngine nashornEngine = factory.getEngineByName("nashorn");nashornEngine.eval(new InputStreamReader(Program.class.getResourceAsStream("script1.js")));System.out.println(nashornEngine.get("version"));Invocable invocable = (Invocable) nashornEngine;Object result = invocable.invokeFunction("hello", "soroosh");System.out.println(result);
}
}

ScriptEngine接口有一个get方法,如您在示例中所注意到的,您可以调用它来检索ScriptEngine中定义的任何变量或任何状态。 在上面的示例中,“ version”是在simple.js文件中声明的变量。

每个脚本引擎都有其自己的ScriptEngine类实现,并且脚本引擎可以实现一些可选接口以扩展其功能。 如果您检查NashornSriptEngine的源代码,则类签名为:

public final class NashornScriptEngine extends javax.script.AbstractScriptEngine implements javax.script.Compilable, javax.script.Invocable

因此,Nashorn脚本引擎也使您能够使用这两个界面。 在上面的示例中,用于调用在脚本引擎中声明的函数的示例使用了Invocable接口。

注意: ScriptEngine是有状态的,因此,如果您在脚本引擎上调用某些函数或评估某些代码,则对象和变量的状态可能会影响其结果。

结论:

在这篇文章中,我试图以一种非常基本和实用的方式介绍Nashorn。在以后的文章中,我将进一步展示Java + Nashorn的互操作性及其在现实世界中的用法。

翻译自: https://www.javacodegeeks.com/2014/04/introduction-to-nashorn.html

nashorn 性能

nashorn 性能_Nashorn简介相关推荐

  1. FM信号测试软件,手机中FM调频性能测试方法简介

    原标题:手机中FM调频性能测试方法简介 手机已经成为人们非常重要的通讯工具,相应手机整合的功能也愈来愈多.目前市面上的手机基本上都支持FM收音机功能,而FM收音机性能则主要是通过 .接收频带宽度.解调 ...

  2. C++性能优化(一)——应用程序性能优化简介

    一.程序性能优化简介 1.程序性能优化简介 在计算机发展的早期阶段,硬件资源相对而言是非常昂贵的,CPU运行时间与内存容量给程序开发人员设置了极大限制.因此,早期的程序对运行性能和内存空间占用的要求是 ...

  3. nashorn 性能_Oracle Nashorn:用于JVM的下一代JavaScript引擎

    nashorn 性能 在Oracle应用程序中将Oracle Nashorn用作命令行工具和嵌入式解释器的方案 在Java SE 7之前,JDK附带了基于Mozilla RhinoJavaScript ...

  4. Roof-line Model性能分析模型简介

    REF Roofline Model与深度学习模型的性能分析 - 知乎 Roofline: An Insightful Visual Performance Model for Floating-Po ...

  5. python在材料方面的应用_python应用性能监控工具简介

    Published: 一 22 十月 2018 监控简介 监视工具捕获,分析和显示Web应用程序执行信息.每个应用程序在Web堆栈的所有层都可能出现问题.监控工具通过展示帮助开发人员和运营团队响应并修 ...

  6. Android之开发性能优化简介

    原帖地址:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=327340&extra=page%3D1%26filter%3 ...

  7. oracle临时表经常被锁_5.性能测试 - Oracle体系结构和性能优化简介

    体系结构 Oracle体系结构示意图 Oracle服务器: Oracle服务器是一个数据库管理系统,它为信息管理提供了开放.综合和集成的方法,包括Oracle实例和 Oracle数据库. Oracle ...

  8. oracle awr报告生成_5.性能测试 - Oracle体系结构和性能优化简介

    体系结构 Oracle体系结构示意图 Oracle服务器: Oracle服务器是一个数据库管理系统,它为信息管理提供了开放.综合和集成的方法,包括Oracle实例和 Oracle数据库. Oracle ...

  9. oracle性能优化简介

    最近这段时间刚做了一项性能优化的工作,根据一周的statspack报告,写了一个优化方案. 一.系统现有的主要性能问题 从最近一周比较典型的STATSPACK报告来看,系统中主要的等待事件如下: To ...

最新文章

  1. 证照编号与所选择的主体类型不一致_你的孩子天天在用“化妆品”,如何不踩雷?...
  2. 简述原型模型的特点_软件工程简答题答案 第五版
  3. 添加FB登陆时,需要curl扩展
  4. java handlersocket_HandlerSocket java客户端
  5. ORACLE 多版本读一致性
  6. nemesis什么车_狂野飙车9TrionNemesis介绍 S级车Trion复仇女神属性详解
  7. oracleXE版本相关问题整理
  8. 假如 AI 时代少了软件可信,我们将面临什么?
  9. Gitlab分支保护
  10. linker command failed with exit code 1
  11. smarty 模板php,Smarty模板快速入门
  12. 满满干货!邮储银行java面试
  13. Chrome启动参数大全
  14. 微信服务号只有域名没有80端口怎么办
  15. no.10京东咚咚架构演讲读后感
  16. FastReport VCL如何在 Lazarus安装FastReport
  17. 摄像头拍照及解析QR二维码
  18. k8s 集群部署(dashboard+metrics-server)
  19. 大学生都在哪里看大学课后习题答案
  20. 骑砍自建服务器,恶魔之魂玩家不忍服务器关闭 自建服务器上线运行

热门文章

  1. 【结论】Number(jzoj(gz) 1781)
  2. 初一模拟赛总结(2019.4.13)
  3. 2017西安交大ACM小学期数据结构 [分块、二维矩阵]
  4. 汇编语言(四)之比较字符串
  5. Java 中Timer和TimerTask 定时器和定时任务使用的例子
  6. Java 常见的 30 个误区与细节
  7. Shell入门(九)之字符串比较
  8. 263. 丑数---LeetCode---JAVA
  9. 图的深度优先遍历+图解
  10. 量子计算机对人类长寿,科学家称“极端长寿”在未来几十年可能会达到新的里程碑...