在命令行中执行 JavaScript

现在我们有一个 my_script.js 文件,想在 Nashorn 下执行,则需要在命令行下执行该命令:

jrunscript my_script.js

jrunscript 还可以指定指定除了 Nashorn 以外的引擎,这里需要使用 -l 来显示指定:

jrunscript –l nashorn my_script.js

注意:

在 jrunscript 命令里,甚至可以执行其他的脚本语言,只要提供合适可用的脚本引擎。

jrunscript 提供了一些简单有限的功能,如果需要更多的功能,可以使用 jjs 命令。

使用Nashorn shell

Nashorn 中的 shell 命令是 jjs,它可以用来交互或非交互的环境中,用来替代 jrunscript。

我们先来演示最简单的例子(在命令行下):

PS C:\Users\TurtusLi> jjs
jjs> print("Hello, World!");
Hello, World!
jjs>

Nashorn 在 shell 下可以轻松地与 Java 保持互操作性。我们可以直接通过使用完全限定类名,从 JavaScript 访问 Jav a的类和方法。下面是一个访问 Java 内置的正则表达式的例子:

jjs> var pattern = java.util.regex.Pattern.compile("\\d+");
jjs> var myNums = pattern.split("a1b2c3d4e5f6");
jjs> print(myNums);
[Ljava.lang.String;@75f9eccc
jjs> print(myNums[0]);
a

注意:

当我们打印 myNums 这个 JavaScript 变量时,我们得到结果是[Ljava.lang.String;@75f9ecc,尽管在一个 JavaScript 变量,代表 myNums 真的是一个 Java 字符串数组。

下面介绍一下 jjs 命令的具体用法。

jjs [<options>] <files> [-- <arguments>]

以及常用选项的意义。

  • -cp(-classpath):指定 Java 的 classpath。
  • -doe(-dump-on-error):当 Nashorn 被迫退出时产生完整的错误转储。
  • -J:这个选项是传递给 JVM 用的。例如,如果我们想要增加 JVM 最大可用内存:
$ jjs -J-Xmx4g
jjs> java.lang.Runtime.getRuntime().maxMemory()
3817799680
  • -strict:使所有的脚本和函数中运行的 JavaScript 的严格模式。这是 JavaScript 的一个特性,是在 ECMAScript 第五个版本引入的这一特征,目的是减少缺陷和错误。严格模式建议在 JavaScript 中新的开发项目中使用,如果你不熟悉它,你应该阅读它。
  • -D:允许开发人员通过键值对作为系统属性传递给 Nashorn,在通常的方式下为 JVM 使用。 举例:
$ jjs –DmyKey=myValue
jjs> java.lang.System.getProperty("myKey");
myValue
  • v(-version):Nashorn 的系统版本号。通常等同于 JDK 的版本。
PS C:\Users\TurtusLi> jjs -v
Nashorn 1.8.0_102
  • -fv(-fullversion):Nashorn 的详细的系统版本号。
PS C:\Users\TurtusLi> jjs -fullversion
nashorn full version 1.8.0_102-b14
  • -fx: 作为一个 JavaFX GUI 应用程序执行脚本。这允许 JavaFX 程序员利用 Nashorn 少写很多样板。
  • -h:列出帮助信息。
  • -scripting:开启 Nashorn 规范的脚本扩展功能。

Java Nashorn--Part 2的更多相关文章

  1. Java 7 可执行的 Nashorn,取代 Rhino

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

  2. 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, ...

  3. Atitit。Js调用后台语言 java c#  php swing android  swt的方法大总结

    Atitit.Js调用后台语言 java c#  php swing android  swt的方法大总结 1. Js调用后台语言有三种方法1 2. Swt  BrowserFunction 绑定方法 ...

  4. JS代码检查工具ESLint

    前面的话 ESLint是一个JavaScript代码静态检查工具,可以检查JavaScript的语法错误,提示潜在的bug,可以有效提高代码质量,维持前端团队高度一致的编码风格.ESLint不但提供一 ...

  5. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  6. Java 8 的 Nashorn 脚本引擎教程

    本文为了解所有关于 Nashorn JavaScript 引擎易于理解的代码例子. Nashorn JavaScript 引擎是Java SE 8的一部分,它与其它像Google V8 (它是Goog ...

  7. Nashorn 在JDK 8中融合Java与JavaScript之力

    从JDK 6开始,Java就已经捆绑了JavaScript引擎,该引擎基于Mozilla的Rhino.该特性允许开发人员将JavaScript代码嵌入到Java中,甚至从嵌入的JavaScript中调 ...

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

      从JDK 6开始,Java就已经捆绑了JavaScript引擎,该引擎基于Mozilla的Rhino.该特性允许开发人员将JavaScript代码嵌入到Java中,甚至从嵌入的JavaScript ...

  9. java 11 移除的一些其他内容,更简化的编译运行程序,Unicode 10,移除了不太使用的JavaEE模块和CORBA技术,废除Nashorn javascript引擎,不建议使用Pack200 相关api

    移除的一些其他内容 移除项 移除了com.sun.awt.AWTUtilities 移除了sun.misc.Unsafe.defineClass, 使用java.lang.invoke.MethodH ...

  10. Java 8 Nashorn JavaScript

    转自:https://www.runoob.com/java/java8-nashorn-javascript.html Nashorn 一个 javascript 引擎. 从JDK 1.8开始,Na ...

随机推荐

  1. bash和shell的关系

    bash是borne again shell的缩写,它是shell的一种,Linux上默认采用的是bash. shell脚本中的方法带不带function的区别,例如: function foo () ...

  2. SQL中Union和UnionAll的使用

    SQL中Union和UnionAll的使用 1.建立一个Student表 ,如下: 2.建立一个Teacher表,如下: 3.使用Union,将去重并组合表,效果: 4.使用Union All,不去重 ...

  3. 通过Fiddler抓取Java HttpClient的HTTP包

    设置HttpClient访问Fiddler的代理即可. public static void main(String[] args) throws Exception { HttpPost httpP ...

  4. 【转】Window 通过cmd查看端口占用、相应进程、杀死进程等的命令

    转自:http://blog.csdn.net/jiangwei0910410003/article/details/18967441 一. 查看所有进程占用的端口  在开始-运行-cmd,输入:ne ...

  5. VS2015使用小技巧

    VS2015常用快捷键 1.回到上一个光标位置/前进到下一个光标位置 1)回到上一个光标位置:使用组合键“Ctrl + -”; 2)前进到下一个光标位置:“Ctrl + Shift + - ” 2.复 ...

  6. Linux下使用logrotate实现日志切换

    运维过程中经常会发现一些 C 程序,每天会生产这样的日志: /home/admin/app_name/logs/access_log 那么天长地久,如果这个程序不会自动去轮转这个日志,那么这个日志文件 ...

  7. auto function -> return type 当不能从{}内推断类型时

    示例: template<class F, class... Args> auto ThreadPool::enqueue(F&& f, Args&&... ...

  8. CentOS7 修改主机名

    命令: hostnamectl set-hostname [yourhostname] 不过这种方法,大写会自动变成小写. 还有一种方法,直接修改 /etc/hostname文件,这个可以保证大写不变 ...

  9. Ubuntu下,terminal经常使用快捷键

    # ctrl + l - 清屏 . cLear # ctrl + c - 终止命令. # ctrl + d - 退出 shell,好像也能够表示EOF. # ctrl + r - 从命令历史中找 . ...

  10. 不可不知的Oracle常用技巧

    不可不知的Oracle常用技巧 表复制 1.方法一:复制表结构和数据 create table temp_clientloginuser as select distinct userid from ...