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

《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.kler.cn/a/540109.html

相关文章:

  • 如何实现图片式按钮的功能
  • MacBook Pro M2安装deepseek
  • 利用UNIAPP实现短视频上下滑动播放功能
  • C# 封送和远程编程介绍
  • 【C++学习篇】C++11第二期学习
  • 【Ubuntu】安装和使用Ollama的报错处理集合
  • 小红书自动化:如何利用Make批量生成爆款笔记
  • Java面试题2025-JVM
  • 计算机毕业设计SparkStreaming+Kafka广告推荐系统 广告预测 广告数据分析可视化 广告爬虫 大数据毕业设计 深度学习 机器学习
  • MIT开源7B推理模型Satori:用行动思维链进行强化学习,增强自回归搜索
  • 用Llama Factory单机多卡微调Qwen2.5时报torch.OutOfMemoryError: CUDA out of memory的解决办法
  • 寒假2.8
  • 线上hbase rs 读写请求个数指标重置问题分析
  • ssm校园二手交易平台小程序
  • Axios 的原理
  • Vim配置AI Copilot提升编码效率
  • 使用airtest框架(跨平台)做UI自动化
  • 关系模型的数据结构及形式化定义
  • 【C语言】传值调用与传址调用详解
  • FPGA实现SDI视频解码转UltraScale GTH光口传输,基于GS2971+Aurora 8b/10b编解码架构,提供2套工程源码和技术支持
  • 【RandLA-Net】大场景语义分割网络RandLA-Net复现
  • 【react】react+umi4
  • 【centos安装mysql数据库】详细版
  • Unity3D引擎首次用于光伏仿真设计软件爆火
  • idea services快速创建多个服务实例
  • Redis简介与基础命令