下一代物联网全栈开发
Java数据展示开源项目汇总
D3(https://github.com/d3/d3)是基于SVG的矢量图操作工具。通过使用Java,D3将数据以矢量图形式展示出来并提供了任意伸缩的能力,在HTML5出现之前,D3是二维可视化的底层标准。通常许多绘制图表与数据可视化工具都使用D3作为底层驱动引擎,在其之上提供用户友好的API接口。
three.js(https://github.com/mrdoob/three.js/)是基于WebGL的Java3D绘图工具。通过WebGL扩展,Java语言实现了直接驱动底层显卡进行3D绘图。three.js在3D图像基础上还提供了VR支持,可以方便的使用Java来实现VR数据展示。
ionic(https://github.com/driftyco/ionic)是基于AngularJS的移动端跨平台开发环境,能够在一个统一的框架下使用Java HTML CSS,同时完成开发iOS、Android、Window Phone程序,并根据各个环境的不同UI做自动适配。
Electron(https://github.com/electron/electron)是基于Node.js与chrome的跨平台桌面开发环境,electron通过将浏览器内核和后台Node.js服务进行打包,实现了一个使用Java的全栈开发环境,无需任何修改就能够将程序部署到Windows、macOS、Linux平台上。
nw(https://github.com/nwjs/nw.js)是轻量级的Java跨平台桌面开发环境,它实现了在HTML代码中直接调用Node.js的各种API函数,提供了一个平滑自然的桌面应用开发环境,隐藏了客户端服务器编程的细节。
物联网Java实例讲解
为更好理解Java物联网开发,下面以笔者设计的物联网系统为例,详细介绍物联网系统的设计。所有设计资料都是开源的,读者可以对照源码网页与文档。( http://openfpgaduino.github.io)
● 物联网网关最小系统硬件设计
对于应用于物联网的嵌入式系统,系统的硬件设计是重要的组成部分,通常来说应对不同的应用,嵌入式硬件的系统设计会有所不同,每个系统都会按照相应的应用场景进行调整。但是物联网的核心系统通常是一个设计构架可以应用于一大类的系统,所需要调整的通常是外围设备。

图1
如图1所示是笔者设计的物联网网关最小系统,在系统设计思想上首先保证了核心系统的通用性,采用了ARM处理器。因为是网关节点,设计上需要网关直接连接IP网络并提供全功能的网络服务,因此选择了能够完整运行Linux系统的ARM9处理器,运行完整的Linux也是能够运行Node.js与完整Java的必要条件。由于采用了标准Linux,虽然Linux内核提供了一些实时性补丁,但由于编程模型复杂而且也不适合与Node.js集成,因此在最小核心系统中加入了FPGA。FPGA能够在硬件层面完成实时响应,解决了系统的实时响应需求,其次由于FPGA是一种可配置系统,能够根据应用需要进行设计与配置,所以引入FPGA也极大提高了系统的适配能力,为灵活适配各种不同物联网应用提供了基础。
● 物联网网关系统软件设计
物联网网关的软件设计完全是基于硬件设计的构架,最大限度发挥硬件的功能,设计流程如下:
1.首先在ARM9处理器上运行完整的Linux系统,其拥有完整的网络服务,并能根据需要通过APT-GET命令来安装所需要的软件包。
2.在Linux系统基础上,运行Node.js+MongoDB来提供所有网络服务。
3.在Node.js里运行HTTP服务器来提供基于Restful API的各种本地服务,包括各种外设与I/O的控制。
4.运行HTTP服务器,基于RESTful API,实现了基于HTML5的云IDE开发环境。方便技术极客对网关的功能进行定制,这些IDE包括了Java的IDE,基于图形编程的Blockly IDE和可以配置FPGA模块功能和引脚定义的Web设计工具,当然也包括较为底层的c语言IDE。
有了这些功能,用户就可以根据自己的需要,编写简单的程序来控制与物联网网关连接的任何设备,实现自己的智能物联网。
在板子内部,通过实现Linux内核驱动的用户空间模式,实现了Node.js直接访问FPGA内存空间、控制FPGA内部逻辑,并最终控制与FPGA相连接的各种物联网外设的功能。同时还实现了Node.js对FPGA的现场再配置,这样直接通过网络下载FPGA配置文件,即可现场改变整个核心系统。
非常好我支持^.^
(0) 0%
不好我反对
(0) 0%
