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 https://blog.caoccao.com/ or https://caoccao.blogspot.com/. And the official support channel is at discord.
💖 If you like my work, please donate to support me. If you have a retired Mac OS (x86_64) device and are fine with mailing it to me, that will be great because I don't have such device to support the community. Thank you for supporting Javet.
Major Features¶
CPU Arch |
Android |
Linux |
MacOS |
Windows |
---|---|---|---|---|
x86 |
✔️ |
❌ |
❌ |
❌ |
x86_64 |
✔️ |
✔️ |
✔️ |
✔️ |
arm |
✔️ |
❌ |
❌ |
❌ |
arm64 |
✔️ |
✔️ |
✔️ |
❌ |
Node.js
v22.12.0
+ V8v13.2.152.16
i18n and non-i18n
Dynamic switch between Node.js and V8 mode
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
AST analysis with swc4j
JS, TS, JSX, TSX transformation and transpilation with swc4j
Enhance JVM via Byte-code with JavetBuddy
Live interaction with JavetShell
Quick Start¶
Dependency¶
Maven¶
<!-- Core (Must-have) -->
<dependency>
<groupId>com.caoccao.javet</groupId>
<artifactId>javet</artifactId>
<version>4.1.1</version>
</dependency>
<!-- Node.js Linux (x86_64) -->
<dependency>
<groupId>com.caoccao.javet</groupId>
<artifactId>javet-node-linux-x86_64</artifactId>
<version>4.1.1</version>
</dependency>
<!-- Node.js Linux (arm64) -->
<dependency>
<groupId>com.caoccao.javet</groupId>
<artifactId>javet-node-linux-arm64</artifactId>
<version>4.1.1</version>
</dependency>
<!-- Node.js Mac OS (x86_64) -->
<dependency>
<groupId>com.caoccao.javet</groupId>
<artifactId>javet-node-macos-x86_64</artifactId>
<version>4.1.1</version>
</dependency>
<!-- Node.js Mac OS (arm64) -->
<dependency>
<groupId>com.caoccao.javet</groupId>
<artifactId>javet-node-macos-arm64</artifactId>
<version>4.1.1</version>
</dependency>
<!-- Node.js Windows (x86_64) -->
<dependency>
<groupId>com.caoccao.javet</groupId>
<artifactId>javet-node-windows-x86_64</artifactId>
<version>4.1.1</version>
</dependency>
<!-- V8 Linux (x86_64) -->
<dependency>
<groupId>com.caoccao.javet</groupId>
<artifactId>javet-v8-linux-x86_64</artifactId>
<version>4.1.1</version>
</dependency>
<!-- V8 Linux (arm64) -->
<dependency>
<groupId>com.caoccao.javet</groupId>
<artifactId>javet-v8-linux-arm64</artifactId>
<version>4.1.1</version>
</dependency>
<!-- V8 Mac OS (x86_64) -->
<dependency>
<groupId>com.caoccao.javet</groupId>
<artifactId>javet-v8-macos-x86_64</artifactId>
<version>4.1.1</version>
</dependency>
<!-- V8 Mac OS (arm64) -->
<dependency>
<groupId>com.caoccao.javet</groupId>
<artifactId>javet-v8-macos-arm64</artifactId>
<version>4.1.1</version>
</dependency>
<!-- V8 Windows (x86_64) -->
<dependency>
<groupId>com.caoccao.javet</groupId>
<artifactId>javet-v8-windows-x86_64</artifactId>
<version>4.1.1</version>
</dependency>
Gradle Kotlin DSL¶
implementation("com.caoccao.javet:javet:4.1.1") // Core (Must-have)
implementation("com.caoccao.javet:javet-node-linux-arm64:4.1.1")
implementation("com.caoccao.javet:javet-node-linux-x86_64:4.1.1")
implementation("com.caoccao.javet:javet-node-macos-arm64:4.1.1")
implementation("com.caoccao.javet:javet-node-macos-x86_64:4.1.1")
implementation("com.caoccao.javet:javet-node-windows-x86_64:4.1.1")
implementation("com.caoccao.javet:javet-v8-linux-arm64:4.1.1")
implementation("com.caoccao.javet:javet-v8-linux-x86_64:4.1.1")
implementation("com.caoccao.javet:javet-v8-macos-arm64:4.1.1")
implementation("com.caoccao.javet:javet-v8-macos-x86_64:4.1.1")
implementation("com.caoccao.javet:javet-v8-windows-x86_64:4.1.1")
Gradle Groovy DSL¶
implementation 'com.caoccao.javet:javet:4.1.1' // Core (Must-have)
implementation 'com.caoccao.javet:javet-node-linux-arm64:4.1.1'
implementation 'com.caoccao.javet:javet-node-linux-x86_64:4.1.1'
implementation 'com.caoccao.javet:javet-node-macos-arm64:4.1.1'
implementation 'com.caoccao.javet:javet-node-macos-x86_64:4.1.1'
implementation 'com.caoccao.javet:javet-node-windows-x86_64:4.1.1'
implementation 'com.caoccao.javet:javet-v8-linux-arm64:4.1.1'
implementation 'com.caoccao.javet:javet-v8-linux-x86_64:4.1.1'
implementation 'com.caoccao.javet:javet-v8-macos-arm64:4.1.1'
implementation 'com.caoccao.javet:javet-v8-macos-x86_64:4.1.1'
implementation 'com.caoccao.javet:javet-v8-windows-x86_64:4.1.1'
For more detail, please visit the installation page.
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());
}