Skip to content

matiwinnetou/J2V8

This branch is 1 commit ahead of, 180 commits behind eclipsesource/J2V8:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

283190a · Jun 14, 2017
May 15, 2015
Jan 16, 2015
May 4, 2016
May 9, 2017
Apr 4, 2017
Jun 13, 2017
May 29, 2017
Jun 14, 2017
May 15, 2015
May 1, 2017
Aug 28, 2014
May 3, 2017
Dec 8, 2015
May 9, 2017
Apr 6, 2017
May 9, 2017
Jun 2, 2017
Jan 16, 2015
Feb 24, 2015
May 24, 2017
May 9, 2017
Jul 19, 2016
Nov 13, 2014
Nov 4, 2015
Nov 4, 2015
Apr 10, 2015
Jun 28, 2016
Apr 10, 2015
Jun 2, 2017
Nov 4, 2015
Feb 17, 2015
Apr 10, 2015

Repository files navigation

J2V8

Build Status Maven Central

J2V8 is a set of Java bindings for V8. J2V8 focuses on performance and tight integration with V8. It also takes a 'primitive first' approach, meaning that if a value can be accessed as a primitive, then it should be. This forces a more static type system between the JS and Java code, but it also improves the performance since intermediate Objects are not created.

We developed J2V8 as a high performance engine for our multi-platform mobile toolkit tabris.js and it is a great choice for executing JavaScript on Android devices.

Building J2V8

Building J2V8 requires building both the native parts and the Java library (.jar file). To build the native parts we first build node.js as a library and then statically link J2V8 to that. The Java parts are built with maven.

Building on MacOS

 sh ./build-node.sh
 sh ./buildJ2V8_macos.sh
 mvn clean verify

Building on Linux

export CCFLAGS="${CCFLAGS} -fPIC"
export CXXFLAGS="${CXXFLAGS} -fPIC"
export CPPFLAGS="${CPPFLAGS} -fPIC"
#sh ./build-node.sh
cp -r /data/jenkins/node .
cd jni
g++ -I../node -I../node/deps/v8 -I../node/deps/v8/include \
    -I../node/src -I /data/jenkins/tools/hudson.model.JDK/jdk-7/include/ \
    -I /data/jenkins/tools/hudson.model.JDK/jdk-7/include/linux  \
    com_eclipsesource_v8_V8Impl.cpp -std=c++11 -fPIC -shared -o libj2v8_linux_x86_64.so \
    -Wl,--whole-archive ../node/out/Release/libnode.a  -Wl,--no-whole-archive \
    -Wl,--start-group \
                      ../node/out/Release/libv8_libbase.a \
                      ../node/out/Release/libv8_libplatform.a \
                      ../node/out/Release/libv8_base.a \
                      ../node/out/Release/libv8_nosnapshot.a \
                      ../node/out/Release/libuv.a \
                      ../node/out/Release/libopenssl.a \
                      ../node/out/Release/libhttp_parser.a \
                      ../node/out/Release/libgtest.a \
                      ../node/out/Release/libzlib.a \
                      ../node/out/Release/libcares.a \
    -Wl,--end-group \
    -lrt -D NODE_COMPATIBLE=1
mvn clean verify

This will build J2V8 with node.js support. To disable this support, remove the -D NODE_COMPATIBLE=1 option.

Building for Android

Building J2V8 for Android requires Docker.

./docker/build.sh
./gradlew assembleRelease

This will build J2V8 as an AAR for API 19 minimum with node.js support.

Tutorials

Articles

Presentations

Other Resources

Here is a list of articles I've written on J2V8 http://eclipsesource.com/blogs/tag/j2v8/.

Who is using J2V8?

Here are some projects that use J2V8:

License

The code is published under the terms of the Eclipse Public License, version 1.0.

About

Java Bindings for V8

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 75.5%
  • C++ 13.0%
  • C 9.5%
  • HTML 1.0%
  • Shell 0.6%
  • Objective-C 0.3%
  • Other 0.1%