美文网首页java
Java 8 - Nashorn JavaScript

Java 8 - Nashorn JavaScript

作者: 全能程序猿 | 来源:发表于2017-07-19 21:04 被阅读18次

    Java 8 - Nashorn JavaScript


    1 Java 8-概述
    2 Java 8 - Lambda表达式
    3 Java 8 - 方法引用
    4 Java8-Functional Interfaces函数式接口
    5 Java 8 - 默认方法
    6 Java 8 - Streams
    7 Java 8 - Optional Class可选类
    8 Java 8 - Nashorn JavaScript
    9 Java 8 - New Date/Time API

    使用Java 8,Nashorn,引入了一个大大改进的JavaScript引擎来替代现有的Rhino。Nashorn提供2到10倍的性能,因为它直接编译内存中的代码,并将字节码传递给JVM。Nashorn使用在Java 7中引入的invokedynamics功能来提高性能。

    原文链接:http://blogxinxiucan.sh1.newtouch.com/2017/07/19/Java-8-Nashorn-JavaScript/

    JJS

    对于Nashorn引擎,JAVA 8引入了一个新的命令行工具jjs来在控制台执行JavaScript代码。

    解释js文件

    在c:> JAVA文件夹中创建并保存文件sample.js。

    sample.js
    print('Hello World!');
    

    打开控制台并使用以下命令。

    $jjs sample.js
    

    它将产生以下输出:

    Hello World!
    

    jjs在交互模式
    打开控制台并使用以下命令。

    $jjs
    jjs> print("Hello, World!")
    Hello, World!
    jjs> quit()
    >>
    

    通过参数
    打开控制台并使用以下命令。

    $jjs -- a b c
    jjs> print('letters: ' +arguments.join(", "))
    letters: a, b, c
    jjs>
    

    从Java调用JavaScript
    使用ScriptEngineManager,可以在Java中调用和解释JavaScript代码。


    使用您所选择的任何编辑器(例如C:> JAVA)创建以下Java程序。

    Java8Tester.java

    import javax.script.ScriptEngineManager;
    import javax.script.ScriptEngine;
    import javax.script.ScriptException;
    
    public class Java8Tester {
       public static void main(String args[]){
       
          ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
          ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn");
            
          String name = "Mahesh";
          Integer result = null;
          
          try {
             nashorn.eval("print('" + name + "')");
             result = (Integer) nashorn.eval("10 + 2");
             
          }catch(ScriptException e){
             System.out.println("Error executing script: "+ e.getMessage());
          }
          
          System.out.println(result.toString());
       }
    }
    

    验证结果
    使用javac编译器编译类,如下所示:

    $javac Java8Tester.java
    

    现在运行Java8Tester如下 -

    $java Java8Tester
    

    应该产生以下结果 -

    Mahesh
    12
    

    从JavaScript调用Java

    以下示例说明如何在java脚本中导入和使用Java类 -

    sample.js

    var BigDecimal = Java.type('java.math.BigDecimal');
    
    function calculate(amount, percentage) {
    
       var result = new BigDecimal(amount).multiply(
       new BigDecimal(percentage)).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_EVEN);
       
       return result.toPlainString();
    }
    
    var result = calculate(568000000000000000023,13.9);
    print(result);
    

    打开控制台并使用以下命令。

    $jjs sample.js
    

    它应该产生以下输出 -

    78952000000000000003.20

    相关文章

      网友评论

        本文标题:Java 8 - Nashorn JavaScript

        本文链接:https://www.haomeiwen.com/subject/aljrkxtx.html