Stephan
Stephan

Reputation: 43083

How to embed V8 in a Java application?

I'm looking for a solution for embedding the Google JavaScript engine V8 in my Java application.

Have you got some solutions?

Upvotes: 34

Views: 32295

Answers (4)

G33RY
G33RY

Reputation: 148

For the new visitors, I would say the best solution right now is Javet. It supports the newest V8 and Node.js engines.

Upvotes: 1

irbull
irbull

Reputation: 2530

You can use J2V8 https://github.com/eclipsesource/J2V8. It's even available in Maven Central.

Below is a Hello, World! program using 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);
    }

}

You will need to specify your platform in your pom.xml. J2V8 currently supports win32_x86, macosx_x86_64, android_x86 and android_armv7l. The reason they are different is because of the native bindings and pre-build version of V8 that is bundled.

For example, on MacOS you can use.

<dependencies>
    <dependency>
        <groupId>com.eclipsesource.j2v8</groupId>
        <artifactId>j2v8_macosx_x86_64</artifactId>
        <version>2.0</version>
        <scope>compile</scope>
    </dependency>
</dependencies>

Upvotes: 27

Dhaivat Pandya
Dhaivat Pandya

Reputation: 6536

There's not really any straightforward way you can do it, but, I would suggest Rhino or the JNI. The former is easier, but, not v8, the latter is hard and finicky, but, v8.

Or, you can use a seperate v8 process, and talk with it with Java.

Upvotes: 6

Flier Lu
Flier Lu

Reputation: 300

Maybe you could try Jav8, which implement the Java Scripting API (JSR223) base on the Google V8 Javascript engine. I'm working on it from weeks ago, and it could support most simple scenes.

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

Upvotes: 17

Related Questions