物联网应用开发程序是用什么语言来开发的?

物联网世界的普通话,编程语言一览
iot101君编辑整理
10:33:11 来源: 物联网智库
对于开发者和工程师来说,物联网是一个全新的平台。但当我们进入新世界,有一点从未改变,那就是编程语言。
物联网开发项目正在全球范围内如火如荼的地进行。新型的硬件平台的出现能够让工程师们能够以前所未有的便捷在物联网应用中构建嵌入式系统。然而硬件平台选定,接下来的开发选择也让我们应接不暇,也更具挑战。
首先和iot101君来一同来看一下常见的物联网编程语言有哪些?
C语言最早是用来为电话交换机编程的,所以其作为嵌入式开发的合理选项也是一件很自然的事情。C语言可以被看作是软件开发世界的一门通用语言:基本上其可用于几乎所有的嵌入式系统平台;虽然仍有少部分平台不支持C语言,但C语言仍然是其专用语言软件工具包的开发的基础。
通常情况下,一个专业的程序员对C语言都有很好的了解,就算目前他们并没有这样做,但如果其在职业生涯中学习一些C语言,对其职业的未来也是大有回报的。今天看来,C语言确实是有一点落后了:它是一门面向过程而非面向对象的开发语言,不附带内置图形用户界面,而且语言需要经过编译、而不是解释。尽管如此,C语言仍然是物联网开发的重要候选项之一。
在1980年代,当程序开发开始向&面向对象&转变时,面向过程的开发语言Fortran、Cobol和C看起来似乎就要销声匿迹了。后来,Fortran和Cobol语言真的进入了博物馆,而C语言则在Bjarne Stroustrup的帮助下获得了一个面向对象的预处理器&&这个预处理器后来被称为C++。
C++保留了C的基本性质,还额外增加了数据抽象、类和对象。所有的这些特性使得C++成为编写基于Linux的嵌入式和物联网代码的热门选择。这门编程语言的使用寿命已经超过了30年,而且至今还依然很强大。
C和C++都更接近底层设计,所以其允许对其运行的硬件进行非常直接的控制。当你在需要对硬件进行非常精细的监测和控制时,他们都是很好的选择,但这也意味着所写出的代码专用化程度很高,也就是说代码的移植性比较差。
Java是一种面向对象的开发语言,其拥有非常良好的移植性:编译器中的硬件依赖型性非常少!为了实现对特定硬件部分的精细控制,Java依赖于各种硬件支持库。
从经济角度上看,Java是一门非常强大的语言:对Java代码的一次投入可以在多个不同的平台收货果实。而且在全球许多不同的大学中,Java也是作为计算机科学和电子工程的主要编程教学语言之一,所以懂得Java的人才也比较多。但是首先你要确定你选择的平台支持Java,因为通常性能越低的平台对Java的支持也越低;而且还要确保你有合适的硬件支持库。
4、JavaScript
人们很容易就将JavaScript是为了Java的变种,但这是错误的。这两种编程语言确实在一些地方有共同之处(比如两者之间有一些库是可以共用的),但这两种语言是分别开发出来的,并没有语法和语义的共享。
JavaScript,顾名思义,是一种脚本语言。这种脚本语言被广泛地应用在网页前端应用的构建上。比如,如果你想在树莓派上面使用Apache服务器来收集基于Arduino的传感器网络数据,JavaScript就能为你提供很大的帮助。
JavaScript最先出现在Netscape上,而现在它已经成长为一门功能齐全的语言。尽管如此,你却不能使用其来为你的轻量级嵌入式控制器进行开发,因为其解释性的结构意味着需要为之付出额外的代价;换句话说,你至少需要在树莓派等级的设备上使用这门语言。
一门在节假日开发的、以一个戏剧剧团命名的语言似乎看起来不应该成为严肃的开发应用的候选者。然而,Python已经成为了网页开发中的&go-to&开发语言之一,而其应用领域也已经扩展到了嵌入式控制和物联网领域。Python在很多方面都非常灵活。比如,其实一种解释性的语言,可以被提交给运行时编译器或者通过多个预编译器中一个运行,这样可以使得紧凑的可执行代码进行分布式的处理。
Python对编程团队来说非常优秀的原因是其对代码可读性的强调。该语言的设计规范强调了可读性和紧凑的、优雅的语法的重要性。任何从事过优化别人的C语言代码工作的人都会对优良的可读性心存感激。
在众多的语言中,Python成为嵌入式开发语言的可能取决于嵌入式平台是否有足够的功率。对于任何需要收集数据的应用而言,都需要以某种数据库格式将其所收集到信息转变为控制信息,Python则是一个有力的竞争者。
首先要说明的是Go语言和Go!语言并不一样。这是两种十分不同的语言,其使用的目的也十分不同。Go语言是由谷歌领衔推出的一款程序开发语言,可广泛地应用在多种处理器和平台上。尽管其和许多编程语言一样,Go也在C中吸取了很多灵感,但Go在很多方面有C无法媲美的优点。
Go增加了一个明确的哈希表的类型,这种类型对于从传感器收集数据和发送数据到传感器和执行器都非常有用。对传感器和设备网络的进一步支持是Go语言的关键之一,尽管其引入了一些风险。
Go支持多个信道上并发的输入、输出和处理。如果得到正确的使用,将使得整个传感器和执行器系统完全协调地运作。但其风险是不同线程之间不一定知道彼此。如果程序员不小心,因为其中缺乏了协调,系统可能会以某个完全无法预料的方式运行。
Rust是Mozilla开发的注重安全、性能和并发性的编程语言。创建这个新语言的目的是为了解决一个很顽疾的问题:软件的演进速度大大低于硬件的演进,软件在语言级别上无法真正利用多核计算带来的性能提升。
正如Mozilla的其它软件一样,Rust也是一个开源的项目,而且现在这门语言也正在飞速的进化着。Rust具有很多和Go类似的性质,而且其还解决了Go语言的一个主要的大问题。
因为Go语言并不自动在不同的&信道&数据结构之间共享信息,程序可能会出现资源竞争(race condition)的状况,这是多线程编程中比较头疼的问题。因为不同的进程同时访问相同的共享数据而造成数据的不一致性会最终导致系统失控。Rust包括了消除资源竞争的功能,使得其在高度并行的程序方案中比Go语言的风险更低。
这门语言还需要一些发展的动力,但如果你的团队需要打造一款需要并法计算的应用程序,你应该在Rust和Go之间做出合适的选择,到底哪一个更适合你。
8、Parasail
如果你在你的物联网应用中需要考虑并行处理的要求,Parasail就是你所需要的语言。在Go和Rust语言中,我们已经提到了并发。但如果你还不知道并行和并发之间区别(并行是指在同一时刻,有多条指令在多个处理器上同时执行。并发是指在同一时刻,只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果。)所以不要着急你确定你所需要的编程语言,先对它们有足够的了解才是万全之策。
Parasail是一种编译性的、面向对象的语言,其已经得到了改进,所以这款语言可以通过使用Java、Python、C#甚至Ada的语法进行编程。另外帮我一个忙。如果你正在进行一个物联网项目,而且你认为Ada是可以用于物联网设备的开发的,不妨留下评论。Parasail的并行处理能力非常好,如果你真的需要并行计算,这是不可错过的。
前面提到的所有语言都是大型的开发语言,在应用到嵌入式平台时都需要经过适当的精简,而B#则一开始就是作为一种小型的高效的嵌入式控制语言而设计的。嵌入式虚拟机(EVM)允许B#运行在不同的平台上,所需的内存仅为24K,比其它开发语言所需要的内存要小得多。
B#看起来有一点类似于C#,但其并不包含许多C#中对嵌入式项目没有价值的特性,同时还增加了对实时控制的支持。
10、汇编语言
如果你真的对老古董感兴趣,或是你的项目对紧凑度的要求非常非常高,那么汇编语言将是你的不二选择(在这里请不要说机器语言,那不是人能够读懂的,好吗?!)。汇编语言是一种用来封装和得到纯净的机器码的方式,而机器码就是处理器最终执行的代码。汇编代码的编辑不需要太大的开销,而且相关专家还可以用汇编代码来实现其它更高级的语言所不能实现的功能。
然而坏消息是汇编编程没有真正可用的工具来阻止你犯愚蠢的错误。而且更糟糕的是汇编代码的移植性非常差,甚至你为一款处理器而学习的汇编技巧也无法应用到另一款处理器上。
对于骨灰级的程序员和产品的最终发行版优化时,汇编可以为你提供很大的帮助,因为这时候你并不再需要考虑代码的移植性了。但对于原型机开发而言,这显然不是一种有效的开发方式;毕竟这个时代,你完全可以采用更加高级的开发语言了。
Forth是另一款被优化来为嵌入式系统开发服务的语言。尽管其通常被用于系统层级的程序开发,但有一点却不能不提:这款语言就像是一个宗教。你知道一些世界语(Esperanto)者会在机场用你完全不能理解的语言和你交谈吗?Forth就是程序开发世界的Esperanto。
Forth是一种面向堆栈的语言,如果你有一个古老的惠普计算器(具备RPN(逆波兰表达式)运算功能,那么你就能在你的计算器上面发现Forth。这款语言自1970年代诞生以来一直都有人使用,但只有在正确地使用者手里才能发挥出其高产高效的本事,但对于其他人来说,由这门语言所设计的代码简直是无法使用甚至不能阅读的。
什么样的编程语言才最适合物联网?
从行业人士的角度来说,在物联网设备和系统出现之前,C、C++和java是通用项目最受欢迎的选择。其中C 语言是最早的编程语言之一,在低级的项目中尤受欢迎,而C++是C语言能力的扩展。C#是另一种编程语言&&微软自己的高级编程语言版本,但是没有特别多的人在用它。这三个&C&之间的区别在这里可以获得很好的解释。
C语言对于物联网设备是最有用的,因为它不需要大量的处理能力。而如果物联网需要处理更复杂的任务,比如带有温控器的智能烤箱,不仅仅是监测水分和热度,那么C++则是另一种可以替代的编程语言。Java是另外一种通用语言,对于那些要求大量的接口和计算的物联网设备是非常有用的。它比C++更加易编、轻量化、更常用。
其他编程语言则更加具体
如果你不想用C语言,还有一些其他可能适合你的低级的语言。B#就是其中之一,一种很基础的语言,适合低功率的设备。它类似于C#,但增加了实时控制支持。
Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。
Hack是由Facebook开发的,同时结合了动态类型语言(如C语言)和静态类型语言(如PHP语言)两种特点的一种编程语言。通常在使用静态类型语言编程时,开发者会在程序被运行前就知道错误发生的位置。而在更为当前的编程环境里,动态类型语言会一直运行到直至程序出错崩溃。
现在,物联网开发者在冒险进入新的细分之前,应该接受我们已经用了几十年的编程语言。
喜欢这篇文章?分享给更多人看吧!
物联网领域学霸君
关注物联网智网智库,让你烧脑烧到吃不下饭。
她的相关文章
北京英维塔工业传播 网站备案号:京ICP备号   Copyright@2012 iot101.com All Right Reserved51CTO旗下网站
如何为云计算加快开发物联网应用程序?
Heckler为自己位于圣路易斯的房子开发了一个基本框架,同样的原理也可被应用于可在云计算中快捷部署的多种物联网应用中。
作者:翻译:滕晓龙来源:TechTarget中国| 16:18
在JavaOne大会上,Pivotal的首席技术专家Mark
Heckler介绍了一些快速在云计算中开发新的物联网(IoT)应用程序的最佳实践。他的做法让我们更容易地尝试不同的用例,一旦其商业价值得到证实,我们就可以具体实施。
作为一个例子,Heckler解释了如何为一个可再生能源监控和控制应用开发基本框架。他为他位于圣路易斯的房子开发了一个基本框架,但是同样的原理也可被应用于可在云计算中快捷部署的多种物联网应用中。
其关键在于创建一个软件开发工具链,这个工具链可以尽可能地为物联网设施和云计算后端实现代码生成自动化。Spring Boot
将有助于引入各种各样的服务以供通信、监控、数据库以及应用程序逻辑等应用使用。这个初始模板可被传输至Cloud
Foundry以便于为在云计算运行的不同服务器平台自动生成代码。
确保物联网物理端的简单化
虽然物联网的物理端在开发物联网应用程序中只占据了二成,但它却是非常重要的。工程师和架构师需要密切关注后端物联网软件,Heckler说。这恰恰正是其大部分价值的来源之处。
在物理端,Heckler建议其物理基础设施应当是易于快速配置的。一个最小的物理和逻辑组件都应支持良好的可靠性、沟通方案和标准。例如,Heckler的能源监控应用使用了一个包括Arduino板、Raspberry
Pi网关以及供通信使用的无线网络连接和WebSockets协议在内的物理基础设施。
Heckler表示,为设备思考如何提供足够的性能而不是最佳的性能将是非常重要的,这是因为更高的性能表现往往需要更强的处理能力和提高端点的复杂性。这一策略意味着大部分的繁重处理任务都需要在云计算中完成。Heckler说,Arduino平台是用于验证概念设计的一个不错选择,但是它缺乏低成本的通信能力。他推荐使用Raspberry
Pi作为节点,因为它支持Linux和Java,而且它还具有较好的低成本通信方案。
Heckler说,你应当尽可能地基于现有支持标准的基础设施和工具来开发云计算物联网应用程序。Heckler展示了他是如何能够通过使用Cloud
Foundry来快速地开发出一个云计算应用程序环境,从而在基于云计算的门户网站、节点和独立物联网设备之间确保交互通信都可通过REST和
WebSockets实现。
Heckler使用这种方法在很短时间内就完成了他的可再生能源监控和控制系统的开发工作。这一应用的输入包括多种不同的传感器,而其控制输出涉及冷却、加热和通风等。
尽可能多的配置
由使用一组强大的软件工具入手,多尝试一些不同的方法,将更易于开发和重新部署一个应用程序架构,这样你就可以找出一个最佳方案,Heckler说。他曾在Cloud
Foundry平台上尝试过GlassFish、WebLogic和WildFly
服务器。Heckler说,与手工自定义改写代码来实现现有应用程序的跨平台移植相比,以这些服务器为目标使用现有工具来编程生成代码是一个更好的方法。
将CloudFoundry作为后端将更易于使用相同的方法来实现在本地、内部部署或者云计算环境中的处理和部署。这将有助于减少在开发概念设计验证阶段以及之后迁移至以生产为目的的最佳环境阶段的工作量。
另一个很好的做法就是使用Spring Boot来提供自动配置和外部绑定功能,从而更易于生成Cloud
Foundry初始代码。这也更有助于选择组件来快速集成应用程序,可部署应用程序以便于在不同目标环境中运行。从本质上来说,Spring Boot
可有助于设置被传送至Cloud Foundry的核心框架,它可为GlassFish、WebLogic 或
WildFly服务器生成代码。这使得开发人员能够把更多的时间和精力关注于针对物联网用例应用程序背后的逻辑开发中。
选择合适的组件
Heckler还推荐使用Spring Boot Actuator,它可在Spring
Boot配置过程中从价格成本角度提供监控和管理应用程序的功能。这将有助于检查环境、查看类路径和内存使用情况,这些功能在开发和测试阶段都是非常有用的。
超文本应用程序语言可以帮助我们探索和解决与应用程序相关的API。同样重要的是,囊括一个数据库,或者将数据存储在应用程序中,以便于在发生网络中断事件时应用程序仍能够掌控数据。
一旦这些Spring Boot 单元被选中,那么开发人员就能够使用Spring
Boot代码生成工具快速地生成一个全功能(虽然可能用处也不大)的应用程序。这个应用程序可被快速导入一个Java集成开发环境中,以便于进一步实现针对某一用例的定制化。那么,最后的结果就可以很容易地推送至一个开放工具以生成一个Gradle
或 Maven 项目。
弃用REST,使用WebSockets
JSON非常适用于开发网络应用程序,但是它们为物联网应用程序带来了相当可观的开销。REST消息有时候会增加数百字节的头信息,而物联网应用程序本身通常只会发送与测量或控制消息相关的几个字节的信息。Heckler
建议使用WebSockets来代替前者。其开销要小得多,此外在必要时可实现双工通信。
你还需要开发一个WebSocket类来处理数据,这些数据可以通过扩展WebSocket处理程序来完成。Heckler说,他仍然有一个可通过REST来访问云计算系统的参数,但是他说,&使用它的代价如此高昂,所以我不会使用它。&
基于Spring Boot的基本框架、Cloud
Foundry和一个开发工具将有助于在较短时间内针对物联网设备完成一个云计算应用程序的开发工作。Heckler表示,他已经把同样的一个框架重新用于各种与企业应用相关的应用中。他建议企业重点关注使用现有工具来为物联网应用程序开发基本的逻辑功能。而最终识别出能够推动物联网应用发展的用例将是一项极具挑战性的任务。从组件入手将更易于最初的业务识别,之后就可以使用合适的架构对其进行优化。
原文链接:【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条热点头条热点热点
24H热文一周话题本月最赞
讲师:1384人学习过
讲师:2203人学习过
讲师:256人学习过
精选博文论坛热帖下载排行
Linux出色的网络功能堪称当今操作系统中的佼佼者,无论在功能还是在支持能力上都有令人满意的表现。Linux内置的多个服务器,几乎包含了目前...
订阅51CTO邮刊零基础实现物联网应用开发该如何选择平台-通信/网络-与非网
行业瞬息万变,即便是站在风口,不经意间也会摔得头破血流,所以作为一个物联网领域的从业者,有必要实时自省,关注行业趋势,以适应不同环境带来的变数。目前,市面上各种物联网开发平台数不胜数,让人不禁有种眼花缭乱的感觉,有的主打硬件功能,有的主打软件开发的易用性,有的主打多平台系统的支持等等,对于一些学习者来说,比如学生,DIY爱好者,当然所谓的功能越丰富、资料越完善越好;但是针对那些脚踏实地,有实际项目需求的工程师来说,适合自己项目的才是最需要的。
自从物联网应用、智能硬件应用相辅相成出现的时候,一种以硬件+软件+平台的一站式解决方案走进了公众的视野,加速了物联网应用的布局、开发。目前市面上就有不少很有针对性的物联网应用开发的平台,有的是依据自身的云服务基础拓展硬件、软件,有的依据自身强大的硬件解决方案基础拓展软件、云平台,下面就让我们分析下这些平台各自的优缺点情况。(注:本文所引用的板卡信息部分摘自,爱板网是国内最专业的板卡选型与评估网站)
Gokit是机智云推出的一款物联网应用的开发、云服务接入平台,Gokit第一代产品是2014年底推出的,起步比较早,目前已经发展到最新的第三代产品。
第一代Gokit采用单板结构,主控限定,采用了STM32系列,WiFi模块可以更换,不过第一代适配的比较少,只有庆科跟汉枫的WiFi模块,Gokit1代板载多种传感器以及适合物联网应用开发的接口,如电机、RGB LED、红外光电探测器、温湿度传感器等应用功能。
点评:Gokit1代板载市面上主流的stm32主控,非常适合本身有STM32微控制器开发工程师的需求。
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
与非网 小编
电子行业垂直媒体--与非网小编一枚,愿从海量行业资讯中淘得几粒金沙,与你分享!
不言而喻,物联网(IoT)在最近几年迅速成为了商业世界中不可或缺的重要组成部分。随着企业纷纷将物联网设备添加到他们的公司网络中,我们看到物联网采用率迅速上升。 事实上,最近的一项研究显示,在接受调查的IT决策者中有84%表示在过去一年里,他们一直在稳步提高部署和利用IoT设备的速度。其中12%受访者表示他们的公司已经部署了至少1万部IoT
发表于: 15:41:47
12月21日-23日,中国最重要的电子与嵌入式领域专业盛会“深圳国际电子展暨第六届深圳国际嵌入式系统展”在深圳盛大举办。世强元件电商带来了汽车、工业、物联网、测试测量等领域的最新元件产品及解决方案。其中在物联网部分带来了传感器、MCU、无线模块三大节点的最新元器件以及一系列整体解决方案。
发表于: 14:45:07
全球领先的200mm纯晶圆代工厂——华虹半导体有限公司今天宣布其第二代90纳米嵌入式闪存 (90nm G2 eFlash) 工艺平台已成功实现量产,技术实力和竞争力再度加强。
发表于: 17:33:02
古代,人类利用星象、司南进行定位,绘制航海图,从而发现新大陆。如今,企业利用先进的定位技术与物联网结合,将会掀起怎样的浪潮?
发表于: 13:59:59
2017年是电子行业跌宕起伏的一年,也是战绩累累的一年。回顾这一年,企业暗流涌动,争相布局;国家政策连发,推动发展。但不论如何,电子行业依旧如同夏日的阳光般,灼灼耀眼。
发表于: 11:06:41
工业自动化属于一个较宽泛的技术框架范畴,且从工业网络和移动计算机处理技术中受益良多。此类技术的组合将有助于将“互联工厂”、“工业4.0”和工业物联网 (IIoT) 从概念变为现实,但在逐一实现此类概念的过程中会引起一系列的困惑,让人觉得对相关的实施工作无从下手。
发表于: 13:51:00
近日,Pico参加了位于广州琶洲的第73届教育装备展,旗下新品Pico Neo也出现在合作伙伴黑晶和格如灵的展位,向与会者展示VR+教育的成功案例。作为全球首款实现量产的头部&手部6DOFVR一体机,Pico Neo甫一发布即引起业内广泛反响,与此同时,Pico也发布了4套行业应用整体解决方案,拓宽了VR+的商用前景。
发表于: 15:57:02
世杰国际控股集团效仿几家马来西亚科技公司,日前,成功于澳洲第二大上市证券交易所 --澳洲国家证券交易所(NSX)正式敲钟挂牌上市。
发表于: 14:24:02
锁是与人们日常生活联系最为紧密的物品之一。随着社会、科技、文化的进步,人们对门锁的安全性、可靠性、便捷性等要求也越来越高,传统机械门锁的安全性已经越来越不能满足人们的需求,传统机械门锁正在面临着严峻的挑战,技术及科技含量较高的智能锁具,如密码锁、IC卡锁、指纹锁、无线遥控锁等以其智能化和成熟的技术正逐步取代传统锁具
发表于: 13:28:47
随着人们生活水平的提高,社会经济的发展和城市化进程的加速,社会老龄化步伐加快,独生子女家庭和丁克家庭和空巢老人越来越多,饲养宠物成为许多家庭必不可少的生活方式,于此同来的是宠物的丢失问题。
发表于: 13:05:29
与非门科技(北京)有限公司 All Rights Reserved.
京ICP证:070212号
北京市公安局备案编号: 京ICP备:号JavaScript在物联网中的应用
在那篇《最流行的语言Script能做什么?》里,我们列举了在不同领域的使用情况,今天让我们来详解一下JavaScript在物联网中的应用。
基础:物联网的三个层级
开始之前, 先让我们简单地介绍点物联网的基础知识。如果你有点Web开发经验的话,都知道下图是CS架构:
相比于一个物联网,无非就是多了一层硬件层以及可选的协调层。
这个硬件层决定了物联网应用比Web应用更加复杂。对于大部分的Web应用来说 ,客户端都是手机、电脑、平板这些设备,都有着强大的处理能力,不需要考虑一些额外的因素。
对于物联网应用来说,我们需要考虑设备上的MCU的处理能力,根据其处理能力和使用环境使用不同的通信协议,如我们在一些设备上需要使用CoAP协议。在一些设备上不具备网络功能,需要考虑借助于可以联网的协助层,并且还需要使用一些短距离的无线传输协议,如低功耗蓝牙、红外、Zigbee等等。
一个物联网系统:六种语言
两年半以前,大四,电子信息工程,我选定的毕业论文是一篇关于物联网的论文&&《基于REST服务的最小物联网系统设计》。这是一篇入门级的物联网论文,如果大部分学习CS的人有一点硬件基础,都能写出这样的论文。
这篇论文是之前参加比赛的作品论文的&最小化&,里面使用到的主要就是创建RESTful服务,而它甚至称不上是一种技术。在这个作品里:
我们使用语言里的Django框架作为Web服务框架,使用Django REST Framework来创建RESTful服务。
为了使用手机当控制器,我们还要用Java写一个应用。
我们使用Rberry Pi作为硬件端的协调层,用于连接网络,并传输控制信号给硬件。
我们在硬件端使用Arduino作为控制器,写起代码特别简单,可以让我们关注于业务。
最后,我们还需要在网页上做一个图表来显示实时数据。
所有的这些,我们需要使用Python、Java、JavaScript、C、Arduino五种语言。而如果我们要写相应的iOS应用,我们还需要Objective-C。
JavaScript在物联网领域的发展
同样的,两年多以前,刚实习,在我们的项目里,我们的新项目里我们使用Backbone作为单页面应用框架的核心来打造Web应用。这时,我开始关注Node.js实现物联网应用的可能性。
当时,已经有了物联网协议MQTT和CoAP协议的库,于是我照猫画虎地写了一个支持HTTP、CoAP、WebSocket和MQTT的物联网。由于,当时缺乏一些大型应用的开发经典,所以做得并不是很好,但是已经可以看到JavaScript在这方面的远景。
一年多以前,Ionic还没推出正式版的时候,我发现到了这个框架真的很棒&&它自带了一系列的UI,还用NgCordova集成了Cordova的一系列插件。我便开始使用Ionic写了一些移动应用,发现还挺顺手的。接着,我就开始拿这个框架尝试写物联网应用,这需要一些原生的插件,如BLE、MQTT。后来,我也写了一个简单的CoAP插件。
后来我们不再需要编译Node.js,就可以在ARM处理器上运行Node.js。并且我们已经有Tessel、Espruino、Kinoma Create、Ruff这些可以直接运行JavaScript的开发板。三星还推出iot.js,可以让更多的嵌入式设备可以使用JavaScript语言作为开发语言。
人们开始在硬件上使用JavaScript的原因有很多,如Web的开发人员是最多的、JavaScript很容易上手。
现在,这次我们在这三个层级上都可以使用JavaScript,只需要一种语言。
使用一种语言开发物联网应用:JavaScript
在我写的那本《自己动手设计物联网》中,我就试图去展示JavaScript在这方面的威力。使用Node.js + Node-CoAP + MQTT.js + MongoDB + Express搭建了一个支持多协议的物联网:
不过,上图是完善版的物联网,代码自然是在GitHub上啦:。作为服务端来说,Node.js的能力已经是经过验证的。而在混合应用上,仍然也可以经受住考验,混合应用在手机上做个图表是轻轻松松的事(只需要获取数据,然后显示):
作一个控制端也是轻轻松松的事(我们只需要发个POST请求,更具逻辑一点的就是先获取状态):
而在硬件端,我并没有在书中以JavaScript作为例子来展示JavaScript的用法,因为这会局限了用户的硬件设备。
不过,我们仍然可以使用类似于Johnny-Five这样的库来做硬件方面的编程,只是它没有那么好玩~~。
既然我们可以JavaScript来实现,为什么我们还要喝杯咖啡等它用C编译完呢?
你想知道的答案都在这本书里,已在亚马逊、京东、当当上架:
毕竟:凡是能用JavaScript写出来的,最终都会用JavaScript写出来。}

我要回帖

更多关于 物联网开发用什么语言 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信