伴随 Java 8 的发布,Oracle 也一同发布了 Nashorn,它是在 Java 虚拟机上运行 Javascript 语言的一个引擎。Nashorn 的设计是为了替换最初的运行在 JVM 上的项目——被称之为 Rhino(Nashorn 是 rhino 的德语中的词语)。
Nashorn 完全重写和实现,谋求和 Java 的高效的交互性,精准地保证与 JavaScript ECMA 规范的一致性。Nashorn 是第一个达到 100% 遵从 JavaScript 的规范,并且在绝大部分工作量上运行速度是 Rhino 的20倍之多。

介绍Nashorn

在JVM 上运行的非 Java 语言

实际上,有很多非 Java 的语言运行在 JVM 上,有很多语言看起来不同与Java,例如 JavaScript。这就使 Java 和 JVM 保持松耦合提供了可能,并且真正通过类文件格式的定义进行交互。 这里可以通过两种不同的方式实现:

  • 源语言具有在Java中实现的解释器。解释器在 JVM上 运行,并执行以源语言编写的程序。
  • 源语言附带有一个编译器,它从源语言代码的单元生成类文件。生成的编译类文件然后在JVM上直接执行,这通常需要一些额外的语言特定的运行时支持。
    Nashorn 采用第二种方法, 但是增加了细化,编译器在运行时内部,所以JavaScript 源代码从不在程序执行开始之前编译。 这意味着不是专门为 Nashorn 编写的 JavaScript 仍然可以轻松地部署在平台上。

注意:
Nashorn 不像许多其他 JVM 语言(如JRuby),因为它不实现任何形式的解释器。 Nashorn 总是将 JavaScript 编译为 JVM 字节码,并直接执行字节码。

Nashorn 的动机

Nashorn 在 Java 和 JVM 生态系统中提供多种用途。

  1. 首先,它为 JavaScript 开发人员提供了一个可行的环境来发掘 JVM 的强大功能。
  2. 第二,它使公司能够继续利用他们对 Java 技术的现有投资,同时另外采用 JavaScript 作为开发语言。
  3. 最后,它为 HotSpot JVM 中的高级虚拟机技术提供了一个伟大的工程展示。
    随着 JavaScript 的不断增长和应用,从浏览器的传统首页扩展到更通用的计算和服务器端,Nashorn 在现有的坚如磐石的Java生态系统和有前途的新技术之间架起了巨大的桥梁。

在 Nashorn 下执行 JavaScript

接下来会介绍 Nashorn 的运行环境,还有两种执行 JavaScript 的方式(这两种方式都会在 JAVA_HOME 环境变量下的 bin 目录里执行):

  1. jrunscript:执行以.js 结尾的 JavaScript 脚本
  2. jjs:一个更多功能的 shell - 适用于运行脚本和作为一个交互,实时代码预览功能环境以及探索 Nashorn 其他功能。

转载于:https://www.cnblogs.com/IcanFixIt/p/6387759.html

Java Nashorn--Part 1相关推荐

  1. Java Nashorn 详解

    Nashorn,发音 "nass-horn",是德国二战时一个坦克的命名,同时也是 java8 新一代的 javascript 引擎,目前 JDK 8 中 Nashorn 只支持 ...

  2. java nashorn使用场景_优化Java调用Nashorn引擎的性能

    之前的项目里面大量使用了Nashorn引擎,目的是很多需要动态执行的代码放到了JavaScript里面,这样在用户那边比较好调试.但是因为性能的问题遇到了几个坑,最后经过一段时间,最终解决了,形成了这 ...

  3. 初探Java Nashorn脚本引擎

    文章目录 Nashorn探索背景 Nashorn简介 Nashorn语法一览: hello js in JVM 在JVM在中调用js函数 在js中调用java 使用Nashorn的几种安全机制: 使用 ...

  4. java nashorn maven_使用mvn创建java工程的极简教程

    最近开始集中精力搞java的开源项目,在这时记录一下使用mvn创建java工程的比较简单的流程,以备不时之需,适用于我等java小白~~~ 使用mvn创建java工程 安装mvn 创建java工程命令 ...

  5. java7 rhino,Java 7 可运行的 Nashorn,代替 Rhino

    惊现有人把 OpenJDK 上的 Nashorn dump 下来,使得 Java 7 都可以使用!源码在 https://bitbucket.org/ramonza/nashorn-backport/ ...

  6. nashorn 性能_Nashorn简介

    nashorn 性能 引入了Java 8和名为" Nashorn"的新JavaScript引擎. Nashorn基于Da Vinci Machine,该项目旨在为JVM添加动态语言 ...

  7. 幽情阁--Java8系列之Nashorn JavaScript(六)

    本章小宋讲一下JavaScript的引擎Nashorn 目录 Nashorn jjs jjs 交互式编程 jjs传递参数 Java 中调用 JavaScript JavaScript 中调用 Java ...

  8. python自定义函数大全-Python自定义函数

    华为云函数工作流(FunctionGraph)是一项基于事件驱动的函数托管计算服务.通过函数工作流,只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性.免运维.高可靠的方 ...

  9. nashorn_Nashorn简介

    nashorn 引入了Java 8和名为" Nashorn"的新JavaScript引擎. Nashorn基于Da Vinci Machine,该项目旨在为JVM添加动态语言支持. ...

  10. Nashorn——在JDK 8中融合Java与JavaScript之力--转

    原文地址:http://www.infoq.com/cn/articles/nashorn 从JDK 6开始,Java就已经捆绑了JavaScript引擎,该引擎基于Mozilla的Rhino.该特性 ...

最新文章

  1. mysql grant all详解_grant all赋权后mysql.user表权限字段还是N,但能登录和新建表
  2. python的用途实例-Python实例方法、类方法、静态方法的区别与作用详解
  3. 资源 | 深度学习课程入门与介绍
  4. 使用Java Servlet,JSP标签和Stormpath快速构建Java Web App
  5. 使用openssl,实现输入和输出都是字符串的类型,注意:输入最好是16的倍数
  6. html将两张图重叠居中代码,【CSS技巧】多图片的垂直居中排版
  7. hibernate _批量抓取
  8. 【windows下进程searchfilterhost.exe分析】
  9. css: position的使用;
  10. C++ 模板的全特化与偏特化
  11. watson语音识别下载
  12. ubuntu命令chmod755
  13. Dlib+Opencv库实现疲劳检测
  14. 树莓派外挂ESP32-USB
  15. Windows10+MinGW+Codelite完成C++编写平台安装
  16. MySQL入门笔记(五):另存数据为文件(导出数据)
  17. Tomcat 启动 Dubbo 端口占用报错 Address already in use: bind
  18. 模拟ATM机存取款管理系统
  19. python计算器简单代码_自学python之简单计算器
  20. Javascript 经纬度正则表达式

热门文章

  1. lintcode-137-克隆图
  2. 简单nginx+tomca负载均衡
  3. iframe多层嵌套时获取元素总结
  4. 10.1-10.12-广州软件所-实习工作日记
  5. java实现创建窗口
  6. python hello world程序编写_用Python编写一个简单程序
  7. 用react和electron实现文件树组件(上)
  8. FPGA积沙成塔(目录篇)
  9. ios运行html游戏,Objective-c / iOS – 使用Safari打开本地html文件
  10. 12020.硬件电路