物联网场景下为什么可以选择JS语言
Posted HaaS技术社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了物联网场景下为什么可以选择JS语言相关的知识,希望对你有一定的参考价值。
随着三星在2015年将IoT.js & JerryScript引擎开源之后,IoT场景同时也迎来了更多JS开发者,目前JS语言涉及的开发领域有:
- Web网站:目前主流的Web网站由html5 + JS语言开发为主。
- NodeJS服务:基于NodeJS可以开发各种后端服务
- 移动开发:基于浏览器引擎开发混合的移动端应用
- 插件开发:可以开发VSCode编辑器插件
下面主要讲解一下IoT场景下JS语言的特性,让更多的JS开发者将自身能力发挥到IoT场景上。
开发门槛
目前主流的编程语言门槛排序如下 汇编 > C > C++ > Java > JS,而且最近几年随着浏览器引擎的大力发展,JS语言超级门槛的特性,吸引了一大批从业人员,比如拿国内开源Vue.js前端框架举例。
下图为Vue.js官网重点HighLight的三个特性,目前国内超过50%的前端开发者选择该框架
- 入门门槛低:基于html模板,对熟悉html开发者的而言非常容易理解和学习
- vue-cli脚手架:工程一键初始化/构建.简化了前端开发人员开发流程
- 平滑集成:很容易在现有的工程中集成,且不会干扰原有工程逻辑.
- vue对轻量级工程更加友好,快速,方便,一般3-5天就可以开发应用
- 社区运营:vue尤其在国内运行的比其他前端框架做的要好
目前HaaS开发者框架将Vue.js框架适配到了IoT带屏设备上,具体快速上手可以见文档。
应用热更新
热更新就是当你在开发环境修改代码后,不用刷新整个页面即可看到修改后的效果。
不同于传统嵌入式开发流程,JS应用在PC端开发完成后,无需编译、链接、固件烧录等繁琐步骤,用户可直接j将JS应用推送到设备上,且不需要重启设备就可以验证,达到应用热更新能力,该特性可以有效的降低IoT升级对OTA的依赖。
一般JS热更新分为本地热更新和在线热更新,下面拿HaaS 轻应用热更新举例。
本地热更新
通过有线方式(串口)对设备的应用进行更新,可适用于设备无法联网或轻应用代码运行异常的情况。
下载模式
本地热更新与实际硬件的接线强相关,以 HaaS600开发板为例,需先切到下载模式,参考HaaS600。
在线热更新
通过无线方式(网络)对设备进行热更新。当设备不在本地或者设备无法跟电脑连接的时候,可以通过网络通道将轻应用代码下发到设备,类似OTA功能。
JS引擎
谷歌的V8引擎给JS语言带来了更多的现象空间,但是由于资源开销问题,一般在IoT低配置的设备上,不会选择V8引擎,下面介绍一下目前IoT上低资源开销的JS引擎。
JerryScript
- RAM:< 64 KB RAM
- ROM:< 240 KB
- ES语法:全面支持ES5.1语法
Duktape
- RAM:< 64 KB
- ROM:< 400KB
- ES语法:前面支持ES5.1语法,部分支持ES6语法
Quickjs
- RAM:< 200KB
- ROM:< 600KB
- ES语法:支持ES5.1、ES6、ES2019、ES2020语法
下面为几种场景JS引擎的Benchmark对比
Engine | QuickJS | DukTape | JerryScript | V8 --jitless | V8 (JIT) |
Executable size | 620K | 331K | 211K | 28M | 28M |
Richards | 777 | 218 | 238 | 1036 | 29745 |
DeltaBlue | 761 | 266 | 209 | 1143 | 65173 |
Crypto | 1061 | 202 | 255 | 884 | 34215 |
RayTrace | 915 | 484 | 286 | 2989 | 69781 |
EarleyBoyer | 1417 | 620 | - | 4583 | 48254 |
RegExp | 251 | 156 | - | 2142 | 7637 |
Splay | 1641 | 1389 | - | 4303 | 26150 |
NavierStokes | 1856 | 1003 | 394 | 1377 | 36766 |
Total score (w/o RegExp) | 1138 | 468 | - | 1886 | 41576 |
Total score | 942 | 408 | - | 1916 | 33640 |
得分越高性能越好,从上面可以得出一个结论,IoT场景下如果设备硬件资源应许,quickjs引擎是一个不错的选择。
总结
JS语言在IoT上发展才几年,暂时还谈不上最适合IoT设备的开发语言,但是随着AI、IoT、云计算、大数据等技术的快速发展,和在众多产业中的垂直产业落地应用,AI与IoT在实际项目中的融合落地变得越来越多,使得多元化的智能设备也蓬勃发展,同时用户也需要更多个性化的更好的使用体验、更好的操作感受;JS语言在提升开发者的开发效率同时,最终让用户获得:“安全、简单、便捷、舒适的体验”。
更多精品好文
如何用几行Python代码在物联网设备上实现语音AI自动识别?
透过ALSA这层迷雾剖析AliOS Things音频框架设计
以上是关于物联网场景下为什么可以选择JS语言的主要内容,如果未能解决你的问题,请参考以下文章