本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

码报:【j2开奖】JavaScript——下一代物联网全栈开发

时间:2017-04-30 15:31来源:118论坛 作者:j2开奖直播 点击:
责编 | 贾维娣 Jeff Atwood曾提出“任何能够用Java实现的应用,最终都必将用Java实现”他对Java的推崇不言而喻。而当下这个物联网大热的时代,Java支持HTTP和JSON、支持函数式编程、可提

  责编 | 贾维娣

  Jeff Atwood曾提出“任何能够用Java实现的应用,最终都必将用Java实现”他对Java的推崇不言而喻。而当下这个物联网大热的时代,Java支持HTTP和JSON、支持函数式编程、可提供交互式环境等特点堪称适用于物联网全栈开发。本文详解了Java可参与的每一个物联网过程,并针对开源项目进行了汇总。

  物联网节点Java开发

  网络中,HTTP协议与JSON数据格式特别是RESTful API无疑具有支配地位,各种云服务,数据传输都基于这些协议来进行。而Java为HTTP和JSON提供了最好的支持,当物联网系统采用Java开发时,天然对接了互联网上海量的云服务与云资源,包括云存储、云计算等一系列资源都可被方便调用,就像你在手机端访问各种云服务一样。微服务构架在服务器端的兴起,让Java编写的每一个物联网节点都可以作为一个大系统中的微服务,通过RESTful API接口提供自己的服务。

  在设计模式上,Java的回调与事件循环等基于事件驱动的编程模型非常适合物联网。在物联网环境下,环境在不断变化,物联网节点要不断对环境的变动做出响应,换句话说物联网系统通常是I/O密集型的系统,回调与事件循环高效地完成了密集I/O操作这项工作,而事件响应式编程相比于多进程和多线程编程在内存的使用上又非常高效,而这又是物联网系统所需要的,通常物联网系统都是资源受限系统,内存与CPU的频率都非常有限。物联网节点底层开发中通常采用中断响应模式,在CPU中由称为中断控制器的硬件来检查中断信号的出现,并在中断出现后控制CPU执行特定程序片段,这一执行模式和Java的回调一致,很容易使用Java回调机制来实现硬件的中断响应。

  物联网节点的部署特点决定了其回收维护成本非常高昂甚至是不可接受的。而物联网节点要不断应对新的环境与应用需求,所以在开发中物联网节点的远程部署与更新是非常重要的一个功能。Java本来就是实现从服务器端向客户端部署的一门语言,其天然就具有在网路上实现远程部署的属性,实现起来就像你用浏览器下载Java脚本并运行一样简单。Java的热部署也是一个比较热门的研究领域,通过热部署,物联网节点可以实现在运行过程中远程添加新功能,远程修正bug。

  前面讲了使用Java来做物联网开发的好处,那么也有必要讲一下Java在物联网应用中相对于Web应用的不同以及误区。第一个问题就是实时性。作为嵌入式系统的物联网网关,首要面对的就是实时性问题,比如各种电机的控制,一些电压信号的采集都是有实时性要求的,需要在规定的时间内完成所需工作。由于Java的内存管理使用垃圾收集机制,所以必然存在由于垃圾收集而导致应用中断执行的情况,甚至有可能在一些情况下造成实时性要求遭到破坏。所以在设计Java物联网实时程序时需要考虑内存垃圾数据时间对实时性的影响。当然,也可以采用另一个设计模式,就是把实时任务使用C语言编写的单独线程来实现,利用Java的单线程特点,这种设计模式不会在嵌入式系统中占用过多的资源,毕竟Java本来就是一种嵌入在浏览器里的语言。

  另一方面,由于物联网网关是需要长期运行的设备,相对于Web端需要有更高的可靠性与稳定性,所以单元测试与集成测试是必须的,而且需要使用代分析工具保证代没有任何内存及文件句柄的泄漏。即使在垃圾收集环境下,内存泄漏也是存在的,而在嵌入式系统中由于内存有限,特别容易泄漏。好在服务器端Java的开发应用已经有很长一段时间了,可以从服务器开发里借鉴不少工具。

  Java物联网节点开发开源项目汇总

  OpenFPGAduino(https://github.com/OpenFPGAduino/)是笔者设计的基于Node.js与 FPGA的开源物联网软硬件开发平台,与Arduino等快速原型开发平台类似。基于Node.js提供了网络交互能力,特别包括用于开发的网络IDE以及类似于树莓派的Linux软件开发系统,方便安装各种Linux通用软件,并且通过FPGA提供了可编程的兼容Arduino外围接口用于与丰富的物联网传感器进行连接。

  iotjs(https://github.com/Samsung/iotjs)是三星开发的嵌入式Java执行环境,能够在几百KB内存的嵌入式系统上,不依靠操作系统实现完整的网络与Java支持。Java解释引擎采用

  Jerry(https://github.com/jerry-project/jerry),事件循环采用libtuv。可以说是Node.js的嵌入式版本,其API与Node.js相兼容。

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容