最近几年,物联网技术开始得到各大国际公司的重视,并迅速发展,由此诞生了各种物联网产品。未来,物联网势必会为人们生活和工作带来巨大改变。根据 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读者交流群 )。