物联网场景下为什么可以选择JS语言

简介: 本篇讲解一下IoT场景下JS语言的特性,让更多的JS开发者将自身能力发挥到IoT场景上。
来源 | HaaS技术社区

不看这几篇好文,就别说自己了解物联网

随着三星在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%的前端开发者选择该框架

image.png

  • 入门门槛低:基于html模板,对熟悉html开发者的而言非常容易理解和学习
  • vue-cli脚手架:工程一键初始化/构建.简化了前端开发人员开发流程
  • 平滑集成:很容易在现有的工程中集成,且不会干扰原有工程逻辑.
  • vue对轻量级工程更加友好,快速,方便,一般3-5天就可以开发应用
  • 社区运营:vue尤其在国内运行的比其他前端框架做的要好

目前HaaS开发者框架将Vue.js框架适配到了IoT带屏设备上,具体快速上手可以见文档

应用热更新

热更新就是当你在开发环境修改代码后,不用刷新整个页面即可看到修改后的效果。

不同于传统嵌入式开发流程,JS应用在PC端开发完成后,无需编译、链接、固件烧录等繁琐步骤,用户可直接j将JS应用推送到设备上,且不需要重启设备就可以验证,达到应用热更新能力,该特性可以有效的降低IoT升级对OTA的依赖。

一般JS热更新分为本地热更新和在线热更新,下面拿HaaS 轻应用热更新举例。

本地热更新

image.png

通过有线方式(串口)对设备的应用进行更新,可适用于设备无法联网或轻应用代码运行异常的情况。

下载模式

本地热更新与实际硬件的接线强相关,以 HaaS600开发板为例,需先切到下载模式,参考HaaS600

在线热更新

image.png

通过无线方式(网络)对设备进行热更新。当设备不在本地或者设备无法跟电脑连接的时候,可以通过网络通道将轻应用代码下发到设备,类似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语言在提升开发者的开发效率同时,最终让用户获得:“安全、简单、便捷、舒适的体验”。

更多精品好文

如何从零设计一种物联网组网协议

带你了解热门IoT开源项目:home assistant

如何用几行Python代码在物联网设备上实现语音AI自动识别?

物联网需要什么样的UI交互方式?

如何分析物联网设备问题,看懂这篇文章就够了

透过ALSA这层迷雾剖析AliOS Things音频框架设计

漫谈农业物联网与互联网技术的结合

传感器,物联网时代的智能硬件数字化入口

如何快速搭建一个像“天猫精灵”的智能语音助手?

物联网之IP Camera解决方案简介

从语音交互历史浅看它是否会是物联网行业的一个爆点?

带你走进多媒体世界:视频文件是怎么播放出来的

物联网云端一体AI方案的探索

物联网设备连接的下一个引爆点:4G Cat.1

物联网教育现状和前景

一文看懂蓝牙在物联网中的应用场景

下一个智能硬件爆品是什么?

华为、阿里、小米都在用的全屋智能技术

为什么物联网领域使用Rust的项目越来越多?

物联网中也能使用区块链技术?面向IoT的区块链基础架构IoTeX

开源硬件的前世今生

物联网碎片化的一些思考

边缘计算在物联网行业的应用

物联网太难 ? 不妨试试用Python来开发

5G会给物联网行业带来哪些变化?

必须要了解的物联网安全知识

ARMv9能给ARM带来新一轮腾飞吗?(安全篇)

ARMv9能给ARM带来新一轮腾飞吗?(人工智能篇)

国产物联网操作系统的出路在哪里?

RISC-V架构能否引领物联网时代?

物联网到底为什么这么火?

谁才是物联网连接技术中的王者?

物联网平台大量出现能否将行业带入爆发式发展

脚本语言适合物联网开发吗

从“嵌入式”到“物联网”的四大转变

物联网发展新趋势

    </div>
相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
2月前
|
JavaScript 前端开发 Java
JavaScript语言
JavaScript语言
22 1
|
10月前
|
关系型数据库 物联网 PostgreSQL
沉浸式学习PostgreSQL|PolarDB 11: 物联网(IoT)、监控系统、应用日志、用户行为记录等场景 - 时序数据高吞吐存取分析
物联网场景, 通常有大量的传感器(例如水质监控、气象监测、新能源汽车上的大量传感器)不断探测最新数据并上报到数据库. 监控系统, 通常也会有采集程序不断的读取被监控指标(例如CPU、网络数据包转发、磁盘的IOPS和BW占用情况、内存的使用率等等), 同时将监控数据上报到数据库. 应用日志、用户行为日志, 也就有同样的特征, 不断产生并上报到数据库. 以上数据具有时序特征, 对数据库的关键能力要求如下: 数据高速写入 高速按时间区间读取和分析, 目的是发现异常, 分析规律. 尽量节省存储空间
661 1
|
17天前
|
JavaScript 前端开发 编译器
ECMAScript与JavaScript:一场语言的邂逅
ECMAScript与JavaScript:一场语言的邂逅
12 3
|
1月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的java语言的考试信息报名系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的java语言的考试信息报名系统附带文章源码部署视频讲解等
25 0
|
2月前
|
JavaScript 前端开发 Java
javascript是弱类型语言,一个函数参数可以接收不同类型的变量作为它的该参数
javascript是弱类型语言,一个函数参数可以接收不同类型的变量作为它的该参数
33 0
|
2月前
|
JavaScript 测试技术
【sgGoogleTranslate】自定义组件:基于Vue.js用谷歌Google Translate翻译插件实现网站多国语言开发
【sgGoogleTranslate】自定义组件:基于Vue.js用谷歌Google Translate翻译插件实现网站多国语言开发
|
2月前
|
前端开发 JavaScript 数据安全/隐私保护
前端javascript的DOM对象操作技巧,全场景解析(二)
前端javascript的DOM对象操作技巧,全场景解析(二)
|
2月前
|
移动开发 缓存 JavaScript
前端javascript的DOM对象操作技巧,全场景解析(一)
前端javascript的DOM对象操作技巧,全场景解析(一)
N..
|
2月前
|
存储 JavaScript 前端开发
JavaScript语言的基本结构
JavaScript语言的基本结构
N..
23 1
|
2月前
|
JSON JavaScript 前端开发
javascript语言ES5版本详解(一)
javascript语言ES5版本详解(一)

相关产品

  • 物联网平台