什么是 KossJS?
概述
KossJS(Koss JavaScript Runtime)是一个高性能、跨平台、嵌入式 JavaScript 运行时引擎,可为外部项目提供强大的 JavaScript 执行能力支持,使开发者能够在自己的应用中轻松集成 JavaScript 脚本执行功能。
TIP
KossJS 基于 Boa JavaScript 引擎开发,使用 Rust 语言编写,利用 Rust 的内存安全特性和零成本抽象实现高性能。
开源协议
本项目采用 GNU AGPL v3.0 协议开源发布。
核心特性
1. 标准化 C ABI
KossJS 通过标准的 C 应用程序二进制接口(ABI)暴露功能,支持:
- Python: 通过 kossjs_interface.py 封装调用
- C/C++: 通过 kossjs.h 封装调用
- C#/.NET: 通过 P/Invoke 封装调用
- Java/Kotlin: 通过 JNA (桌面) 或 JNI (Android) 接口调用
- 其他任何支持调用 C 函数的语言
2. 嵌入式设计
KossJS 为嵌入式场景优化设计:
- 轻量级:极低的内存占用(~10-15 MB)
- 零 GC 停顿:无垃圾回收暂停,适合实时应用
- 隔离实例:每个 KossInstance 是完全隔离的 JS VM
- 快速创建销毁:实例创建/销毁开销极低
3. 内置 Fetch API
原生支持 HTTP/HTTPS 请求:
- TLS 指纹伪装:模拟 Chrome 的 TLS/JA3/HTTP2 指纹
- Headers 支持:自定义请求头
- Body 支持:支持请求体
- 完整响应:返回状态码、状态文本、响应头、响应体
4. Node.js 兼容
内置 40+ 个 Node.js 标准库模块:
| 模块 | 说明 |
|---|---|
| assert | 断言 |
| buffer | 缓冲区 |
| console | 控制台 |
| constants | 常量 |
| crypto | 加密 |
| events | 事件 |
| fs | 文件系统 |
| http | HTTP 客户端/服务器 |
| https | HTTPS 客户端/服务器 |
| net | 网络 |
| os | 操作系统 |
| path | 路径 |
| process | 进程信息 |
| querystring | 查询字符串 |
| stream | 流 |
| string_decoder | 字符串解码 |
| timers | 定时器 |
| tls | TLS |
| url | URL 解析 |
| util | 工具 |
| zlib | 压缩 |
5. ES Modules 支持
完整支持 ES Module 语法:
- import / export 语法
- 异步模块加载
- 模块解析
支持的平台
KossJS 编译为平台原生的动态链接库:
| 平台 | 文件名 | 架构 |
|---|---|---|
| Windows | kossjs.dll | x64 |
| Linux | kossjs.so | x64, ARM64 |
| macOS | kossjs.dylib | x64, ARM64 |
| Android | kossjs_android.so* | x86_64, ARM64, ARMv7 |
| HarmonyOS | kossjs_harmony.so* | x86_64, ARM64 |
技术架构
您的应用程序 (Python/C++/C#/Java)
↓
( KossJS 的接口封装 )
↓
C ABI 接口 (标准调用约定)
↓
KossJS 核心引擎 (Rust 编译的动态链接库)
↓
Boa JS 引擎 / 异步运行时 / 网络层使用场景
1. 桌面应用程序
- 脚本插件系统
- 用户宏支持
- 自动化脚本
2. 游戏开发
- 游戏脚本引擎
- 插件系统
- 自动化任务
3. 服务器应用
- 用户代码沙箱
- 动态配置
- 规则引擎
4. 移动应用
- Android 应用中的脚本执行
- 插件系统
- 动态功能
快速开始
基本要求
- 目标平台: Windows/Linux/macOS/Android
- Python 3.11+ (如果使用 Python 接口)
安装步骤
- 下载对应平台的动态链接库
- 将库文件放入项目目录
- 复制 kossjs_interface.py 到项目(Python)
示例工作流
python
# 1. 初始化
from kossjs_interface import KossJS
koss = KossJS()
# 2. 执行 JavaScript 代码
result = koss.eval("1 + 2")
print(result) # 输出: 3
# 3. 设置全局变量
koss.set_global("myVar", "Hello from Python")
result = koss.eval("myVar")
print(result) # 输出: Hello from Python
# 4. 使用 fetch API
code = '''
fetch("https://api.github.com/users/github")
.then(response => response.json())
.then(data => console.log(data.login))
'''
koss.eval(code)
# 5. 销毁实例
koss.destroy()性能对比
| 特性 | KossJS | QuickJS | Duktape |
|---|---|---|---|
| 核心语言 | Rust | C | C |
| 内存占用 | ~10-15 MB | ~200 KB | ~200 KB |
| GC | 标记-清除 | 引用计数 | 标记-清除 |
| GC 停顿 | 有 | 无 | 有 |
| 并发支持 | 原生 | 单线程 | 单线程 |
| ES Modules | ✅ | ❌ | ❌ |
| 内置 Fetch | ✅ | ❌ | ❌ |
| Node.js 兼容 | 40+ 模块 | 无 | 无 |
总结
KossJS 是一个专业级的嵌入式 JavaScript 解决方案:
| 功能 | 描述 |
|---|---|
| ✅ 高性能 | Rust 实现,极低内存占用 |
| ✅ 跨平台 | 一次集成,全平台运行 |
| ✅ 多语言 | 支持几乎所有主流编程语言 |
| ✅ 隔离性 | 完全隔离的 JS VM 实例 |
| ✅ Node.js 兼容 | 内置 40+ 标准库模块 |
| ✅ ES Modules | 原生 ES Module 支持 |
| ✅ Fetch API | 原生 HTTP 请求支持 |
| ✅ 开源 | 透明可控,可根据需要修改 |
下一步:
- 快速开始 - 立即开始使用 KossJS
- API 详解 - 了解所有可用功能
- Python 接口使用 - Python 开发指南
- C/C++ 接口使用 - C/C++ 开发指南
