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

Ste*_*han 28 javascript java v8 embedded-v8

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

你有一些解决方案吗?

irb*_*ull 18

您可以使用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);
    }

}
Run Code Online (Sandbox Code Playgroud)

您需要在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>
Run Code Online (Sandbox Code Playgroud)

  • 我在Android上使用v4.2.0(AAR)(arm + x86),效果很好.它闪电般快速,API真的很酷,深思熟虑.它为我节省了很多工作.否则,我必须将大量的TypeScript代码移植到Java.谢谢@irbull,你就是男人! (2认同)
  • 截至 2019 年 1 月,@irbull 已表示他打算缩小 J2V8 的范围以仅支持 Android,并且仅支持非 NodeJS JavaScript。所以如果你想要一种通用的方式将 V8 集成到 Java 中,J2V8 将不再是它。 (2认同)

小智 15

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

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


Dha*_*dya 5

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

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