YodaOS: 一个属于 Node.js 社区的操作系统

栏目: IT资讯 · 发布时间: 5年前

内容简介:大家好,很开心在这里宣布 YodaOS开源了。他将承载 Rokid 4年以来对于人工智能和语音交互领域的沉淀,并选择 Node.js 作为操作系统的一等开发公民,全部开放给社区。 YodaOS(YODAOS)的架构跟 Android 类似,从下至...

大家好,很开心在这里宣布 YodaOS开源了。他将承载 Rokid 4年以来对于人工智能和语音交互领域的沉淀,并选择 Node.js 作为操作系统的一等开发公民,全部开放给社区。

YodaOS: 一个属于 Node.js 社区的操作系统

YodaOS(YODAOS)的架构跟 Android 类似,从下至上,由 Linux Kernel、系统服务和应用框架组成。不过 YodaOS 有以下不同:

  • 开发者可以直接使用 JavaScript / Node.js 来开发本地应用(技能);

  • 封装了 AI 抽象层,可以通过 JavaScript 直接调用到诸如语音激活、语音识别、人脸识别等接口;

除了支持默认的 Node.js API 外,YodaOS 还提供:

  • 内置的语音激活和语音识别 API,真正做到了开箱即用(开发)的语音交互系统;

  • 对音量控制、电源管理、蓝牙、多媒体播放、LED 灯效和 OTA 等都进行了接口封装;

  • 对物联网开发者来说,内置了标准化的 WebSocket、MQTT 等物联网协议的客户端实现;

YodaOS 也支持 npm 仓库,开发者可以根据自己的需要在 OS 中运行所需的模块,不过并不推荐使用一些实现起来很重的模块,因为 YodaOS 需要支持中低端设备,所以有时候也需要考虑到性能方面的因素。

如果遇到一些 npm 仓库确实实现很重,但又不得不用的时候,在 YodaOS 上,我们一般的做法是使用 N-API 桥接 C/C++ 模块,然后保证 JavaScript API 与对应的 npm 包一致。

同时借助于 N-API,开发者可以将任何 Linux 的库移植到 YodaOS上,并通过 N-API 以 JavaScript API 方式使用,可以这么理解,N-API 之于 YodaOS,就像 JNI 之于 Android。

YodaOS: 一个属于 Node.js 社区的操作系统

为什么是 Node.js

前面提到了 YodaOS 选择拥抱 Node.js和 Node.js 开发者,最大的一个原因就是在过去将近10年的时间,从最开始 Ryan Dahl 定义的,一个轻量级的 Web 服务器框架,到如今的 Express、Loopback、Koajs、Midway 和 Egg Framework,在 Web 服务器框架领域已经渐渐成熟。

依托于 Node.js 提供的运行时,从 Grunt、Gulp 到现在的 Webpack和 Parcel,在构建 工具 领域,社区也不断涌现出非常卓越的开源项目来。Node.js 正在发挥每位开发者的想象力,社区中几乎有你需要的一切,甚至于在社区中,有一句流传已久的名言:

any application that can be written in JavaScript,will eventually be written in JavaScript   —— Atwood’s Law

意思就是说,只要能被 JavaScript 来编写的程序,终将使用 JavaScript 实现。那为什么不用 JavaScript 来写一个操作系统呢?

当然上面的只是一个有趣的引子,Rokid 真正想做的是让 Node.js 开发者能够以更低的门槛进入语音交互和嵌入式领域。

Node.js 与 ShadowNode

YodaOS 虽然跟 Android 的架构相似,不过解决的问题,及目标设备并不尽然相同,对于现在越来越便宜的手机,Android 开发者几乎不用担心系统性能的问题。然而对于像智能音响、IoT 终端以及其他嵌入式设备,通常硬件资源都是非常紧缺的,在这种情况下,OS 就要解决开发者“既要节省资源、又要便于开发”的问题。

于是针对中低端硬件产品(内存介于 128MB 到 256MB 之间),我们创造了 ShadowNode来解决这个问题,它是 Rokid 基于三星 IoT.js 二次开发的一款 Node.js 运行时,它具备更快的启动速度和更低的资源占用,相比 IoT.js,它:

  • 提供了更好的错误栈信息和性能调试工具;

  • 支持了基于 N-API 的跨运行时模块执行;

  • 针对特定芯片的性能优化,比如 AmLogic A113和 Kamino18;

借助于 N-API的 ABI 兼容特性,我们实现了 OS 上层框架和应用的运行时兼容性。比如开发者完全可以选择在更高级的设备上运行 YodaOS,此时内存和 Flash 不再是瓶颈,开发者只需要更换系统中的 Node.js 运行时,即可获得更快的执行速度,不需要修改一行上层代码。

最后

我们希望借助 YodaOS,为 Node.js 社区补全终端开发这一版图,让我们用这门亲切的语言,再次回到我们熟悉的“端”的开发。

如果想一起加入 YodaOS,可以在 GitHub 上关注我们,项目地址:https://github.com/yodaos-project/yodaos


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Realm of Racket

Realm of Racket

Matthias Felleisen、Conrad Barski M.D.、David Van Horn、Eight Students Northeastern University of / No Starch Press / 2013-6-25 / USD 39.95

Racket is the noble descendant of Lisp, a programming language renowned for its elegance and power. But while Racket retains the functional goodness of Lisp that makes programming purists drool, it wa......一起来看看 《Realm of Racket》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

SHA 加密
SHA 加密

SHA 加密工具