当前位置:首页 > Java

java如何执行js

2026-03-23 18:21:33Java

执行 JavaScript 的常用方法

在 Java 中执行 JavaScript 代码可以通过多种方式实现,以下是几种常见的方法:

使用 ScriptEngineManager

Java 提供了 javax.script 包,其中包含 ScriptEngineManager 类,可用于执行 JavaScript 代码。这是最常用的方法。

java如何执行js

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class ExecuteJavaScript {
    public static void main(String[] args) {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("JavaScript");

        try {
            engine.eval("var x = 10; var y = 20; var z = x + y; print(z);");
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }
}

使用 Nashorn 引擎

Nashorn 是 Java 8 引入的 JavaScript 引擎,性能较好。Java 15 之后 Nashorn 被移除,但在 Java 8-14 中可用。

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class NashornExample {
    public static void main(String[] args) throws Exception {
        ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
        engine.eval("print('Hello from JavaScript')");
    }
}

使用 GraalVM JavaScript

对于 Java 11 及更高版本,可以使用 GraalVM 提供的 JavaScript 引擎。

java如何执行js

import org.graalvm.polyglot.Context;

public class GraalVMExample {
    public static void main(String[] args) {
        try (Context context = Context.create("js")) {
            context.eval("js", "print('Hello from GraalVM JavaScript')");
        }
    }
}

使用第三方库

Rhino 是一个较早的 JavaScript 引擎,适用于较老版本的 Java。

import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;

public class RhinoExample {
    public static void main(String[] args) {
        Context rhinoContext = Context.enter();
        try {
            Scriptable scope = rhinoContext.initStandardObjects();
            Object result = rhinoContext.evaluateString(scope, "3 + 2", "JavaScript", 1, null);
            System.out.println(Context.toString(result));
        } finally {
            Context.exit();
        }
    }
}

注意事项

  • Java 15 及以上版本移除了 Nashorn 引擎,需使用 GraalVM 或其他替代方案
  • 执行外部 JavaScript 文件可使用 engine.eval(new FileReader("script.js"))
  • 脚本引擎可以访问 Java 对象,实现 Java 与 JavaScript 的交互
  • 性能敏感场景建议评估不同引擎的表现

安全考虑

执行 JavaScript 代码时需注意:

  • 避免执行不可信的代码
  • 考虑设置脚本引擎的安全管理器
  • 限制脚本的资源访问权限
  • 对输入进行严格的验证和过滤

标签: javajs
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

如何配置java环境

如何配置java环境

下载JDK安装包 访问Oracle官网或OpenJDK官网,选择适合操作系统的JDK版本(如Windows、macOS或Linux)。下载完成后,运行安装程序并按照提示完成安装。 设置环境变量 右键…