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 其他功能。
Java Nashorn--Part 1的更多相关文章
- Java 7 可执行的 Nashorn,取代 Rhino
惊现有人把 OpenJDK 上的 Nashorn dump 下来,使得 Java 7 都能够使用.源代码在 https://bitbucket.org/ramonza/nashorn-backport ...
- Learning Java 8 Syntax (Java in a Nutshell 6th)
Java is using Unicode set Java is case sensitive Comments, C/C++ style abstract, const, final, int, ...
- Atitit。Js调用后台语言 java c# php swing android swt的方法大总结
Atitit.Js调用后台语言 java c# php swing android swt的方法大总结 1. Js调用后台语言有三种方法1 2. Swt BrowserFunction 绑定方法 ...
- JS代码检查工具ESLint
前面的话 ESLint是一个JavaScript代码静态检查工具,可以检查JavaScript的语法错误,提示潜在的bug,可以有效提高代码质量,维持前端团队高度一致的编码风格.ESLint不但提供一 ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- Java 8 的 Nashorn 脚本引擎教程
本文为了解所有关于 Nashorn JavaScript 引擎易于理解的代码例子. Nashorn JavaScript 引擎是Java SE 8的一部分,它与其它像Google V8 (它是Goog ...
- Nashorn 在JDK 8中融合Java与JavaScript之力
从JDK 6开始,Java就已经捆绑了JavaScript引擎,该引擎基于Mozilla的Rhino.该特性允许开发人员将JavaScript代码嵌入到Java中,甚至从嵌入的JavaScript中调 ...
- Nashorn——在JDK 8中融合Java与JavaScript之力
从JDK 6开始,Java就已经捆绑了JavaScript引擎,该引擎基于Mozilla的Rhino.该特性允许开发人员将JavaScript代码嵌入到Java中,甚至从嵌入的JavaScript ...
- java 11 移除的一些其他内容,更简化的编译运行程序,Unicode 10,移除了不太使用的JavaEE模块和CORBA技术,废除Nashorn javascript引擎,不建议使用Pack200 相关api
移除的一些其他内容 移除项 移除了com.sun.awt.AWTUtilities 移除了sun.misc.Unsafe.defineClass, 使用java.lang.invoke.MethodH ...
- Java 8 Nashorn JavaScript
转自:https://www.runoob.com/java/java8-nashorn-javascript.html Nashorn 一个 javascript 引擎. 从JDK 1.8开始,Na ...
随机推荐
- Office 如何添加Adobe Acrobat虚拟PDF打印机
在服务中找到Print Spooler服务,如果是停止的点击启动,如果已经启动点击重新启动 在打印机中添加本地打印机 使用现有端口,然后选择Adobe PDF选项,下一步,然后在厂商中选择Ad ...
- WinForm程序开发
WinForm程序开发------------------------------主要页面----------------------------------BaseForm.cs 基类,用于派 ...
- asp.net时间类-格式-方法应用
一.当前日期+时间DateTime.Now c#/asp.net通过DateTime.Now这个类来获取当前的时间. DateTime dt = DateTime.Now; 2013/10/24 10 ...
- LintCode: Fizz Buzz
C++ class Solution { public: /** * param n: As description. * return: A list of strings. */ vector&l ...
- SQL Server Window Function 窗体函数读书笔记一 - SQL Windowing
SQL Server 窗体函数主要用来处理由 OVER 子句定义的行集, 主要用来分析和处理 Running totals Moving averages Gaps and islands 先看一个简 ...
- SQL Server 2008——SQL命令INSERT
T-SQL的INSERT命令的语法: INSERT [INTO] {table_name|view_name} [{(column_name,column_name,-)}] ...
- Java多线程之Semaphore信号量
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6557874.html 学过操作系统的对 信号量 这个词应该不陌生,它是用来进行进程间通信,控制对 临界区 ...
- JAVA & Android 等待线程池内任务全部完成后退出
void shutdownAndAwaitTermination(ExecutorService pool) { pool.shutdown(); // Disable new tasks from ...
- HttpServletResponse对象(二)
一.HttpServletResponse常见应用——生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedImage类,
- 图解Win7如何手动添加受信任证书
点击开始—>运行,如下图所示: 弹出“控制台”窗口如下,如下图所示: 点击“文件—添加/删除管理单元”,如下图所示: 选择“证书”,并点击“添加”,如下图所示: 在弹出的窗口上选 ...