如何在Java应用程序中嵌入V8?

时间:2011-06-16 09:44:57

标签: java javascript v8 embedded-v8

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

你有解决方案吗?

3 个答案:

答案 0 :(得分:17)

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

以下是Hello,World!程序使用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>

答案 1 :(得分:15)

也许您可以尝试Jav8,它基于Google V8 Javascript引擎实现Java Scripting API(JSR223)。几个星期前我正在研究它,它可以支持大多数简单的场景。

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

答案 2 :(得分:5)

你真的没有任何直截了当的方式,但我会建议RhinoJNI。前者更容易,但是,不是v8,后者很难挑剔,但是,v8。

或者,您可以使用单独的v8进程,并使用Java进行通信。