zoukankan      html  css  js  c++  java
  • 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 生态系统中提供多种用途。

    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 其他功能。
  • 相关阅读:
    线程的两种实现方法
    wait() 与 sleep
    【BZOJ4566】找相同字符(后缀数组)
    【BZOJ2555】SubString(后缀自动机,Link-Cut Tree)
    【HDU4622】Reincarnation(后缀自动机)
    【SPOJ】Substrings(后缀自动机)
    【SPOJ】Longest Common Substring II (后缀自动机)
    【SPOJ】Longest Common Substring(后缀自动机)
    【Luogu3804】【模板】后缀自动机(后缀自动机)
    【SPOJ】Distinct Substrings(后缀自动机)
  • 原文地址:https://www.cnblogs.com/IcanFixIt/p/6387759.html
Copyright © 2011-2022 走看看