Javet¶
Javet is Java + V8 (JAVa + V + EighT). It is an awesome way of embedding Node.js and V8 in Java.
If you like my work, please Star this project. And, you may follow me @sjtucaocao, or visit http://caoccao.blogspot.com/. And the official support channel is at discord.
💖 If you use Mac OS (x86_64), please be aware that the Mac OS (x86_64) build will discontinue anytime because I'm no longer able to build new versions of V8 with my MacBook Air mid-2012. Please donate to support me purchasing a new Mac OS (x86_64) device. Or, if you have a retired Mac OS (x86_64) device and are fine with mailing it to me, that will also be great. Thank you for supporting Javet.
💖 If you use Mac OS (arm64), I bought an M2 device and now am able to build it.
Major Features¶
Linux (x86_64) + Mac OS (x86_64, arm64) + ️Windows (x86_64)
Android (arm, arm64, x86 and x86_64)
Node.js
v18.16.0
+ V8v11.4.183.14
Dynamic switch between Node.js and V8 mode (Which mode do you prefer?)
Polyfill V8 mode with Javenode
V8 API exposure in JVM
JavaScript and Java interop
Native BigInt and Date
Javet engine pool
Easy spring integration
Live debug with Chrome DevTools
Quick Start¶
Dependency¶
Maven¶
<!-- Linux and Windows (x86_64) -->
<dependency>
<groupId>com.caoccao.javet</groupId>
<artifactId>javet</artifactId>
<version>2.2.0</version>
</dependency>
<!-- Mac OS (x86_64 and arm64) -->
<dependency>
<groupId>com.caoccao.javet</groupId>
<artifactId>javet-macos</artifactId>
<version>2.2.0</version>
</dependency>
Gradle Kotlin DSL¶
implementation("com.caoccao.javet:javet:2.2.0") // Linux and Windows (x86_64)
implementation("com.caoccao.javet:javet-macos:2.2.0") // Mac OS (x86_64 and arm64)
implementation("com.caoccao.javet:javet-android:2.2.0") // Android (arm, arm64, x86 and x86_64)
Gradle Groovy DSL¶
implementation 'com.caoccao.javet:javet:2.2.0' // Linux and Windows (x86_64)
implementation 'com.caoccao.javet:javet-macos:2.2.0' // Mac OS (x86_64 and arm64)
implementation 'com.caoccao.javet:javet-android:2.2.0' // Android (arm, arm64, x86 and x86_64)
Hello Javet¶
// Node.js Mode
try (V8Runtime v8Runtime = V8Host.getNodeInstance().createV8Runtime()) {
System.out.println(v8Runtime.getExecutor("'Hello Javet'").executeString());
}
// V8 Mode
try (V8Runtime v8Runtime = V8Host.getV8Instance().createV8Runtime()) {
System.out.println(v8Runtime.getExecutor("'Hello Javet'").executeString());
}