JavaScript物联网:架构与数据处理

更多详情


内容简介: 本书以JavaScript全栈物联网构建、数据面分析为主线,以实操推进,涵盖必要基础知识、架构、数据收集到展示、接入层开发、生物芯片、安全等核心技术,共三篇,11章内容。 第一篇是基础篇(第1~2章),主要讲解:① 物联网进化的方向、以数据为核心的本质;② JavaScript作为端到端物联网解决方案的可行性;③ Node.js基础以及关键技术,包括V8引擎、非阻塞I/O、事件循环与包管理,以及Node.js微服务构架设计。 第二篇是数据篇(第3~7章),主要讲解使用JavaScript完成物联网实时数据收集、存储、处理、分析、展示交互与安全的数据面技术与实践,穿插各种实用平台/框架的构建或者利用,逐步带领读者打造实时的物联网数据流收集与处理平台,并讲解如何利用深度学习算法等热点技术,同时涵盖物联网协议与互联网协议的互联互通。 第三篇是实战篇(第8~11章),以笔者开源的OpenFPGAduino为核心实际基于JavaScript的物联网开发,涵盖:① 网关节点设计与云服务利用;② 以物联网生物芯片实验测试系统为例,介绍子系统设计与整合。③ 物联网大数据系统设计,重点介绍数据的汇总与分析系统,以及基于日志的异常检测以及网络安全防护系统。


目录: 本书赞誉
序一
序二
前言
第一篇 基础篇
第1章 物联网系统基础 2
1.1 万物互联与互联网进化论 3
1.2 物联网的核心数据的流动 4
1.2.1 现代物联网的对称性 4
1.2.2 现代物联网的IP化 4
1.3 端到端物联网解决方案 5
1.3.1 JavaScript老树新花 5
1.3.2 物联网节点JavaScript开发 6
1.3.3 物联网客户端JavaScript开发 7
1.4 物联网大数据的必然趋势 9
1.5 物联网机器学习的必然趋势 11
1.6 本章小结 12
第2章 Node.js基础 14
2.1 标准库 14
2.1.1 简单模块定义和使用 15
2.1.2 标准库API编程 16
2.1.3 标准库console模块 18
2.2 V8引擎 22
2.2.1 编译执行 23
2.2.2 垃圾回收 24
2.3 非阻塞式I/O 25
2.4 事件循环 27
2.5 包管理器NPM 30
2.5.1 包结构 31
2.5.2 包管理 33
2.6 Node.js开发环境 34
2.7 微服务架构 35
2.8 本章小结 37
第二篇 数据篇
第3章 基于JavaScript物联网数据收集 40
3.1 嵌入式系统特点 40
3.1.1 高集成度 40
3.1.2 资源受限 41
3.1.3 长寿命 42
3.1.4 环境苛刻 42
3.2 实时数据收集 43
3.2.1 强实时任务 44
3.2.2 准实时任务 44
3.2.3 弱实时任务与最终实时任务 45
3.2.4 时延、抖动与吞吐量 46
3.3 Node.js物联网节点开发 49
3.3.1 内存分配与优化 50
3.3.2 延时测量与性能优化 58
3.3.3 Node.js 跨语言调用 60
3.3.4 Node.js 物联网通信协议开发 61
3.3.5 Node.js代码远程部署与更新 65
3.3.6 Node.js 服务发现 70
3.4 IoT.js物联网节点开发 73
3.5 Espruino的物联网节点开发 75
3.6 本章小结 76
第4章 基于JavaScript数据存储与处理 77
4.1 大数据基础 77
4.1.1 指数增长 77
4.1.2 水平扩展 79
4.1.3 MapReduce 80
4.1.4 高可用性 82
4.1.5 模式可复制 83
4.2 大数据实时处理 84
4.2.1 时间序列 84
4.2.2 Lambda架构 85
4.2.3 JavaScript物联网实时数据处理 88
4.3 Kafka大数据消息总线 89
4.3.1 消息总线 90
4.3.2 Kafka集群 91
4.3.3 数据存储 95
4.3.4 高可用性 98
4.3.5 连接器 98
4.3.6 JavaScript Kafka 数据收发 100
4.3.7 Kafka即服务 101
4.4 Spark大数据处理平台 104
4.4.1 HDFS 105
4.4.2 RDD 107
4.4.3 变换与动作 108
4.4.4 DAG调度器 110
4.4.5 数据帧 111
4.4.6 流处理 113
4.4.7 EclairJS JavaScript大数据处理 113
4.5 ElasticSearch大数据索引平台 116
4.5.1 JSON文档 117
4.5.2 模板与映射 118
4.5.3 确切值与全文文本 120
4.5.4 Lucene引擎与倒排索引 121
4.5.5 分片与副本 122
4.5.6 RESTful接口的JavaScript编程 122
4.6 本章小结 125
第5章 基于JavaScript物联网数据分析 126
5.1 人工智能与机器学习 126
5.1.1 监督学习 128
5.1.2 强化学习 134
5.2 深度学习 138
5.2.1 多层感知器网络 139
5.2.2 卷积神经网络 145
5.2.3 递归神经网络 149
5.2.4 大规模深度学习 152
5.3 深度学习物联网数据分析 155
5.3.1 基于卷积神经网络的物联网视频监控物体识别 155
5.3.2 基于Q深度学习的物联网扫地机器人 156
5.4 本章小结 158
第6章 基于JavaScript物联网数据展示与交互 159
6.1 物联网网页应用开发 159
6.1.1 HTML 160
6.1.2 CSS 165
6.1.3 本地数据存储 170
6.1.4 AJAX 171
6.1.5 WebSocket 174
6.1.6 多媒体 176
6.1.7 数据可视化 179
6.2 Angular.js网页应用开发 186
6.2.1 单页应用 187
6.2.2 MVC设计模式 189
6.2.3 双向绑定 191
6.2.4 依赖注入 192
6.2.5 URL路由 193
6.3 Ionic移动应用开发 195
6.3.1 Cordova 196
6.3.2 UI组件 197
6.3.3 Ionic集成开发环境 199
6.3.4 物联网单页应用程序 201
6.4 本章小结 205
第7章 基于JavaScript物联网数据安全 206
7.1 物联网的安全挑战 206
7.1.1 未来已经来临 206
7.1.2 早期物联网安全 207
7.1.3 现代物联网安全 208
7.2 攻击表面与安全防护 209
7.2.1 设备安全 210
7.2.2 网络安全 211
7.2.3 数据安全 213
7.3 安全猎手与击杀链 215
7.3.1 基于大数据的物联网安全监控系统设计 216
7.3.2 物联网安全监控系统击杀实战 219
7.4 JavaScript物联网数据安全 221
7.4.1 JavaScript程序漏洞扫描 221
7.4.2 JavaScript网络传输加密 222
7.4.3 JavaScript实现访问控制 225
7.5 本章小结 227
第三篇 实战篇
第8章 物联网智能网关系统开发 230
8.1 物联网智能网关 230
8.2 开源硬件OpenFPGAduino 231
8.2.1 开源硬件简介 232
8.2.2 OpenFPGAduino硬件设计 234
8.2.3 OpenFPGAduino软件设计 235
8.3 Node.js物联网系统开发 236
8.3.1 Arduino.js网络系统 237
8.3.2 Express HTTP服务 237
8.3.3 微服务架构 238
8.3.4 数据库微服务 242
8.3.5 服务发现 244
8.3.6 物联网协议转换 246
8.3.7 硬件访问 248
8.3.8 硬件仿真 252
8.3.9 Mocha集成测试 254
8.4 FPGA实时性系统开发 256
8.4.1 FPGA简介 256
8.4.2 Qsys总线 257
8.4.3 内核空间驱动 259
8.4.4 用户空间驱动 260
8.4.5 FPGA在线应用配置 261
8.5 本章小结 262
第9章 物联网云管理与开发环境 264
9.1 云计算与云服务 264
9.1.1 虚拟化 265
9.1.2 容器化 266
9.2 物联网云服务 272
9.3 基于HTML的嵌入式软件开发环境 274
9.4 基于Blockly的云软件开发环境 275
9.5 基于Docker与云存储的云开发编译部署环境 280
9.6 基于Yeelink云的物联网远程管理与控制 285
9.7 基于Plot.ly数据可视化云服务 288
9.8 基于听云物联网运维服务 289
9.9 本章小结 291
第10章 物联网生物芯片实验测试系统 292
10.1 生物芯片测试平台 292
10.2 生物芯片测试平台总体设计 294
10.3 平台电源与机箱系统设计 296
10.4 控温控湿度平台系统设计 298
10.5 实验试剂注射进样系统设计 302
10.6 高精度三轴移动定位系统设计 304
10.7 显微镜图像监控系统设计 309
10.8 物联网实验自动化控制系统设计 309
10.9 本章小结 312
第11章 物联网大数据分析系统 313
11.1 物联网大数据平台 313
11.1.1 物联网络三层架构 315
11.1.2 物联网大数据信息处理平台设计 316
11.2 物联网数据汇聚 319
11.2.1 物联网MQTT Kafka网桥 319
11.2.2 物联网数据平面Kafka聚合网关管理 322
11.2.3 物联网控制平面ZooKeeper节点管理 323
11.3 物联网数据清洗 324
11.3.1 抽取变换加载 325
11.3.2 一致性检查 326
11.3.3 重复数据去除 327
11.4 物联网数据统计分析与机器学习 334
11.4.1 统计分析与机器学习 335
11.4.2 基于Spark批处理统计分析 335
11.4.3 基于Kappa架构实时统计分析 336
11.4.4 在线机器学习 338
11.4.5 基于RLS的异常检测 339
11.5 物联网日志异常检测与监控系统设计 341
11.5.1 物联网日志分析 341
11.5.2 LogStash日志收集与解析 342
11.5.3 ElasticSearch日志存储与索引 344
11.5.4 Kibana日志可视化 344
11.5.5 日志异常检测与告警 346
11.6 物联网数据安全日志机器学习系统设计 350
11.6.1 攻击指纹DGA 351
11.6.2 DGA应用实例DNS隧道 353
11.6.3 自然语言处理 355
11.6.4 深度学习识别DGA 358
11.7 本章小结 364

前言: 为什么要写这本书
Atwood定律:任何能够用JavaScript实现的应用系统,最终都必将用JavaScript实现。
——Jeff Atwood  
探索与开拓知识的新疆域是我一直以来秉持的生活与学习理念,而撰写这本书正是这样的理念的一次实践。我一直深信着Atwood定律并身体力行贯彻实践。JavaScript是一门古老的语言,它诞生于互联网的第一入口浏览器之上,几乎伴随着整个互联网的发展,见证了互联网的崛起过程。在这个物联网的新时代,这门互联网时代的语言却老树开新花,在新时代发挥新的活力。正是秉持着这样的信念,我希望为JavaScript的新征程贡献自己的一份微薄力量,这也是我撰写本书的第一动力。
作为互联网技术的进化,物联网开发技术体系并非孤立的技术栈,而是向上承接了互联网技术、大数据技术乃至人工智能技术,向下统领了嵌入式硬件开发,是承上启下的全栈开发技术。作为正在快速进化中的新互联网技术,我们并不能预测物联网技术栈最终的样子:统一的开发语言是JavaScript还是Python,抑或其他编程语言;HTTP、WebSocket、MQTT、CoAP等协议谁会是最后的赢家。随着物联网的不断进化,我们甚至可能无法预测其最终形态,也许物联网根本就没有一个最终的形态。但是,我们仍然可以看清物联网发展的轨迹与必然趋势,那就是:开发技术栈必然向全栈化方向发展,数据流动必然向无边界化方向发展。互联网的核心是数据的流动,数据的流动为我们带来了难以想象的价值,而物联网又将这一核心推到了更高的高度,打破了互联网原有的边界,让千千万万节点设备中的数据流动了起来。
全栈化的开发正是顺应了这种趋势,打破了在开发层面中那些阻碍数据流动的技术壁垒,将芯片、嵌入式、网络、大数据、人工智能、信息安全等诸多领域纳入物联网的全栈开发中,实现端到端的完整解决方案,真正实现数据的流动并让数据为人类服务,让我们以更高效、更智慧的方式来发掘数据的价值,实现数据的价值。“未来已来,只是尚未流行”,凯文·凯利在《必然》中如是说。技术发展的必然不是说我们重复多少次,最终都会发展出同样的结果,而是科技在本质上的一种偏好,这种偏好使得它有朝某种特定方向发展的趋势,这种技术向某一个方向发展的趋势是一个必然。对于物联网来说,最终使用哪种编程语言或者哪种协议不是必然,而真正的必然是物联网开发的全栈化以及数据流动的无边界化。而本书目的之一就是让读者,也包括笔者自己在物联网进化的潮流中遨游,学习技术并洞察一二趋势,在它们还未流行前占得先机。在物联网进化的洪流中,为其发展贡献自己的一份力量,不至于惶恐。
选择JavaScript作为物联网系统的开发语言也是一种减法策略,力求释放少的潜能,取得多的成就。对于物联网节点来说,开发不仅有性能的限制,也有成本的限制。由于性能的限制,大家无法将体验做得和iPhone一样好;因成本的限制,我们总是希望以最少的开发成本及最简单的系统设计完成尽可能多的任务。这导致在设计过程中需不断做减法:通过使用手机进行控制,免去了输入/输出设备;通过使用基于JavaScript的HTML5,免去了开发与安装手机App;通过使用Node.js作为Web服务器,免去了兼容性问题。这样可以专注于节点的控制、图形化与用户体验等,因此使用JavaScript做全栈开发,无论在开发成本还是在性能上都是目前最优的物联网解决方案。而利用NPM等大量现有开源JavaScript资源,可以非常容易而快速地搭建起一整套物联网系统。本书另一个目的是希望使用JavaScript来降低读者学习物联网开发的难度,读者无须掌握多种不同的开发语言,就能够利用JavaScript快速开发出完整的物联网应用,实现从0到1、从理论到实践的跨越。
本书特色
正如Linus的名言:“Talk is cheep.Show me the code.”一样,本书最重要的,也是首要的一个特点就是注重实践,特别是代码实践。
从实践层面上讲,笔者不仅在前面的理论章节中给出了大量使用JavaScript进行物联网开发与系统设计实践的例子,而且在实战篇中以真实项目的完整设计作为内容的主体,将项目的重要细节呈现,以飨读者。笔者力求最大化地使用JavaScript,在书中一切适合使用JavaScript来进行分析与描述的部分,一律使用JavaScript来实现。
从技术层面上讲,本书首次介绍了许多仍然处于实验阶段的新技术,其中包括基于Node.js
的一些大数据处理技术(如Skale),以及基于JavaScript的深度学习技术(如Keras.js)。
在写作本书时,笔者对国内外使用JavaScript开发的现状做了充分的调研,力求让读者以一个最前沿的视角来学习JavaScript物联网开发,与此同时介绍了许多在Node.js中已经非常成熟的设计技术,包括像微服务这种已经融入当前JavaScript主流设计中的关键技术。笔者所介绍的这些技术也许有一天会落伍或者被淘汰甚至被抛弃,但是通过介绍这些技术能够让读者在技术层面上开阔眼界或博采众长,以不变应万变应对物联网这个仍然方兴未艾、飞速发展的科学技术。
从开源精神层面上讲,笔者为本书专门建立了一个“GitHub组织”:
https://github.com/JavaScriptIOT。其中包括大量笔者收集到的可以应用到物联网的JavaScript项目,以供读者参考借鉴与使用。GitHub项目https://github.com/JavaScriptIOT/book包括本书所有程序的源代码,欢迎读者朋友访问下载。同时笔者还开发与维护着物联网开源项目https://github.com/OpenFPGAduino/OpenFPGAduino,其中毫无保留地开源了从硬件到软件的所有设计,里面包含了笔者在物联网领域的开源实践与设想,这也是写作本书的技术实现与案例研究平台,为读者提供了继续研究的载体,是本书的另一大特色。欢迎读者一起参与开发开源物联网项目,为开源物联网添砖加瓦。
从适合读者阅读和掌握知识的结构安排上讲,本书分为基础篇、数据篇和实战篇。在基础篇,我们会对物联网进行基础性介绍,并补充Node.js的基础知识。数据篇会详细解析物联网在不同层次的设计与数据相关的处理。而在实战篇中,我们会结合前面所学的知识从物联网实际需求出发,动手设计我们自己的物联网系统,从而做到理论联系实际,通过实践加强理论理解。
读者对象
物联网嵌入式软件工程师
物联网全栈软件工程师
物联网大数据工程师
物联网数据分析科学家
物联网安全工程师
物联网运维工程师
物联网系统架构师
其他对物联网技术感兴趣的人员
如何阅读本书
本书分为3篇,共11章。
第一篇(第1章和第2章)是基础篇,主要讲解JavaScript物联网设计最基础的内容,包括以下内容。
第1章:讨论了物联网进化的方向及物联网的核心数据的流动,顺应这一必然趋势,物联网必须要采用端到端的解决方案,而JavaScript是实现这一方案的很好选择。
第2章:详细介绍了Node.js基础及其中的一些关键技术,包括V8引擎、非阻塞式I/O、事件循环及包管理,同时介绍了目前流行的Node.js微服务架构设计。
第二篇是数据篇(第3~7章),主要讲解使用JavaScript完成围绕着物联网的数据收集、存储、处理、分析、展示交互与安全在内的与物联网数据相关的方方面面,包括以下内容。
第3章:详细介绍了如何使用Node.js来完成嵌入式系统的设计,如何使用JavaScript完成实时物联网数据收集,以及如何使用物联网协议实现与互联网的互连互通。
第4章:详细介绍了如何使用JavaScript结合大数据技术来实现对呈指数增长的物联网数据进行存储与处理,并为物联网实时数据处理构建了基于Lambda与Kappa的大数据处理架构。
第5章:详细介绍了如何使用JavaScript来构建基于人工智能与机器学习的物联网数据分析平台,其中着重介绍了目前比较热门的深度学习算法。
第6章:详细介绍了如何使用JavaScript来构物联网人机交互界面。其中将重点放在了基于HTML5的Hybrid App框架上,实现了一次开发、部署不同设备的功能。
第7章:详细介绍了物联网的安全问题、挑战与解决思路,以及在使用JavaScript过程中如何加强安全。
第三篇是实战篇(第8~11章),以笔者真实的物联网项目为核心,抽丝剥茧为读者讲述如何在实际的项目应用JavaScript实现物联网的开发,包括以下内容。
第8章:以笔者的开源物联网硬件OpenFPGAduino为中心,详细介绍了使用JavaScript进行物联网网关节点设计的细节,特别是如何使用Node.js完成物联网的开发。
第9章:主要介绍了如何在物联网开发中使用云服务。其中以云软件开发环境及云开发编译部署环境为例,为读者展示了如何利用云技术来提高物联网开发效率、降低开发难度。
第10章:以物联网生物芯片实验测试系统为实例,介绍了在完整的项目中如何根据需求设计物联网的每一个子系统,并将这些子系统组合成一个完整的物联网项目。
第11章:以物联网大数据系统的设计为中心,重点介绍了如何构建物联网数据的汇总与分析系统,包括构建基于物联网日志的异常检测及网络安全防护系统。
为方便读者阅读理解本书,这里绘制了本书的各篇章的技术关系与结构,本书的结构就像一张神经网络,每一篇分别代表不同的神经网络层,每一章代表一个神经元,每一个神经元之间的箭头代表了技术的层次关系。
通过阅读本书,读者不仅能从零基础开始学习物联网相关知识与技术,而且可以通过实例学习掌握如何搭建和开发完整的物联网系统;本书使用JavaScript作为统一的编程语言,降低了读者在学习物联网过程中的难度,避免了不断学习各种编程语言而无法集中精力探索物联网本质的困扰,也为未来实际应用与开发提供参考。
读者可以依照章节顺序阅读所有章节,也可以根据结构关系图选择阅读连接数量最多的重点章节。比如,第1章与第11章这样贯穿全书的章节,以及第2、3、6章这样被很多章节用到的技术,之后阅读剩余的章节。
读者也可以首先阅读基础篇的所有章节,然后直接阅读实战篇,以对物联网的开发有一个具体形象的认识;再回过头来阅读数据篇的理论部分以加强对知识的理解。
如果你是一名初学者而且没有任何JavaScript经验,请在阅读本书之前,先学习一些JavaScript基础理论与知识,《JavaScript权威指南》会是一个不错的选择。
勘误和支持
由于笔者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果你发现书中或程序中的错误或者有更多宝贵意见,欢迎在GitHub项目的问题区https://github.com/JavaScriptIOT/book/issues交流,我会尽量在线上为读者提供最满意的解答。同时,你也可以通过邮箱lizhizhou1983@gmail.com联系到我,期待得到你们的真挚反馈,在技术之路上互勉共进,让我们一起来探索物联网技术的新疆域。
致谢
感谢上海浦北信息科技有限公司,作为公司的创始人之一,本书中的很多实践内容都来自于公司草创之初的探索与尝试。感谢我的共同创始人李旭为开源物联网平台OpenFPGAduino的硬件设计与研发做出的贡献,以及朱壮晖为硬件生产所做出的努力。感谢大家一起完成了物联网生物芯片实验测试系统项目。
感谢中国科学院微系统与信息技术研究所对大学生创业的支持,并提供了生物芯片实验测试系统项目。感谢微小卫星工程中心的朱振才导师与张锐导师在我博士学习期间提供的宽松的科研学习环境,使我能够在专心于统计机器学习研究的同时还能有时间关注物联网
研究。
感谢曹友盛博士、丁俊勇、刘锋、李俊周、颜苑等多位老领导、学界大师、业界领袖的关怀与指导。感谢ITPUB、CSDN、开源中国与GitHub社区的各位技术专家们的博客文章以及开源项目,每次阅读必有所获,本书也多处引用了这些博客开源项目中的观点、思想与
方法。
特别致谢
最后,我要特别感谢我的太太慧慧和女儿婷婷,我为写作这本书,牺牲了很多陪伴她们的时间,但也正因为有了她们的付出与支持,我才能坚持写下去。
同时,感谢我的父母及岳父、岳母,特别是我的岳母,不遗余力地帮助我们照顾女儿,有了你们的帮助和支持,我才有时间和精力去完成写作工作。
谨以此书献给我最亲爱的家人,以及众多热爱物联网技术的朋友们,愿我们大家的努力能使婷婷这样的下一代拥有一个精彩纷呈的物联网世界!
李知周

序言: 序一
优美的语言应该是简单明白的,最有生命力的语言需要改变自己以适应时代的发展。尤其是进入智能化、物联网化、大数据化的时代,语言更需要适应这种变化。没有一个语言能让我像对JavaScript这样如痴如醉的。正因为它的简单和无时无刻的变化,让它变得越来越无所不能。JavaScript是一种直译式脚本语言,也是一种动态类型、弱类型、基于原型的语言,内置支持类型。第一次接触JavaScript是1996年,当时在美国惠普用JavaScript开发一个Web框架下的SAP应用,JavaScript引擎作为浏览器的一部分。JavaScript初看起来像Java的格式,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。后来,在微软和欧洲计算机制造商协会的共同推动下,JavaScript兼容ECMA标准。 JavaScript老树新芽的生发是在Node.js出现后,让它可以开发后台,而PhoneGap和Ionic之类的框架让它可以开发App,等等。JavaScript似乎在向很多领域延伸它的魅力,使物联网端到端的统一成为可能。
物联网架构可以认为是对互联网的扩展。互联网到物联网的一个最大变化是应用终端由硬件层上的采集器取代了。物联网的应用实际上是一个控制流和数据流的双向流动。控制指令由应用平台(AP)、应用使能平台(AEP)、连接管理平台(CMP)流向智能硬件平台(SSP)。而数据流反之,由智能硬件平台流向可视化平台。这个改变充分体现出物联网的数据流本质。物联网不再局限于使用 HTTP 协议来传输数据,它还会使用受限制的应用协议(CoAP)、消息队列遥测传输(MQTT)协议。硬件层上的物联网网关负责处理来自各个硬件设备的数据,需要有更好的边缘数据处理能力,并将其上传至AEP。同时,它会提供一个无线(如ZigBee、Lora、NBIoT)接口作为数据的入口。
想要完成一个并不复杂的物联网系统,你可能需要使用6个不同类型的工程师和多种开发语言: 一个设计电路图的硬件工程师,一个懂硬件的嵌入式工程师,一个写服务端应用的工程师,一个写Web前端的工程师,以及对应的Android和iOS工程师,而这些工程师又会在开发中使用多种语言。JavaScript的无所不能则使得我们可以使用JavaScript一种语言来完成物联网的全栈开发。物联网最精彩的部分无非是最中间的应用使能平台(AEP)。在该平台可以充分运用数据技术,实现认知转换,能力开发和挖掘。JavaScript在这一层上完成了和各种数据技术包的结合调用。物联网使用JavaScript进行全栈开发将大大改善开发效率、开发人员知识面等难题。
李知周博士用他多年来在世界500强IT企业的工作经验,在网络、大数据、人工智能、信息安全等诸多领域拥有的丰富实践,以及对物联网数据流的独特见解,写成了本书。作者把JavaScript物联网架构开发和DevOps等现代化开发方法、框架融合在一起。本书用实战开发的手法驱动,一步一步把实现细节讲解得非常明白,只要逐个完成书中的项目,你就可以彻底理解怎么构建全栈物联网应用,理解相关的所有组件。本书除了会带领你通过现代化的编程思路一步一步完成JavaScript物联网全栈开发,还通过实战演练向读者介绍了实用开源硬件OpenFPGAduino。总之,本书是一部难得的物联网和工业4.0开发者的学习指导和参考书。
——曹友盛,前思科中国研究院副院长、全球研发总监,中兴物联网与
大数据研究院首席科学家、中兴力维首席技术官
序二
物联网是以感知为目的的物物互联网络,是继互联网之后的世界信息产业第三次浪潮的代表,是信息技术的未来制高点和产业升级的核心驱动力。物联网的发展将引发新一轮产业革命与商业变革,推动物联网的发展与应用已成为各国提升信息产业核心竞争力和发展新型经济的战略选择,也成为推动产业升级和提高社会信息化水平的重要抓手。
以物联网为代表的信息通信技术正加快转化为现实生产力,从浅层次的工具和产品深化为重塑生产组织方式的基础设施和关键要素,深刻改变着传统产业形态和人们的生活方式,催生了大量新技术、新产品、新模式,引发了全球数字经济浪潮。
随着各国政府对物联网技术重视程度的逐渐增强,物联网对各行业的影响越来越深远。美国市场研究公司Gartner预测,到2020年,全球物联网设备将达到260亿台,市场规模到1.9万亿美元。麦肯锡的预测更惊人,到2025年,市场规模将到11.1万亿美元(相当于60万亿人民币)。
第三届世界互联网大会上,百度董事长兼CEO李彦宏在全体会议上表示:移动互联网时代已经结束,不会再有新独角兽,物联网已经为时不远,不管是电视、冰箱,还是椅子、桌子,都可以用自然语言跟它进行对话。而在物联网的整个概念里,数据流是整个网络核心中的核心,整个物联网就是数据流动的网络,物联网所要完成的是将数据的收集、传输、存储、处理、分析与展示连接在一起。本书就讲述了如何设计并构建一个完善的物联网系统,使用JavaScript作为统一的编程语言在物联网系统中实现数据的收集、传输、处理、分展示。
作者是物流网领域“全栈”工程师,注定这本书将是一本科普与实战相结合的进阶读物。既能从零基础开始学习物联网知识与技术,又能通过实例掌握如何搭建和开发完整的物联网系统。
本书将用JavaScript作为链接,带领读者进入浩瀚的物联网世界。在使用单一的JavaScript语言的前提下,提供大数据、机器学习等不同视角来审视物联网中数据的收集、传输、处理、分析与展示的方方面面。
——颜苑,中国物联网研究发展中心副主任、智能传感器中心副主任及研究员

媒体评论: 物联网所引领的万物互联已是大势所趋,它和大数据、人工智能等新的技术进步一同掀起了新一波的产业创新浪潮。各种新技术、新理念以及新需求也对物联网产品的构建提出了诸多新的挑战。一方面,物联网应用通常是一个复杂的分布式系统。哪怕一个简单的应用也往往涉及多个平台的数据采集、分析、预测和用户交互等方方面面的任务。通用且广为使用的构建技术就显得尤为重要。另一方面,天下武功,唯快不破。在创新不断涌现的物联网领域,拥有可以快速构建、测试、部署和迭代更新原型的技术就意味着有机会领先一步,更快把产品推向市场。
本书详细介绍了JavaScript与物联网的结合,很好地契合了物联网开发的这两个重要需求。本书充分阐述了JavaScript在物联网设备端、用户端到云端等各种应用开发所涉及的知识和技巧。正如这些应用实现过程所展示的,JavaScrip作为Web的标准编程语言(也是2017 GitHub上最热门的编程语言),在物联网领域同样可以做到全栈覆盖与快速开发。特别值得一提的是,本书同样体现了物联网覆盖面广和注重实践的特点。对于众多前沿课题都有涉及,并且为了避免泛泛而谈,作者专门编写了大量实际可操作的案例来帮助读者深入理解相关知识。无论是初学者、抑或想从事物联网开发的传统Web编程者,还是资深的物联网工作者,都可以从本书中找到对自己实际工作有帮助的内容。简言之,这是一本阅读后,可以帮助您快速构建可商用化物联网应用的好书。
——丁俊勇,Intel软件与服务部门首席工程师
互联网正在形成与大脑高度相似的类脑系统,而物联网是互联网发展到一定阶段后产生的感觉和运动神经萌芽,除了人工智能算法之外,驱动这个巨大系统运转更需要一个统一的、强大的程序语言,本书将互联网时代的JavaScript语言应用到物联网连接的智能设备上,这是一个非常有意义的创新。它让我们看到了未来实现的曙光。全面深入了解JavaScript,也许是进入互联网大脑时代的一把钥匙。
——刘锋,《互联网进化论》作者,人工智能学家主编
物联网已经开始影响每一个组织、家庭及个人,其与人工智能、云计算、大数据等技术正在推动我们进入万物互联的智能社会。具有JavaScript交互能力的智能设备在逐渐增多,其在硬件端以及物联网领域的大规模应用将出现全新一轮的机会。可以说本书为JavaScript的开发者打通了一条通向物联网应用构建的高速路,实现从0到1的突破。
——李俊周,京东智能市场总监