Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
嵌入式技术综合讨论
JerryScript 和 IoT.js:来自三星的物联网 JavaScript
发布于 2015-08-22 11:40:11 浏览:2802
订阅该版
最近三星开源了[IoT.js](http://www.oschina.net/p/iot-js)和[JerryScript](http://www.oschina.net/p/jerryscript)。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平台上运行的比较。 ![FastAdmin](http://cdn4.infoqstatic.com/statics_s2_20150819-0313/resource/news/2015/08/iotjs-jerryscript-samsung/zh/resources/1.png) ![FastAdmin](http://cdn4.infoqstatic.com/statics_s2_20150819-0313/resource/news/2015/08/iotjs-jerryscript-samsung/zh/resources/2.png) 我们联系了三星,了解了更多关于这些项目的信息。 InfoQ:运行在只有64KB内存上的JavaScript引擎非常受限,你们是怎么做到这一点的? 三星:针对JavaScript引擎需要考虑许多质量属性。当前,最重要的是性能属性,因为我们希望运行在浏览器中的应用看起来像原生应用。 从物联网的角度,我们只关注内存占用。 JerryScript和当前多级自适应即时编译(JIT)引擎相比,是一个纯粹的解释器。所以它没有保存编译后代码的开销,甚至它的解析器也不保 存抽象语法树(AST)。它直接将源码按行解释成字节码。对于数据表现,JerryScript中的对象在大小上做了优化。JerryScript使用压 缩的指针、固定大小的字节码块、预分配对象池和数值对象的多种表示等方式同时达到遵守标准和内存优化。我们将持续不断的用各种方式减少内存消耗。你们可以 在[http://samsung.github.io/jerryscript/internals/](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](https://goo.gl/7V8jNp))。 我们也会提供物联网连接层接口协议实现,如OIC/IoTivity、AllSeen联盟(AllSeen Alliance)等。它们将会以npm模块的方式发布。 查看英文原文:[JerryScript & IoT.js: JavaScript for IoT from Samsung](http://www.infoq.com/news/2015/08/iotjs-jerryscript-samsung)
查看更多
1
个回答
默认排序
按发布时间排序
撰写答案
登录
注册新账号
关注者
0
被浏览
2.8k
关于作者
bernard
这家伙很懒,什么也没写!
提问
414
回答
5943
被采纳
76
关注TA
发私信
相关问题
1
开新板块了! 迅速占领第一帖!
2
有想玩点阵做电子钟的没?手上有屏
3
LED点阵屏硬件保护研究笔记
4
USB相关、Android、Arduino
5
Arduino即将发布ARM平台新产品
6
关于开关电源的同步整流技术
7
rt_thread_wizard使用教程
8
[转]开源如何盈利
9
FM3系列MCU的IO操作笔记。
10
转一个xoolhaha 的寻一起开发的帖子
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【NXP-MCXA153】 定时器驱动移植
2
GD32F450 看门狗驱动适配
3
【NXP-MCXA153】看门狗驱动移植
4
RT-Thread Studio V2.2.9 Release Note
5
CherryUSB的bootuf2配置
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
15
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
8
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部