Java8-JavaScript-Nashorn

news/2025/4/2 13:47:29/

文章目录

  • Java8-JavaScript-Nashorn
    • 案例:Java代码执行JavaScript文件
    • 案例:Java源代码嵌入JavaScript代码
    • 案例:Java文件中设置JavaScript变量

Java8-JavaScript-Nashorn

Nashorn是JavaScript引擎。它用于在JVM(Java虚拟机)上动态执行JavaScript代码。Java提供了用于执行JavaScript代码的命令行工具jjs。

您可以通过使用jjs命令行工具并嵌入到Java源代码中来执行JavaScript代码。

案例:Java代码执行JavaScript文件

您可以直接从Java文件执行JavaScript文件。在以下代码中,我们将在FileReader类的帮助下读取文件hello.js。

import javax.script.*;  
import java.io.*;  
public class NashornExample {  public static void main(String[] args) throws Exception{  // Creating script engine  ScriptEngine ee = new ScriptEngineManager().getEngineByName("Nashorn");  // Reading Nashorn file  ee.eval(new FileReader("js/hello.js"));  }  
}  

输出结果为:

Hello Nashorn

hello.js内容如下:

var hello = function(){  print("Hello Nashorn");  
};  
hello();  

案例:Java源代码嵌入JavaScript代码

您可以将JavaScript代码嵌入Java源文件中。Java编译器不会抱怨,但是当您拥有大量源代码时,这不是一个好习惯。在以下示例中,我们正在评估JavaScript代码。未来可能不会支持

import javax.script.*;  
public class NashornExample {  public static void main(String[] args) throws Exception{  // Creating script engine  ScriptEngine ee = new ScriptEngineManager().getEngineByName("Nashorn");  // Evaluating Nashorn code  ee.eval("print('Hello Nashorn');");  }  
}  

输出结果为:

Hello Nashorn

案例:Java文件中设置JavaScript变量

您可以将值传递给Java文件中的JavaScript变量。在下面的示例中,我们将变量绑定并传递到JavaScript文件。

文件: hello.js

print("Hello "+name);

文件: NashornExample.java

import javax.script.*;  
import java.io.*;  
public class NashornExample {  public static void main(String[] args) throws Exception{  // 创建脚本引擎ScriptEngine ee = new ScriptEngineManager().getEngineByName("Nashorn");  //绑定脚本并定义脚本的作用域  Bindings bind = ee.getBindings(ScriptContext.ENGINE_SCOPE);  bind.put("name", "Nashorn");  // 执行ee.eval(new FileReader("js/hello.js"));  }  
}  

在这里插入图片描述

点赞 -收藏-关注-便于以后复习和收到最新内容
有其他问题在评论区讨论-或者私信我-收到会在第一时间回复
在本博客学习的技术不得以任何方式直接或者间接的从事违反中华人民共和国法律,内容仅供学习、交流与参考
免责声明:本文部分素材来源于网络,版权归原创者所有,如存在文章/图片/音视频等使用不当的情况,请随时私信联系我、以迅速采取适当措施,避免给双方造成不必要的经济损失。
感谢,配合,希望我的努力对你有帮助^_^

http://www.ppmy.cn/news/290761.html

相关文章

C99标准和C89标准的区别

转载出处:http://blog.csdn.net/jsufcz/article/details/6051836 GCC 支持C99,通过 --std c99命令行参数开启。 例如:gcc --std c99 test.c 1、增加restrict指针   C99中增加了适用于指针的restrict类型修饰符,它是初始访问指…

诺基亚N95 8GB/N96对比评测

风格各异的外观造型 作为原本诺基亚N系列的旗舰机型,N95 8GB具备极为霸气的外观造型与创新的双向滑盖机身造型设计,而这两点要素,在全新一代N系列旗舰机型N96上得以延续。尽管说N96没有沿用N95 8GB的外观造型,但其却同样采用了双…

l298n用法

可以用上面的图测试驱动、电机、单片机好不好用 这个是原理,很简单的驱动模块,便宜又好用

SUL(supplementary Uplink)

微信公众号同步更新,欢迎关注同名“modem协议笔记” 5G 载波属于高频段,相同距离下, 频率越高则衰减得越厉害,因而会存在5G 小区覆盖受限的问题。NR中最值得关注的就是UE 的上行覆盖问题。于是,就提出了 SUL 技术&…

Cellular/Wifi/Bluetooth频率

Cellular NR频率 3GPP R17定义的NR FR1频段如下表: 图片来自于38.101 国内常用FDD频段: n1: 2100MHz~2170MHz,共79MHz带宽 n3: 1805MHz~1880MHz,共75MHz带宽 n5: 869MHz~894MHz,共25MHz带宽 n8: 925MHz~960MHz&am…

Android Radio实战——常见问题总结(十七)

本篇文章主要分析总结开发中遇到的常见问题,会不定期更新添加内容。 1、找不到Radio服务 问题背景 项目代码从 Android 9.0 迁移到 Android 11 上。车机上电后出现如下错误: android.os.ServiceManager$ServiceNotFoundException: No service published for: broadcastrad…

QxRibbon 知:搭建 CMake 构建环境

文章目录 前言安装 cmake问题处理qtcreator 检测 CMake 异常 参考资料 前言 高版本的 QtCreator 已经集成了 cmake 工具,并支持以 CMakelists.txt 文件作为工程开发项目。 https://www.qt.io/blog/2019/07/30/update-on-cmake-project-support-in-qt-creator 安装…