在 Java 中执行 JavaScript 代码有几种方式,我将为你介绍其中的三种常见方式:使用 Java 的内置脚本引擎、使用第三方库 GraalVM Polyglot 和使用 WebView 控件。以下是每种方式的详细步骤和示例代码。
Java 提供了一个内置的脚本引擎框架,可以用于执行不同脚本语言,包括 JavaScript。在 Java 中执行 JavaScript 的步骤如下:
示例代码:
import javax.script.*;
public class JavaScriptExecution {
public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
String script = "var x = 5; var y = 10; x + y;";
Object result = engine.eval(script);
System.out.println("Result: " + result);
}
}
Maven 依赖:
<dependency>
<groupId>javax.script</groupId>
<artifactId>javax.script-api</artifactId>
<version>1.1</version>
</dependency>
GraalVM 提供了一个 Polyglot API,可以在 Java 中执行多种语言,包括 JavaScript。这种方式通常比标准的脚本引擎更高效。执行 JavaScript 的步骤如下:
示例代码:
import org.graalvm.polyglot.*;
public class JavaScriptExecution {
public static void main(String[] args) {
try (Context context = Context.create()) {
Value result = context.eval("js", "var x = 5; var y = 10; x + y;");
System.out.println("Result: " + result.asInt());
}
}
}
Maven 依赖:
<dependency>
<groupId>org.graalvm.sdk</groupId>
<artifactId>graal-sdk</artifactId>
<version>xxx</version> <!-- 使用适当的版本号 -->
</dependency>
如果你正在使用 JavaFX,你可以使用 WebView 控件来执行 JavaScript。这种方式适用于构建带有嵌入式浏览器的应用程序。执行 JavaScript 的步骤如下:
示例代码:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class JavaScriptExecution extends Application {
@Override
public void start(Stage primaryStage) {
WebView webView = new WebView();
WebEngine engine = webView.getEngine();
String script = "var x = 5; var y = 10; x + y;";
Object result = engine.executeScript(script);
System.out.println("Result: " + result);
primaryStage.setScene(new Scene(webView, 800, 600));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Maven 依赖:
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-web</artifactId>
<version>xxx</version> <!-- 使用适当的版本号 -->
</dependency>
请注意,上述示例中的版本号可能需要根据你的实际情况进行调整。另外,示例代码中的 JavaScript 代码只是简单的加法操作,你可以根据需要修改执行的 JavaScript 代码。