33

我正在寻找一种将 Google JavaScript 引擎 V8 嵌入到我的 Java 应用程序中的解决方案。

你有一些解决方案吗?

4

3 回答 3

26

您可以使用 J2V8 https://github.com/eclipsesource/J2V8。它甚至可以在Maven Central 中使用。

下面是你好,世界!程序使用 J2V8。

package com.example;

import com.eclipsesource.v8.V8;

public class EclipseCon_snippet5 {


    public static class Printer {
        public void print(String string) {
            System.out.println(string);
        }
    }

    public static void main(String[] args) {
        V8 v8 = V8.createV8Runtime();
        v8.registerJavaMethod(new Printer(), "print", "print", new Class<?>[]{String.class});
        v8.executeVoidScript( "print('Hello, World!');" );
        v8.release(true);
    }

}

您需要在 pom.xml 中指定您的平台。J2V8 目前支持 win32_x86、macosx_x86_64、android_x86 和 android_armv7l。它们不同的原因是因为捆绑了本机绑定和 V8 的预构建版本。

例如,您可以在 MacOS 上使用。

<dependencies>
    <dependency>
        <groupId>com.eclipsesource.j2v8</groupId>
        <artifactId>j2v8_macosx_x86_64</artifactId>
        <version>2.0</version>
        <scope>compile</scope>
    </dependency>
</dependencies>
于 2015-03-06T18:31:05.453 回答
17

也许你可以试试 Jav8,它基于 Google V8 Javascript 引擎实现了 Java Scripting API (JSR223)。我从几周前就开始研究它,它可以支持最简单的场景。

http://code.google.com/p/jav8/

于 2011-07-27T16:17:02.227 回答
5

没有任何直接的方法可以做到这一点,但是,我建议RhinoJNI。前者更容易,但是,不是 v8,后者是困难和挑剔,但是,v8。

或者,您可以使用单独的 v8 进程,并使用 Java 与之对话。

于 2011-06-16T09:47:22.303 回答