三星电子打造基于 JavaScript 和 Node.js 的 IoT.js 平台

  • 张天雷

2015 年 8 月 12 日

话题:JavaScriptNode.js语言 & 开发架构物联网

最近几年,物联网技术开始得到各大国际公司的重视,并迅速发展,由此诞生了各种物联网产品。未来,物联网势必会为人们生活和工作带来巨大改变。根据IDC 公司的分析报告,IoT 技术及服务到 2020 年在全球的开支将达到 8.9 万亿。但是,在迅速发展的同时,物联网发展仍然面临着很多挑战。其中之一就是如何把应用或服务轻松部署到不同的设备中。根据以往服务器、桌面和手机等设备中跨平台应用程序部署的经验,一个十分高效的方法就是在设备中支持JavaScript。这样,基于 JavaScript 的应用就可以轻松运行在不同的设备中。然而,JavaScript 运行时需要耗费大量的内存和计算资源,并不适合资源有限的嵌入式设备。为此,三星电子最近开始进行基于 JerryScript 和 Node.js 的 IoT.js 项目的研究。接下来,本文就对该项目进行简要介绍。

IoT.js 平台由轻量化 JavaScript 引擎——JerryScript构成,是轻量级的Node.js

首先,JerryScript 是三星电子提出的另外一个开源项目。JavaScript 虽然能够很好的支持跨平台应用,但它一般都需要比较多的内存和计算资源。这样,该技术就很难应用到灯泡或者温度计等轻量化的物联网设备中。因此,JerryScript 这一轻量化的 JavaScript 引擎被提出。JerryScript 同样以 JavaScript 应用作为输入。其主要特点在于面向嵌入式物联网设备,试图在资源受限(RAM 资源小于 64KB、存储代码的 ROM 空间小于 200KB)的环境下运行 JavaScript 应用。而且,JerryScript 引擎支持设备中编译和执行,并提供对外围设备的访问。目前,该项目已经托管在 GitHub 中。用户只需要下载源代码,进行编译即可调用相应的API,执行程序的相关功能。另外一方面,Node.js 是一个基于 Chrome JavaScript 运行时建立的服务器端平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 所使用的事件驱动、非阻塞 I/O 模型使得其轻量和高效,从而可以很好的用于跨分布式设备的数据密集型实时应用程序。

通过以上分析可以看出,JerryScript 提供了在资源受限的物联网设备中执行 JavaScript 应用的引擎,但无法支持服务器端的服务;Node.js 虽然提供了 JavaScript 的服务器端平台,却需要消耗较多的计算和内存资源。因此,二者都无法支持物联网设备中的 JavaScript 服务器端平台。为了解决这一问题,IoT.js 项目被提出。在 JerryScript 和 Node.js 的基础上,IoT.js 项目旨在提供 IoT 世界中基于网页技术的互操作平台。该平台利用 JerryScript 来运行 JavaScript 代码,并利用libuv进行异步 I/O。其目标是在只有若干 KB RAM 资源的微型控制器或其他设备上正常运行。这样,绝大部分物联网设备就可以支持 IoT.js,从而运行不同的服务。目前,IoT.js 可以运行在 Linux 系统和实时嵌入式操作系统NuttX上。其面向的设备包括Raspberry Pi 2 and ST 开发板。

此外,IoT.js 与现存的技术是完全兼容的。开发人员完全可以利用现在的开发方法来轻松开发 IoT 版本的应用。而且,IoT.js 项目是开源的,代码托管在GitHub中。三星电子软件中心的副主管Kyeongwoon Lee 表示,公司希望通过 IoT.js 项目来增强更多设备间的互操作性。同时,开源方式表明三星希望能够与软件开发人员一起来进行 IoT.js 项目研究。

除了 IoT.js 和 JerryScript 项目,三星电子还在可穿戴设备Gear系列、ARTIK系列的 IoT 模块以及智能电视等方面进行 IoT 技术的研发。通过这些项目,该公司正在积极增强物联网设备的互操作性。这些设备涵盖了从家用电器、手机和电视等复杂的电子设备到灯泡、温度计、开关和传感器等小型设备。最终,这些互连的设备可以让人们享受更加智能、便捷的生活。


感谢徐川对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

JavaScriptNode.js语言 & 开发架构物联网