关闭

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

时间: 2019-01-30阅读: 882标签: node

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



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。


为什么是 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-pro...

关于 YodaOS:

YodaOS 是 Rokid 研发的首个全栈开源 AI 操作系统,由 Linux 内核、硬件抽象层、AI 抽象层和 JavaScript 框架组成,专为下一代人机交互设备开发,可用于智能音箱、智能家居、智能穿戴和车载等多种设备和场景。


来自:https://segmentfault.com/a/1190000018043517


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/1914

关闭

Node.js 12 发布!来看看有哪些新动向吧

今天我们非常激动地发布了 Node.js 12。值得注意的更新以及新功能包括更快速的启动、更好的默认堆内存限制、更新 V8 引擎、TLS、llhttp,新功能包括诊断报告、捆绑的 heap dump 功能

angular为什么依赖nodejs?

angular用nodejs主要是用它的npm工具包,npm里面有很多很方便的工具可以用在前端开发,Angular是一个开源框架的,以 JavaScript 编写的库,一个客户端的JavaScript MVC框架,用于开发动态Web应用程序。

node.js反向代理的实现

在实际工程开发中,会有前后端分离的需求。使用node.js反向代理的目的:实现前后端分离,前端减少路径请求的所需的路由文件;通过http-proxy-middleware中间件、Http Proxy 模块这2种方式实现node.js的反向代理

node如何更新?

node的更新方法:先使用npm的命令npm install -g n安装n模块,然后使用n stable可以将node更新到最新版本,使用n+node版本号可以将node更新到指定版本。

node.js中常用的fs文件系统

node.js中常用的fs文件系统:fs文件系统模块对于系统文件及目录进行一些读写操作。模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。

Node.js是什么?

如果你有一定的前端基础,比如 HTML、CSS、JavaScript、jQuery;那么,Node.js 能让你以最低的成本快速过渡成为一个全栈工程师(我称这个全栈为伪全栈,我认为的全栈也要精通数据库,不喜勿喷),从而触及后端和移动端的开发。

使用pkg打包Node.js应用的方法步骤

Node.js应用不需要经过编译过程,可以直接把源代码拷贝到部署机上执行,确实比C++、Java这类编译型应用部署方便。然而,Node.js应用执行需要有运行环境,意味着你需要先在部署机器上安装Node.js

happypack提升项目构建速度

运行在 Node.js 之上的 Webpack 是单线程模型的,也就是说 Webpack 需要处理的任务需要一件件挨着做,不能多个事情一起做。happypack把任务分解给多个子进程去并发的执行,子进程处理完后再把结果发送给主进程。

node如何避免崩掉?

当你在node中没有处理reject状态的promise或在一个流中没有处理错误error事件,会引起你的程序崩溃。下面我们来看一下如何避免我们的node程序崩溃。

Node.js 应用:Koa2 使用 JWT 进行鉴权

在前后端分离的开发中,通过 Restful API 进行数据交互时,如果没有对 API 进行保护,那么别人就可以很容易地获取并调用这些 API 进行操作。那么服务器端要如何进行鉴权呢?

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!