Java Nashorn--Part 1
伴随 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 生态系统中提供多种用途。
- 首先,它为 JavaScript 开发人员提供了一个可行的环境来发掘 JVM 的强大功能。
- 第二,它使公司能够继续利用他们对 Java 技术的现有投资,同时另外采用 JavaScript 作为开发语言。
- 最后,它为 HotSpot JVM 中的高级虚拟机技术提供了一个伟大的工程展示。
随着 JavaScript 的不断增长和应用,从浏览器的传统首页扩展到更通用的计算和服务器端,Nashorn 在现有的坚如磐石的Java生态系统和有前途的新技术之间架起了巨大的桥梁。
在 Nashorn 下执行 JavaScript
接下来会介绍 Nashorn 的运行环境,还有两种执行 JavaScript 的方式(这两种方式都会在 JAVA_HOME 环境变量下的 bin 目录里执行):
- jrunscript:执行以.js 结尾的 JavaScript 脚本
- jjs:一个更多功能的 shell - 适用于运行脚本和作为一个交互,实时代码预览功能环境以及探索 Nashorn 其他功能。
转载于:https://www.cnblogs.com/IcanFixIt/p/6387759.html
Java Nashorn--Part 1相关推荐
- Java Nashorn 详解
Nashorn,发音 "nass-horn",是德国二战时一个坦克的命名,同时也是 java8 新一代的 javascript 引擎,目前 JDK 8 中 Nashorn 只支持 ...
- java nashorn使用场景_优化Java调用Nashorn引擎的性能
之前的项目里面大量使用了Nashorn引擎,目的是很多需要动态执行的代码放到了JavaScript里面,这样在用户那边比较好调试.但是因为性能的问题遇到了几个坑,最后经过一段时间,最终解决了,形成了这 ...
- 初探Java Nashorn脚本引擎
文章目录 Nashorn探索背景 Nashorn简介 Nashorn语法一览: hello js in JVM 在JVM在中调用js函数 在js中调用java 使用Nashorn的几种安全机制: 使用 ...
- java nashorn maven_使用mvn创建java工程的极简教程
最近开始集中精力搞java的开源项目,在这时记录一下使用mvn创建java工程的比较简单的流程,以备不时之需,适用于我等java小白~~~ 使用mvn创建java工程 安装mvn 创建java工程命令 ...
- java7 rhino,Java 7 可运行的 Nashorn,代替 Rhino
惊现有人把 OpenJDK 上的 Nashorn dump 下来,使得 Java 7 都可以使用!源码在 https://bitbucket.org/ramonza/nashorn-backport/ ...
- nashorn 性能_Nashorn简介
nashorn 性能 引入了Java 8和名为" Nashorn"的新JavaScript引擎. Nashorn基于Da Vinci Machine,该项目旨在为JVM添加动态语言 ...
- 幽情阁--Java8系列之Nashorn JavaScript(六)
本章小宋讲一下JavaScript的引擎Nashorn 目录 Nashorn jjs jjs 交互式编程 jjs传递参数 Java 中调用 JavaScript JavaScript 中调用 Java ...
- python自定义函数大全-Python自定义函数
华为云函数工作流(FunctionGraph)是一项基于事件驱动的函数托管计算服务.通过函数工作流,只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性.免运维.高可靠的方 ...
- nashorn_Nashorn简介
nashorn 引入了Java 8和名为" Nashorn"的新JavaScript引擎. Nashorn基于Da Vinci Machine,该项目旨在为JVM添加动态语言支持. ...
- Nashorn——在JDK 8中融合Java与JavaScript之力--转
原文地址:http://www.infoq.com/cn/articles/nashorn 从JDK 6开始,Java就已经捆绑了JavaScript引擎,该引擎基于Mozilla的Rhino.该特性 ...
最新文章
- mysql grant all详解_grant all赋权后mysql.user表权限字段还是N,但能登录和新建表
- python的用途实例-Python实例方法、类方法、静态方法的区别与作用详解
- 资源 | 深度学习课程入门与介绍
- 使用Java Servlet,JSP标签和Stormpath快速构建Java Web App
- 使用openssl,实现输入和输出都是字符串的类型,注意:输入最好是16的倍数
- html将两张图重叠居中代码,【CSS技巧】多图片的垂直居中排版
- hibernate _批量抓取
- 【windows下进程searchfilterhost.exe分析】
- css: position的使用;
- C++ 模板的全特化与偏特化
- watson语音识别下载
- ubuntu命令chmod755
- Dlib+Opencv库实现疲劳检测
- 树莓派外挂ESP32-USB
- Windows10+MinGW+Codelite完成C++编写平台安装
- MySQL入门笔记(五):另存数据为文件(导出数据)
- Tomcat 启动 Dubbo 端口占用报错 Address already in use: bind
- 模拟ATM机存取款管理系统
- python计算器简单代码_自学python之简单计算器
- Javascript 经纬度正则表达式