《Java 1.8》Nashorn JavaScript支持

一、介绍

从JDK 1.8开始,Nashorn取代Rhino(JDK 1.6, JDK1.7)成为Java的嵌入式JavaScript引擎。Nashorn完全支持ECMAScript 5.1规范以及一些扩展。它使用基于JSR 292的新语言特性,其中包含在JDK 7中引入的 invokedynamic,将JavaScript编译成Java字节码。

与先前的Rhino实现相比,这带来了2到10倍的性能提升。

二、Java 中调用 JavaScript

package com.learn.demo;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class ScriptDemo {
    public static void main(String[] args) {
        try {
            String name = "Runoob";
            ScriptEngineManager script = new ScriptEngineManager();
            ScriptEngine engine = script.getEngineByName("Nashorn");
            engine.eval("print('"+name+"')");
            Integer result = (Integer) engine.eval("10 + 2");
            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

三、JavaScript 中调用 Java

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);

友情链接:

https://blog.csdn.net/chenhaotong/article/details/50254739

https://www.cnblogs.com/cynchanpin/p/6927278.html

https://www.cnblogs.com/top8/p/6207945.html

posted @ 2018-07-18 15:47  xylfjk  阅读(46)  评论(0)    收藏  举报