天天看點

物聯網場景下為什麼可以選擇JS語言開發門檻應用熱更新JS引擎總結更多精品好文

來源 | 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%的前端開發者選擇該架構

物聯網場景下為什麼可以選擇JS語言開發門檻應用熱更新JS引擎總結更多精品好文
  • 入門門檻低:基于html模闆,對熟悉html開發者的而言非常容易了解和學習
  • vue-cli腳手架:工程一鍵初始化/建構.簡化了前端開發人員開發流程
  • 平滑內建:很容易在現有的工程中內建,且不會幹擾原有工程邏輯.
  • vue對輕量級工程更加友好,快速,友善,一般3-5天就可以開發應用
  • 社群營運:vue尤其在國内運作的比其他前端架構做的要好

目前HaaS開發者架構将Vue.js架構适配到了IoT帶屏裝置上,具體快速上手可以見

文檔

應用熱更新

熱更新就是當你在開發環境修改代碼後,不用重新整理整個頁面即可看到修改後的效果。

不同于傳統嵌入式開發流程,JS應用在PC端開發完成後,無需編譯、連結、固件燒錄等繁瑣步驟,使用者可直接j将JS應用推送到裝置上,且不需要重新開機裝置就可以驗證,達到應用熱更新能力,該特性可以有效的降低IoT更新對OTA的依賴。

一般JS熱更新分為本地熱更新和線上熱更新,下面拿HaaS 輕應用熱更新舉例。

本地熱更新

物聯網場景下為什麼可以選擇JS語言開發門檻應用熱更新JS引擎總結更多精品好文

通過有線方式(序列槽)對裝置的應用進行更新,可适用于裝置無法聯網或輕應用代碼運作異常的情況。

下載下傳模式

本地熱更新與實際硬體的接線強相關,以 HaaS600開發闆為例,需先切到下載下傳模式,參考

HaaS600

線上熱更新

物聯網場景下為什麼可以選擇JS語言開發門檻應用熱更新JS引擎總結更多精品好文

通過無線方式(網絡)對裝置進行熱更新。當裝置不在本地或者裝置無法跟電腦連接配接的時候,可以通過網絡通道将輕應用代碼下發到裝置,類似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 V8 --jitless V8 (JIT)
Executable size 620K 331K 211K 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
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>