Java和JavaScript的相互调用

来源:互联网 发布:查看ip端口是否打开 编辑:程序博客网 时间:2024/05/16 05:17

在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. }
结果如下:
Mahesh12


在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 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信游戏刺激战场电脑卡怎么办 电脑更新了以前的东西都没了怎么办 安装黑苹果鼠标键盘不能用怎么办 苹果开机卡在白底黑苹果怎么办 信长之野望14没有剧情触发怎么办 玩cf手游手机屏幕摩擦力大怎么办 网吧有战地1没有橘子平台怎么办 俩人打仗了对方想讹我怎么办 环世界模组装多了打不开怎么办 手机百度云视频播放画面太小怎么办 ps文件说数据似乎已经损坏怎么办 百度云中的压缩包下载的很慢怎么办 游戏压缩出现未知错误或损坏怎么办 百度云里的压缩包解压后损坏怎么办 联创打印时显示压缩文件失败怎么办 电脑的软件打开出现未知格式怎么办 图片只突出人物边上全黑怎么办 合金机兵存档密码忘了怎么办 手机网页验证码无法加载插件怎么办 绝地求生次激战场机型不支持怎么办 木茷生存中文版安装包损坏了怎么办 手机下载软件显示安装包损坏怎么办 不小心把qq图片删了怎么办 奶水不足宝宝不好好吸奶怎么办 膀胱切除前列腺切除阴茎不硬怎么办 小孩的睾丸睾丸碰肿了怎么办 怎么判断小孩子的睾丸没下来怎么办 怀孕39周腰酸屁股酸疼该怎么办 我儿子18岁睾丸筋鼓起来怎么办 去医院检查说精子跑的慢怎么办 多囊卵巢综合症引起屁股增大怎么办 蚊子咬了肿了挠破了流水怎么办 血糖高引发的睾丸一直烂怎么办? 被洪水淹过的猪后期怎么办 做睾丸阴囊彩超阴茎突然勃起怎么办 阴茎冠状沟皮肤感染总不愈合怎么办 不小心咬到孩子破皮了怎么办 小孩子不小心碰到脸黑了一块怎么办 眼睛不小心碰到了里面红了怎么办 八个月宝宝睾丸还沒掉下来怎么办 孩子背部皮肤有一块皮肤很脏怎么办