【MDCC专访】郑晔:用JavaScript征服物联网应用开发

【MDCC专访】郑晔:用JavaScript征服物联网应用开发

2016 年 9 月 23-24 日,由 CSDN 和创新工场联合主办的“MDCC 2016 移动开发者大会• 中国”(Mobile Developer Conference China)将在北京•国家会议中心召开,来自iOS、Android、跨平台开发、产品设计、VR开发、移动直播、人工智能、物联网、硬件开发、信息无障碍10个领域的技术专家将分享他们在各自行业的真知灼见。大会门票8折优惠中,五人以上团购更有特惠,限量供应(票务详情链接8折优惠,欲购从速!


物联网(IoT)时代日渐临近,但硬件应用少之又少。硬件研发流程冗长,工作繁琐,软件开发人员摩拳擦掌,却无法跨越硬件鸿沟,连接软硬件的桥梁 – IoT 开发平台呼之欲出。 JavaScript 作为近年来最为流行的程序设计语言,已经开始涉足 IoT 领域。

在物联网专场中,郑晔将为大家分享如何运用JavaScript征服物联网应用开发。近日,郑晔接受CSDN专访,并介绍了有关IoT技术开发平台所面临的挑战及IoT领域的发展前景,以及MDCC大会中的演讲话题。

【MDCC专访】郑晔:用JavaScript征服物联网应用开发

郑晔,Ruff CTO

郑晔,Ruff CTO,Oracle Duke 选择奖获奖作品 Moco的创始人,目前投身于硬件开发领域,致力于简化硬件应用的开发方式。对敏捷软件开发、软件设计、领域特定语言等方面有着深刻理解。

以下为采访实录:

CSDN:在物联网领域,您目前主要关注哪些技术?

郑晔:我们正在打造一个物联网应用的开发平台 – Ruff,让开发者能够以 JavaScript 编写硬件应用。

CSDN:从技术上来看,IoT发展不算慢,比如各种传感器,NB-IoT、LoRa、ZigBee等很多技术,为什么这个领域看起来很火,实际上并没有像现在的手机一样让我们离不开?

郑晔:在 IoT 领域,技术发展大于应用发展。

前面提到的所有概念都是技术,但就像我们端上桌子的菜是需要加工的,技术需要以应用的形态呈现在普通人面前,现在 IoT 所处的发展阶段类似于智能手机之前的手机时代。这是一个积累期,所有这些积累都会在未来爆发,但前提是,需要有各种各样的应用将其整合。

现在 IoT 领域面对的一大困境是,能够做 IoT 应用的人太少。一方面,懂得硬件开发的人并不少,但这些人大多的关注点都在技术层面,另一方面,理解做应用的人,互联网领域培养了很多,但是,他们不懂如何做硬件。所以,在 IoT 领域,技术和应用之间存在鸿沟。

我现在工作的 Ruff 项目,就是要填平这个鸿沟,让懂得做应用的人,进入到硬件开发领域,就像当年 Android 让软件开发者进入到手机应用开发领域,才有了今天的移动互联网。

CSDN:现在很多做IoT的,其实是从云计算的差异化服务出发,强调作为IoT的数据收集能力,您是如何看待的?

郑晔:之所以很多人选择从云计算入手,因为从技术的角度来说,这个切入点比较简单。不是说云计算本身技术简单,而是这个方面已经发展得很成熟了,在业界很容易找到相关的人。

IoT 应用真正的难点在于硬件本身的开发,想做好 IoT,不去做硬件开发只推进云,就是隔靴搔痒。

CSDN:您如何定义好的IoT应用?在您看来,当前要开发出好的IoT应用,开发人员主要面临哪些挑战?

郑晔:首先要明确一点,IoT 应用并不仅仅是一个硬件,就像滴滴打车不只是一个手机应用一样。好的应用是需要多方面的整合,比如,我们所说的 IoT 应用可能包含了硬件设备、手机应用、服务端应用、数据分析应用、人工智能应用等等。

在应用开发领域,人们已经可以很好地把手机、服务端等方面放在一起思考了,但硬件设备是在思考边界之外的,因为他们的能力之外的部分。我们现在努力的方向是,将硬件加入到应用开发的思考边界内,成为应用表达语言的一部分。

CSDN:结合您尝试过的开发技术,谈谈现有主流开发技术的哪些坑是需要注意的?

郑晔:作为一个软件开发人员,我很早就对硬件开发有兴趣了,买过树莓派,也了解过 Arduino,但是,没有一个我可以坚持玩下来。原因很简单,硬件开发是另外一套体系。我想学硬件开发,就像中国人要学英语一样。学英语最重要的是要练习,可是我学硬件,能做的东西很有限,每一样东西都新学一套新东西,所以,硬件这些技术对我来说,是一种投资回报很小的东西。

其他软件开发人员面临的问题和我是一样的,他们无法用这些硬件技术去工作,原因很现实,同等经验的做硬件的人可能没有做软件挣得多,所以,能够坚持学下去是很难的。

硬件开发主流技术存在的最大问题在于,抽象不足。我们知道,从技术角度看,IT 技术的进步在于,抽象层次的不断提升。举个不一定恰当的例子,现在硬件应用开发就像一个人要用汇编写淘宝,这怎么可能做得好,中间欠缺了很多层技术抽象。当一个人同时要考虑内存管理、硬件接口通信和用户体验的时候,很难保证都做得好。这才是阻碍 IoT 技术变成 IoT 应用的重要因素。

CSDN:用JavaScript开发IoT平台有什么好处?是否也会有一些坑呢?

郑晔:选择用 JavaScript 作为 Ruff 的主要开发语言,不谈好处,先看有什么其它选择。首先,这个选择必须是一门成熟的技术,否则,教育市场成本太大,所以,像 Lua 这种很多人喜欢的语言就被排除在外了。其次,C/C++肯定不能选,不能自动管理内存的语言对程序员要求太高。由此看来,选项也不多了,再结合 IoT 这种特定的环境,内存有限,排除像 Java 这种虚拟机很重的语言。

拜 Node.js 所赐,JavaScript 最近这些年发展很快,已经成为真正的,也是唯一一门全栈语言,它的社区蓬勃发展,成为各种新技术的试验场。另一方面,JavaScript 语言内核很小,所以,各种引擎实现很多,有极度优化的 V8,也有瞄准嵌入式的 Espruino。对我们而言,很容易找到一个起点。

选择 JavaScript 在嵌入式平台,第一个面临的问题就是性能。几乎每个做嵌入式的人都会关心这个问题,我承认就目前而言,一些极端性能和实时性要求的应用并不适合,但一个关键点在于,大多数应用对于性能要求并不高,所以,超过80%的应用用 JavaScript 是可以解决的。

从历史上看,一个新平台诞生初期都会受到性能质疑:

  • C 出现时,用汇编的人会质疑性能
  • Java 出现时,用 C/C++ 的人会质疑性能
  • Python、Ruby 成为主流时,Java/C/C++的人会质疑性能

但现状我们都知道了,技术进步是要一点点来,方向得到了认可,就会有更多资源投入去优化。

CSDN:能否概要解析用JavaScript开发的Ruff的核心技术架构?

郑晔: Ruff 做的事情很好理解,你可以把 Ruff 和 Node.js 等同起来。我们等于做了一个可以再嵌入式环境中运行的 Node.js。

在此基础上,我们构建硬件抽象部分,将底层接口进行了抽象,提供给 Ruff 的驱动开发者,驱动开发者再根据相应的数据手册,为设备开发驱动,以程序库的方式提供给应用开发者。应用开发者面对的接口就是纯粹的软件接口,根据这些接口构建自己的应用。

CSDN:您认为IoT领域会像机器学习领域一样出现很多来自大公司的开源技术吗?

郑晔: IoT 领域开源的内容已经很多了,从 JavaScript 引擎到各种框架的实现,从趋势看,未来的开源技术还会不断地出现。但这些开源技术不一定会来自大公司,因为从最近十几年的发展趋势来看,技术社区的发展已经不是由大公司主导,而大公司扮演的更多的是贡献者的角色。

CSDN:三星开源的IoT.js和JerryScript,也是针对JavaScript开发者,您认为能解决什么问题呢?哪些IoT开发人员可以关注这两项技术,哪些需求是它们满足不了的?

郑晔: JerryScript 是一个 JS 引擎,可以把理解成 V8,IoT.js 试图解决的问题与 Ruff 类似,只不过,他们做的还比较初级,还在直接暴露硬件访问接口而已。

用 JavaScript 解决硬件的解决方案有很多,一类是做 JS 引擎,提供硬件访问能力,就像 IoT.js,但通常没有做封装,太原始。另一类是提供硬件访问抽象,比如,Tessel,但这种项目往往是基于 Node.js,也就是说,很难运行在真正的硬件产品环境。

CSDN:您在MDCC 2016谈的话题,预计能够给IoT开发者带来哪些帮助?另外您最期待其他嘉宾的哪些话题的分享?

郑晔:我希望软件开发者知道,有了 Ruff,他们也能开发硬件,可以开始尝试新的未来。至于我个人,我非常希望了解其它公司在物联网应用方面的探索。


关于移动开发新技术,更多精彩尽在MDCC 2016,详情请查看大会官网:MDCC 2016移动开发者大会

【MDCC专访】郑晔:用JavaScript征服物联网应用开发