zoukankan      html  css  js  c++  java
  • Java Nashorn--Part 2

    在命令行中执行 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:UsersTurtusLi> 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:UsersTurtusLi> jjs -v
    Nashorn 1.8.0_102
    
    • -fv(-fullversion):Nashorn 的详细的系统版本号。
    PS C:UsersTurtusLi> jjs -fullversion
    nashorn full version 1.8.0_102-b14
    
    • -fx: 作为一个 JavaFX GUI 应用程序执行脚本。这允许 JavaFX 程序员利用 Nashorn 少写很多样板。
    • -h:列出帮助信息。
    • -scripting:开启 Nashorn 规范的脚本扩展功能。
  • 相关阅读:
    knowledge_maven
    problems_springboot
    problems_halo
    skills_oracle
    hive启动报错(整合spark)
    根据父ID聚合
    sql2005数据库远程备份
    waitfor的使用
    CTE+操作性语句(删除无主键的相同的多行数据)+CTE操作技巧
    SQL中的CTE,查询所有的子集(子集的子集)比游标效率高
  • 原文地址:https://www.cnblogs.com/IcanFixIt/p/6390130.html
Copyright © 2011-2022 走看看