Sai is a runtime environment for programs written in ECMAScript 5.1 that runs on top of JVM. This project forked from Nashorn.
- ECMAScript 5.1 implementation
- Runs on JVM (Java 21+)
- JSR-223 Script Engine API support
- High performance bytecode generation using ASM library
JAR file is available in Maven repository. Add the following dependency to your pom.xml:
<dependency>
<groupId>org.codelibs</groupId>
<artifactId>sai</artifactId>
<version>0.3.0-SNAPSHOT</version>
</dependency>
Add the following dependency to your build.gradle:
dependencies {
implementation 'org.codelibs:sai:0.3.0-SNAPSHOT'
}
Or in build.gradle.kts:
dependencies {
implementation("org.codelibs:sai:0.3.0-SNAPSHOT")
}
- Java 21 or later
- Gradle 8.x (included via wrapper)
# Full build (compile, test, javadoc, jar)
./gradlew build
# Clean build artifacts
./gradlew clean
# Create JAR only
./gradlew jar
# Run tests
./gradlew test
# Run tests in optimistic mode
./gradlew testOptimistic
# Run tests in pessimistic mode
./gradlew testPessimistic
# Generate Javadoc
./gradlew javadoc
# Generate API Javadoc only
./gradlew javadocApi
# Run a sample JavaScript file
./gradlew run
# Debug mode with code inspection
./gradlew debug
# Run all tests
./gradlew test
# Run test262 ECMAScript compliance tests
./gradlew test262
# Run test262 in parallel
./gradlew test262Parallel
# Download external test suites
./gradlew downloadExternals
After building, you'll find the following artifacts in build/libs/
:
sai-X.X.X.jar
- Main JAR filesai-X.X.X-sources.jar
- Source code JARsai-X.X.X-javadoc.jar
- Javadoc JAR