java实现js
Java 实现 JavaScript 功能
在 Java 中实现 JavaScript 功能通常涉及以下几种方法:
使用 ScriptEngine
Java 提供了 javax.script 包,可以通过 ScriptEngine 来执行 JavaScript 代码。以下是示例代码:

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class JsInJava {
public static void main(String[] args) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
try {
engine.eval("var x = 10; var y = 20; var z = x + y;");
System.out.println(engine.eval("z"));
} catch (ScriptException e) {
e.printStackTrace();
}
}
}
使用 Nashorn 引擎 Nashorn 是 Java 8 引入的 JavaScript 引擎,性能优于 Rhino 引擎:
import jdk.nashorn.api.scripting.NashornScriptEngineFactory;
public class NashornExample {
public static void main(String[] args) throws ScriptException {
NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
ScriptEngine engine = factory.getScriptEngine();
engine.eval("print('Hello from JavaScript!')");
}
}
使用 GraalVM GraalVM 提供了更现代的 JavaScript 支持:

import org.graalvm.polyglot.Context;
public class GraalVMExample {
public static void main(String[] args) {
try (Context context = Context.create()) {
context.eval("js", "print('Hello from GraalVM JavaScript')");
}
}
}
Java 调用 JavaScript 函数 可以在 JavaScript 中定义函数并在 Java 中调用:
ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
engine.eval("function add(a, b) { return a + b; }");
Invocable invocable = (Invocable) engine;
Object result = invocable.invokeFunction("add", 10, 20);
System.out.println(result); // 输出 30
注意事项
- Java 15 后 Nashorn 已被移除,需要使用 GraalVM 或其他替代方案
- 脚本引擎需要处理异常
- 性能敏感场景应考虑其他方案
这些方法可以让 Java 程序具备执行 JavaScript 代码的能力,适用于需要动态脚本支持的场景。






