产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

Duktape:在 C/C++ 项目中嵌入 JavaScript

  • 2014-12-10
  • 本文字数:1013 字

    阅读完需:约 3 分钟

软件可能正在吞噬世界,而 JavaScript 又可能正在吞噬软件世界。凭借可以嵌入到任何 C/C++ 项目中的、完整兼容 ECMAScript 5 的引擎, Duktape 使得 JavaScript 超越了浏览器或服务器的界限。

Duktape 较小的代码库、简单的构建系统,使其非常适合嵌入在其他系统中使用。从技术角度看,它本质上和 Lua 项目很像,但是它运行的 JavaScript 却有着更大的生态系统和更多的开发者。——Tim Caswell

尽管 Lua 并不比 JavaScript 年长多少,但是 JavaScript 在浏览器中、在服务器上(通过 node.js),无处不在,从而获得了更大的认可。对于想嵌入一门脚本语言的项目,Duktape 支持使用一种非常流行的语言及其生态系统。Duktape 项目的创建者 Sami Vaarala 指出,“最初动机就是想为 JavaScript 创建一个类似 Lua 的实现。”

使用 Duktape 非常简单,只需要把 duktape.c 和 duktape.h 添加到项目中。JavaScript 和 C 之间的绑定是双向的,所以可以相互调用。“Hello World!”示例如下:

复制代码
#include "duktape.h"
int main(int argc, char *argv[]) {
duk_context *ctx = duk_create_heap_default();
duk_eval_string(ctx, "print('Hello world!');");
duk_destroy_heap(ctx);
return 0;
}

Tim Caswell 摘取了 Duktape 的核心,用 Dukluv 加以扩展,创建了一个较小的“针对小型设备的类 node.js 环境”。Caswell 提到,他的项目加入了 libuv 到 Duktape 的绑定:

使得 Duktape 可以访问操作系统,从而成为一个支持非阻塞 I/O、定时器(timer)、子进程,并支持加载 libuv 所提供的有用的工具函数的完整通用编程环境。

需要嵌入脚本语言的需求并不新鲜。电子游戏已经这么干了好多年了,比如魔兽世界就使用了 Lua,用于定制界面。Stack Overflow 上有一个很受欢迎的回答指出,Lua 之所以常用,原因在于:

Lua 很小,可移植,而且是用 ANSI C 实现的,易于修改;容易嵌入到其他项目中,好扩展,而且对于游戏开发者最重要的是,运行时占用的内存非常少。

像 SpiderMonkey 和 V8 等浏览器引擎也可以嵌入在其他项目中,但是它们很庞大,不适合小型应用。Caswell 说,对于简单的任务或低功率的机器,它们“太过重量级”了。 Espruino 项目也为微控制器提供了 JavaScript,但是它和 ECMAScript 的兼容性只在 95% 左右,而 Duktape 是完全兼容的。

Duktape 基于 MIT 许可协议开源,源代码托管在GitHub 上。使用过的开发者都对其丰富的文档赞口不绝。

查看英文原文: JavaScript on a Toaster: Embedded JavaScript with Duktape

2014-12-10 12:046196
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 134.3 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

墨菲安全软件供应链安全产品v3.0正式公测之产品特性简介及用户升级说明

墨菲安全

软件成分分析 开源安全 墨菲安全 软件供应链安全

暴雪、迪士尼大佬用什么画画?RayLink远控软件助力解锁远程创作

RayLink远程工具

远程控制软件 远程办公软件 远控软件 RayLink

支撑20亿+用户变美,看华为云OBS对象存储服务与美图的合作

IT科技苏辞

专属企业的加速“小帮手”——华为云CDN

科技说

不愧是阿里内部供应的Kafka笔记,深入浅出,全是干货

小小怪下士

Java kafka 程序员

“互联网+”的时代,华为云如何助力企业处理海量数据?

科技怪授

OBS

数字化转型如何更方便?华为云大数据BI解决方案来了!

科技之光

稳定可靠、安全可信的云存储-华为云OBS对象存储

IT科技苏辞

拒绝等待,华为云CDN下载加速就是要快人一步

科技说

打破工业发展瓶颈,华为云赋能工业企业转型成效显著!

科技之光

华为云OBS对象存储,一站式解决企业数据存储难题

科技怪授

【华为云大数据BI】做好数据化管理,加快企业数字化转型的节奏

科技之光

华为云大数据-助力数据价值化,释放企业发展潜能

科技之光

企业数字化转型难?华为云大数据BI帮你一站式上云

科技之光

「复享光学」用深度光谱技术推动光与电的变革

硬科技星球

自建还是第三方?华为云对象存储服务OBS 成为企业更优选

IT科技苏辞

企业号1月PK榜,火热开启!

InfoQ写作社区官方

热门活动

金航数码选择应用 TDengine 时序数据库,改造现有数据库架构

TDengine

数据库 tdengine 时序数据库

【12.23-12.30】写作社区优秀技术博文回顾

InfoQ写作社区官方

热门活动

华为云CDN下载加速,“火速”留住用户

科技说

云上提速哪家强?华为云CDN加速成首选!

科技说

打造全链数据营销服务,华为云助力车企业务增值

科技之光

如何快速建立商业智能系统?华为云告诉您!

科技之光

接口自动化测试不想写代码?这款工具强烈推荐

叶小柒

测试 Postman

存储无忧!华为云OBS为企业数据存储保驾护航

科技怪授

OBS

Dubbo 3 之 Triple 流控反压原理解析

Apache Dubbo

Java 开源 微服务 gRPC dubbo

年终有奖 | 三分钟,一起创造更好的 StarRocks!

StarRocks

海纳百川,华为云对象存储服务OBS给你无限可能

科技怪授

OBS

华为云OBS,企业数据存储的信赖之举

科技怪授

OBS

建木v2.6.2发布

Jianmu

开源 DevOps 持续集成 低代码 CI/CD

启科量子部署工具 Runtime 正式开源

启科量子开发者官方号

部署 量子

Duktape:在C/C++项目中嵌入JavaScript_JavaScript_David Iffland_InfoQ精选文章