JerryScript 和 IoT.js:来自三星的物联网JavaScript

转载 2015年11月20日 22:06:48

最近三星开源了IoT.jsJerryScript。IoT.js是一个使用JavaScript语言编写的物联网应用平台;JerryScript是一个适用于嵌入式设备的小型JavaScript引擎。

三星创建这两个项目的目的,是为了让JavaScript开发者能够构建物联网应用。物联网设备在CPU性能和内存空间上都有着严重的制约。因此,三星设计了JerryScript引擎,它能够运行在小于64KB内存上,且全部代码能够存储在不足200KB的只读存储(ROM)上。在JerryScript引擎上运行JavaScript代码看上去是这样的:

{
  jerry_init (JERRY_FLAG_ENABLE_LOG);

  char script [] = "print ('Hello, World!');";
  jerry_parse (script, strlen (script));

  jerry_run ();

  jerry_cleanup ();
}

IoT.js平台使用JerryScript引擎来运行JavaScript代码,使用libuv库来实现异步I/O。这样的结构让开发者能够创建物联网服务,让设备与设备、外界之间交互。IoT.js目前运行在Linux和NuttX(一个实时操作系统),目标设备为树莓派2(Raspberry Pi 2)和意法半导体开发板(ST board),后续计划支持其他微控制器(MCU)和物联网设备。IoT.jsAPI提供了缓冲、控制台、事件、通用输入输出接口(GPIO)、流(stream)、定时器等功能。

下图展示了运行在IoT.js/JerryScript平台上的JavaScript应用内部架构和相同应用在IoT.js和Node.js平台上运行的比较。

我们联系了三星,了解了更多关于这些项目的信息。

InfoQ:运行在只有64KB内存上的JavaScript引擎非常受限,你们是怎么做到这一点的?

三星:针对JavaScript引擎需要考虑许多质量属性。当前,最重要的是性能属性,因为我们希望运行在浏览器中的应用看起来像原生应用。

从物联网的角度,我们只关注内存占用。

JerryScript和当前多级自适应即时编译(JIT)引擎相比,是一个纯粹的解释器。所以它没有保存编译后代码的开销,甚至它的解析器也不保存抽象语法树(AST)。它直接将源码按行解释成字节码。对于数据表现,JerryScript中的对象在大小上做了优化。JerryScript使用压缩的指针、固定大小的字节码块、预分配对象池和数值对象的多种表示等方式同时达到遵守标准和内存优化。我们将持续不断的用各种方式减少内存消耗。你们可以在http://samsung.github.io/jerryscript/internals/查看到JerryScript内部实现细节。

InfoQ:在物联网领域使用JavaScript语言有什么优势?

三星:JavaScript是当今最著名的编程语言之一[1][2][3],大量前端开发者对它非常熟悉。因此使用JavaScript可以方便的扩大物联网开发者社区规模。Android使用Java语言开发就是一个很好的历史事例。

另一方面,JavaScript在嵌入式设备开发中是非常便利的。它支持异步函数回调和异步I/O,这对基于事件驱动的硬件编程是非常有用的。

最后,JavaScript是网页编程中使用最广的语言。将物联网设备和互联网生态系统(web ecosystem)相互配合,对于构建物联网生态系统来说是一个明智的选择。因此,许多互联网标准,如HTTP、JSON、REST已经成为物联网连接标准化的中心,唯一缺少的就是JavaScript。我们认为JavaScript在应用程序和服务互通层上是最重要的一环。

InfoQ:IoT.js提供了哪些功能?

三星:IoT.js的核心是向下兼容Node.js。为了做到这一点,IoT.js遵守CommonJS规范中的模块化编程,并且支持Node.js API中核心功能的子集。针对物联网,我们正在定义嵌入式设备控制和物联网编程的标准模块。截至目前,我们定义了第一个通用输入输出接口(GPIO)访问API的候选规范,并且实现了它的原型。我们认为,为了体现它的真正价值,这些活动应该在物联网社区的共识下完成。这就是我们开源IoT.js的原因。请参阅GitHub上关于这个问题的讨论(https://goo.gl/7V8jNp)。

我们也会提供物联网连接层接口协议实现,如OIC/IoTivity、AllSeen联盟(AllSeen Alliance)等。它们将会以npm模块的方式发布。

查看英文原文:JerryScript & IoT.js: JavaScript for IoT from Samsung


摘自:http://www.infoq.com/cn/news/2015/08/iotjs-jerryscript-samsung?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global



感谢邵思华对本文的审校。

iotjs移植到openwrt

最近把三星的iotjs移植到了openwrt上跑,在rt5350的板上测试了一下。记录一下遇到的问题。1.把iotjs clone下来,发现支持linux, 这样就比较简单了,因为openwrt也就...
  • qdk0901
  • qdk0901
  • 2016年01月27日 23:34
  • 1416

信道容量和吞吐量、链路和信道辨析

无线通信中经常看到的名词,此处辨析一下:一、信道容量和吞吐量 信道容量是指互信息量的最大值。具体地说,就是在一定带宽和信噪比下,借助某种编码方案实现无差错传输时可以达到的最大速率,它是一个上界,在实际...

NB-IOT窄带物联网与LTE差异性分析

  • 2017年02月21日 11:18
  • 613KB
  • 下载

GE Predix 新手入门_赵锴_物联网_IoT

  • 2017年03月03日 22:37
  • 602KB
  • 下载

物联网之html---javascript(js)---css(三剑客)

一、框架 前端显示html          处理问题javascript(JS)        二、示例(refer:http://designiot.phodal.com/) ...

BLE低功耗模块 加速IOT物联网发展

  • 2015年12月21日 15:19
  • 612KB
  • 下载

图解物联网IoT未来技术

【快哥评测来啦】图解物联网IoT未来技术 作者: 快哥评测  时间: December 2, 2017  分类:   上篇中快哥评测完了现在两款主流的智能插座(公牛和小米),之前也...

窄带物联网(NB-IoT).pdf

  • 2017年03月07日 20:50
  • 4.95MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JerryScript 和 IoT.js:来自三星的物联网JavaScript
举报原因:
原因补充:

(最多只允许输入30个字)