作者 | 郑晔
责编 | 苏宓
微信公众号ID | csdn_iot
物联网(Internet of Things,简称IoT)时代的脚步声已经越来越响亮,每个程序员都希望跟上时代的步伐,不为时代浪潮所淘汰。面对IoT这个纷争初起的领域,程序员们该何去何从?本文将带领诸位进行一次IoT应用开发平台的游历之旅,帮助大家了解该领域当今的发展状态,尤其是基于JavaScript的IoT应用开发平台,为各位搭车IoT奠定一些基础。
开启行程之前,我们先明确讨论范围,在行业里,谈到IoT开发平台,有人说的是云,如各大云厂商;有人说的是硬件端,如各家硬件厂商;在这里我们将讨论是,硬件端的开发平台,对于大多数软件开发人员而言,这是一个更加陌生的领域。
1
IoT应用开发平台简介
在IoT应用开发领域中,大家熟知的开发平台主要有如下几类:
嵌入式操作系统,包括VxWorks、FreeRTOS、LiteOS等;
极客硬件平台,包括树莓派、Arduino等;
JavaScript IoT应用开发平台,包括Ruff、Tessel、JerryScript、Johnny-Five等。
嵌入式操作系统,从功能的角度上来说,能够满足目前的绝大多数需求。但是:
其入门门槛极高,开发者想要成为优秀的嵌入式开发工程师,需要学习大量软硬件知识。相较于软件行业,嵌入式领域的人才数量受到了限制。
嵌入式领域在开发方法上已经大幅度落后于整个行业的发展。敏捷软件开发方法以及精益创业的理念,受到工具所限,在嵌入式领域极少得到应用,所以该领域在工程方法上发展缓慢。
这些操作系统的编程概念通常属于专用领域,所以知识很难在行业中共享,开发者在行业中流动也相对困难,造成的结果是,嵌入式领域对于现代软件开发理念的理解也整体上落后于软件行业。
极客硬件平台,其初衷是降低开发门槛,让更多开发者得以进入到硬件开发领域中。但是:
它只是在操作方面的入门难度上在努力,而开发真正困难的部分在编程概念。对于大多数软件开发者而言,难点在于硬件中的编程概念。各种各样的接口及参数,这是软件开发者难于理解和掌握的。
更关键的因素是,这些平台只解决了原型开发的问题。开发者即便能够通过它实现了一个产品原型,也很难将它用到真正的产品中。应用到产品中,往往要重新设计硬件,这些平台的优势就荡然无存了。
二者最本质的复杂度在于其编程模型,对于软件开发者来说,GPIO、I2C之类硬件接口完全是另一种语言,除了要了解接口的编程方法,还要针对每个硬件,阅读其数据手册,了解参数细节。
目前为止,诸位会想,IoT行业对软件工程师简直犹如另一个世界,一点都不友好。是的,很多人都是这么想的,于是,有人想用更高级的语言改变这个世界,这其中最为活跃的便是javascript社区。
2
JavaScript IoT应用开发平台
JavaScript IoT应用开发平台,其建设初衷是让开发者能够用JavaScript开发IoT应用,一方面可以更好地构建抽象,另一方面,可以将比较现代的开发方式引入到硬件研发中。JavaScript IoT应用开发平台目前主要分为几大类:
在硬件上运行JavaScript,如JerryScript、Espruino等;
提供硬件抽象能力,比如Tessel、Johnny-Five、Cylon.js等;
面向生产的能力,如Ruff。
2.1
在硬件上运行JavaScript的平台
该类平台主要解决的问题是让硬件平台具有运行JavaScript程序的能力,主要是在资源受限的硬件上,比如MCU(Microcon