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. By the way, I'm no longer able to renew my JetBrains open-source license with this project. Thank you for supporting Javet.
Major Features
| CPU Arch | Android | Linux | MacOS | Windows |
|---|---|---|---|---|
| x86 | ✔️ | ❌ | ❌ | ❌ |
| x86_64 | ✔️ | ✔️ | ✔️ | ✔️ |
| arm | ✔️ | ❌ | ❌ | ❌ |
| arm64 | ✔️ | ✔️ | ✔️ | ❌ |
- Node.js
v24.18.0+ V8v15.1.206.11 - 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>5.0.10</version> </dependency> <!-- Node.js Linux (x86_64) --> <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet-node-linux-x86_64</artifactId> <version>5.0.10</version> </dependency> <!-- Node.js Linux (arm64) --> <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet-node-linux-arm64</artifactId> <version>5.0.10</version> </dependency> <!-- Node.js Mac OS (x86_64) --> <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet-node-macos-x86_64</artifactId> <version>5.0.10</version> </dependency> <!-- Node.js Mac OS (arm64) --> <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet-node-macos-arm64</artifactId> <version>5.0.10</version> </dependency> <!-- Node.js Windows (x86_64) --> <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet-node-windows-x86_64</artifactId> <version>5.0.10</version> </dependency> <!-- V8 Linux (x86_64) --> <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet-v8-linux-x86_64</artifactId> <version>5.0.10</version> </dependency> <!-- V8 Linux (arm64) --> <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet-v8-linux-arm64</artifactId> <version>5.0.10</version> </dependency> <!-- V8 Mac OS (x86_64) --> <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet-v8-macos-x86_64</artifactId> <version>5.0.10</version> </dependency> <!-- V8 Mac OS (arm64) --> <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet-v8-macos-arm64</artifactId> <version>5.0.10</version> </dependency> <!-- V8 Windows (x86_64) --> <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet-v8-windows-x86_64</artifactId> <version>5.0.10</version> </dependency>
Gradle Kotlin DSL
implementation("com.caoccao.javet:javet:5.0.10") // Core (Must-have) implementation("com.caoccao.javet:javet-node-linux-arm64:5.0.10") implementation("com.caoccao.javet:javet-node-linux-x86_64:5.0.10") implementation("com.caoccao.javet:javet-node-macos-arm64:5.0.10") implementation("com.caoccao.javet:javet-node-macos-x86_64:5.0.10") implementation("com.caoccao.javet:javet-node-windows-x86_64:5.0.10") implementation("com.caoccao.javet:javet-v8-linux-arm64:5.0.10") implementation("com.caoccao.javet:javet-v8-linux-x86_64:5.0.10") implementation("com.caoccao.javet:javet-v8-macos-arm64:5.0.10") implementation("com.caoccao.javet:javet-v8-macos-x86_64:5.0.10") implementation("com.caoccao.javet:javet-v8-windows-x86_64:5.0.10")
Gradle Groovy DSL
implementation 'com.caoccao.javet:javet:5.0.10' // Core (Must-have) implementation 'com.caoccao.javet:javet-node-linux-arm64:5.0.10' implementation 'com.caoccao.javet:javet-node-linux-x86_64:5.0.10' implementation 'com.caoccao.javet:javet-node-macos-arm64:5.0.10' implementation 'com.caoccao.javet:javet-node-macos-x86_64:5.0.10' implementation 'com.caoccao.javet:javet-node-windows-x86_64:5.0.10' implementation 'com.caoccao.javet:javet-v8-linux-arm64:5.0.10' implementation 'com.caoccao.javet:javet-v8-linux-x86_64:5.0.10' implementation 'com.caoccao.javet:javet-v8-macos-arm64:5.0.10' implementation 'com.caoccao.javet:javet-v8-macos-x86_64:5.0.10' implementation 'com.caoccao.javet:javet-v8-windows-x86_64:5.0.10'
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()); }
Sponsors
License
Blog
- Performance Comparison of GraalJS, Javet and Nashorn
- How to Elegantly Expose JsonNode in V8
- How to Compromise V8 on JVM
- Is TypeScript a Good Choice for a Script Engine?
- Run TypeScript Directly in Java
- SSR — React + Spring Boot with Javet