Skip to content

caoccao/Javet

Repository files navigation

Javet

Maven Central Discord Donate

Linux x86_64 Build MacOS x86_64 Build MacOS arm64 Build Windows x86_64 Build Android Node Build Android V8 Build

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.11.0 + V8 v13.1.201.8
  • 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.0</version>
</dependency>

<!-- Node.js Linux (x86_64) -->
<dependency>
    <groupId>com.caoccao.javet</groupId>
    <artifactId>javet-node-linux-x86_64</artifactId>
    <version>4.1.0</version>
</dependency>

<!-- Node.js Linux (arm64) -->
<dependency>
    <groupId>com.caoccao.javet</groupId>
    <artifactId>javet-node-linux-arm64</artifactId>
    <version>4.1.0</version>
</dependency>

<!-- Node.js Mac OS (x86_64) -->
<dependency>
    <groupId>com.caoccao.javet</groupId>
    <artifactId>javet-node-macos-x86_64</artifactId>
    <version>4.1.0</version>
</dependency>

<!-- Node.js Mac OS (arm64) -->
<dependency>
    <groupId>com.caoccao.javet</groupId>
    <artifactId>javet-node-macos-arm64</artifactId>
    <version>4.1.0</version>
</dependency>

<!-- Node.js Windows (x86_64) -->
<dependency>
    <groupId>com.caoccao.javet</groupId>
    <artifactId>javet-node-windows-x86_64</artifactId>
    <version>4.1.0</version>
</dependency>

<!-- V8 Linux (x86_64) -->
<dependency>
    <groupId>com.caoccao.javet</groupId>
    <artifactId>javet-v8-linux-x86_64</artifactId>
    <version>4.1.0</version>
</dependency>

<!-- V8 Linux (arm64) -->
<dependency>
    <groupId>com.caoccao.javet</groupId>
    <artifactId>javet-v8-linux-arm64</artifactId>
    <version>4.1.0</version>
</dependency>

<!-- V8 Mac OS (x86_64) -->
<dependency>
    <groupId>com.caoccao.javet</groupId>
    <artifactId>javet-v8-macos-x86_64</artifactId>
    <version>4.1.0</version>
</dependency>

<!-- V8 Mac OS (arm64) -->
<dependency>
    <groupId>com.caoccao.javet</groupId>
    <artifactId>javet-v8-macos-arm64</artifactId>
    <version>4.1.0</version>
</dependency>

<!-- V8 Windows (x86_64) -->
<dependency>
    <groupId>com.caoccao.javet</groupId>
    <artifactId>javet-v8-windows-x86_64</artifactId>
    <version>4.1.0</version>
</dependency>

Gradle Kotlin DSL

implementation("com.caoccao.javet:javet:4.1.0") // Core (Must-have)
implementation("com.caoccao.javet:javet-node-linux-arm64:4.1.0")
implementation("com.caoccao.javet:javet-node-linux-x86_64:4.1.0")
implementation("com.caoccao.javet:javet-node-macos-arm64:4.1.0")
implementation("com.caoccao.javet:javet-node-macos-x86_64:4.1.0")
implementation("com.caoccao.javet:javet-node-windows-x86_64:4.1.0")
implementation("com.caoccao.javet:javet-v8-linux-arm64:4.1.0")
implementation("com.caoccao.javet:javet-v8-linux-x86_64:4.1.0")
implementation("com.caoccao.javet:javet-v8-macos-arm64:4.1.0")
implementation("com.caoccao.javet:javet-v8-macos-x86_64:4.1.0")
implementation("com.caoccao.javet:javet-v8-windows-x86_64:4.1.0")

Gradle Groovy DSL

implementation 'com.caoccao.javet:javet:4.1.0' // Core (Must-have)
implementation 'com.caoccao.javet:javet-node-linux-arm64:4.1.0'
implementation 'com.caoccao.javet:javet-node-linux-x86_64:4.1.0'
implementation 'com.caoccao.javet:javet-node-macos-arm64:4.1.0'
implementation 'com.caoccao.javet:javet-node-macos-x86_64:4.1.0'
implementation 'com.caoccao.javet:javet-node-windows-x86_64:4.1.0'
implementation 'com.caoccao.javet:javet-v8-linux-arm64:4.1.0'
implementation 'com.caoccao.javet:javet-v8-linux-x86_64:4.1.0'
implementation 'com.caoccao.javet:javet-v8-macos-arm64:4.1.0'
implementation 'com.caoccao.javet:javet-v8-macos-x86_64:4.1.0'
implementation 'com.caoccao.javet:javet-v8-windows-x86_64:4.1.0'

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

HiveMQ | SheetJS

License

APACHE LICENSE, VERSION 2.0

Blog

Documents