当前位置: 首页 > news >正文

《Java核心技术 卷II》Java平台的脚本机制

Java平台的脚本机制

脚本引擎:可以执行用某种特定语言编写的脚本类库。

ScriptEngineManager

虚拟机启动时用它发现可用的脚步引擎。

调用getEngineFactories来枚举这些引擎。

知道所需要的引擎可以通过名字、MIME类型或拓展文件来请求它。

var manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");

通过类路径提供Ja让包来添加更多的语言支持。

oracle JDK以往都包含一个JavaScript引擎,但在Java15中被移除。

下载安装JavaScript引擎的Jar包。

如果你想在 Java 程序中使用 JavaScript 引擎,可以使用 Rhino 或 Nashorn 等,它们是 Java 中内置的 JavaScript 引擎,不需要额外下载 Jar 包(对于 Java 8 及以下版本,使用 Rhino;对于 Java 8 到 Java 14,Nashorn 是内置的)。

如果你使用的是 Java 15 及以上,Nashorn 被弃用,你可以考虑使用 GraalVM 的 JavaScript 引擎,你可以通过 Maven 或 Gradle 等构建工具添加相应的依赖。

<dependency><groupId>org.graalvm.js</groupId><artifactId>js</artifactId><version>22.3.0</version>
</dependency>

D:\Code成立\software\apache-maven-3.9.3\repo\org\graalvm\js\js\22.3.0\js-22.3.0.jar

整体了解详情请参考:GraalVM

由于暂时不想装GraalVM,案例给出的是JDK1.8.

package 第8章脚本;import java.util.Arrays;
import java.util.List;import javax.script.ScriptEngine;
import javax.script.ScriptEngineFactory;
import javax.script.ScriptEngineManager;public class JSScriptEngineTest {public static void main(String[] args) {ScriptEngineManager manager = new ScriptEngineManager();List<ScriptEngineFactory> slist =  manager.getEngineFactories();System.out.println(Arrays.toString(slist.toArray()));ScriptEngine js =  manager.getEngineByName("JavaScript");System.out.println(js);ScriptEngineFactory jsFactory = slist.get(0);List<String> jsNames = jsFactory.getNames(); List<String> jsExtensions = jsFactory.getExtensions(); List<String> jsMimeTypes = jsFactory.getMimeTypes(); System.out.println(jsNames);System.out.println(jsExtensions);System.out.println(jsMimeTypes);}}

http://www.lryc.cn/news/534280.html

相关文章:

  • Ollama + AnythingLLM + Deepseek r1 实现本地知识库
  • 记录 | WPF基础学习Style局部和全局调用
  • PromptSource安装报错
  • Leetcode 3448. Count Substrings Divisible By Last Digit
  • Maven 下载与配置教程:附百度网盘地址
  • 基于 GEE 的网格化降雨数据可视化与时间序列分析
  • java-初识List
  • windows下搭建tftp服务器+网络启动Linux
  • DeepSeek使用技巧大全(含本地部署教程)
  • PHP 面向对象编程详解
  • openbmc web/redfish到底层设计(持续更新...)
  • Linux init
  • Maven 版本管理与 SNAPSHOT 详解
  • TCP三次握手全方面详解
  • 【C#】一维、二维、三维数组的使用
  • MIT开源7B推理模型Satori:用行动思维链进行强化学习,增强自回归搜索
  • 【JVM详解二】常量池
  • w200基于spring boot的个人博客系统的设计与实现
  • 【算法】快速排序算法的实现:C 和 C++ 版本
  • 前沿科技一览未来发展趋势
  • js滚动到页面最底部
  • 视觉硬件选型和算法选择(CNN)
  • Mybatis篇
  • 【Python】元组
  • 【AI实践】deepseek支持升级git
  • 【AI实践】Cursor上手-跑通Hello World和时间管理功能
  • Redis数据库(二):Redis 常用的五种数据结构
  • 【计组】实验五 J型指令设计实验
  • ubuntu 本地部署deepseek r1 蒸馏模型
  • RestTemplate Https 证书访问错误