Java和JavaScript的相互调用

在JAVA中调用JavaScript

用Java8,Nashorn大大提高了JavaScript 引擎引入,以取代现有的Nashorn Java脚本引擎。Nashorn提供2至10倍更好的性能,因为它直接编译代码在存储器,并传递到字节码JVM.Nashorn使用invokedynamics函数,在Java7引入以提高性能。

使用ScriptEngineManager,JavaScript代码用Java编写可以被调用。

示例

Java8Tester.java
   
   
  1. import javax.script.ScriptEngineManager;
  2. import javax.script.ScriptEngine;
  3. import javax.script.ScriptException;
  4. public class Java8Tester {
  5. public static void main(String args[]){
  6. ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
  7. ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn");
  8. String name = "Mahesh";
  9. Integer result = null;
  10. try {
  11. nashorn.eval("print('" + name + "')");
  12. result = (Integer) nashorn.eval("10 + 2");
  13. }catch(ScriptException e){
  14. System.out.println("Error executing script: "+ e.getMessage());
  15. }
  16. System.out.println(result.toString());
  17. }
  18. }
结果如下:
Mahesh
12


在JavaScript中调用Java

下面的例子将展示如何导入和使用Java类的Java脚本。

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

sample.js
   
   
  1. var BigDecimal = Java.type('java.math.BigDecimal'); //js中引入Java类
  2. function calculate(amount, percentage) { //可以直接在js代码块中通过Java类实例,调用Java方法代码
  3. var result = new BigDecimal(amount).multiply(
  4. new BigDecimal(percentage)).divide(
  5. new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_EVEN);
  6. return result.toPlainString();
  7. }
  8. var result = calculate(568000000000000000023,13.9);
  9. print(result);

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

C:\JAVA>jjs sample.js

结果如下:

78952000000000000003.20
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值