用Java编程能给物联网(IoT)带来什么优势与不同?

这是一个不太容易回答的问题,也是一个适合拿出来与大家讨论的一个话题~
首先需要聊聊物联网硬件与嵌入式设备有什么不同。嵌入式设备通常是一个软件一体的产品,MCU完成传感器的读写,驱动设备,完成一个或一个集合的设备功能。而物联网设备个人认为应该包含两个方面,一个是硬件传感器数据采集处理的能力,还有就是云服务的植入能力。不可否认,传感器等硬件能力是物联网设备的基础,但是仅仅具备嵌入设备的能力而缺乏与互联网服务接入的能力的话,并不是一个典型的物联网产品。

解释了这个问题之后,我们就可以来看看Java给物联网带来什么能力?

首先,从嵌入式设备的角度出发,传感器等硬件驱动的能力是完全没问题的,但是当你的设备完成了数据的采集控制之后,应该如何通过webAPI与云服务器互动,甚至开放出你的硬件能力给第三方服务使用这个部分是嵌入式产品和从业人员不具备的知识体系。举个例子,智能手机上的GPS传感器,手机厂商做的GPS传感器更多的是为第三方软件服务的(导航、打车、外卖)而不是手机厂商自己用,所以硬件能力的开放给第三方软件是趋势。

然后,从互联网云服务角度出发,在移动互联网成熟的业务和服务、大量的开发者,他们十分熟悉业务和云服务,但是传统无法触达终端,物联网设备的软件和硬件耦合,开发工具SDK五花八门,互联网程序员不具备从事传感器硬件编程的知识和背景,而通过JOSH技术,让互联网程序员可以用与硬件无关的Java编程方式在设备上进行硬件数据的采集控制,然后再对接自己熟悉的云服务,甚至进行业务的开发,这是让物联网从业人员多起来的方式,也是让物联网业务真正能与实际场景结合闭环的手段。

很多人不明白,JOSH是如何实现用JavaAPI实现传感器数据的读写的,如何实现硬件无关的传感器硬件接口的编程的,这个是一个比较大的话题,我们后面会再JEDI的板块展开讲解,主要的技术实现方式是通过Java设备接口来实现,DeviceAccessAPI(一个开源社区的项目,在Java虚拟机实现的一个标准的通用IO接口,支持MCU的外设接口:GPIO、UART、SPI、I2C、ADC、PWM等),下面一张图片,让大家有个基本的印象:

在国外,关于IoT为什么需要JOSH这样的技术的讨论,起源比较早。只要是嵌入式技术的从业者,或者对于OS(操作系统)有所研究有所兴趣的朋友,一定听说过uC/OS,这个是每个人的入门利器。其知名度不亚于Linux,是嵌入式系统的OS。C语言是其开发语言,与其类似的操作系统,已经发展了很多年,有ThreadX、国人主导的开源嵌入式操作系统RT Thread、华为的Liteos、和ARM出的mbed等等,种类十分众多。抛开主观因素,我想后来的操作系统无论是在开发者的规模,认可度,普及性,开源资料等等各个方面,绝不是uC/OS的对手。

那么,问题来了,uC/OS作为拥有众多受众和开发者的嵌入式操作系统的鼻祖,为何在面对IoT新的机遇时,强调JVM(uC/OS推荐的物联网操作系统方案是uC/OS作为底层系统上层使用MicroEJ的JVM用于物联网)更为适用与IoT,并且如此看重?个人认为:C语言开发优势之外,劣势在于依赖编译器,依赖硬件,门槛高,形成不了规模优势,应用不能独立运行,难以后装应用等等,而JVM(Java虚拟机)屏蔽掉了不同的芯片、编译器的区别,并且可以让应用独立的开发和后装应用,可以建立ecosystem和IoT APP Store,还有最重要的,全球1000万的开发者,和现成的开源社区应用资源。这些资源就连盘踞嵌入式系统多年的uC/OS都无法与Java比,更别提那些刚刚进入的没有本质差别的同质化产品。开源和生态不是巨无霸的商业就能建立的,而是要顺势而为,就像Google做Android都要复用Java社区的道理一样。

最后,来点干货,如果一个人民币100块钱以内的智能手表,可以让所有Java&Android的开发者都能开发应用,并且可以构建手表的应用商店,随时安装各种应用和未来我们还没想到的应用(比如安装一个共享单车的APP就可以用手表刷一下解锁)是不是听上去比现在只能计步的要更“智能”一些了呢?关键GUI非常漂亮,并且可以自己定制,随时OTA迭代~

用Java编程能给物联网(IoT)带来什么优势与不同?的更多相关文章

  1. Java编程思想重点笔记(Java开发必看)

    Java编程思想重点笔记(Java开发必看)   Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而 ...

  2. Google Java编程风格指南

    出处:http://hawstein.com/posts/google-java-style.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Comm ...

  3. JAVA 编程规范(上)

    2016-03-20 J120-CHARLIEPAN JAVA 编程规范(上) 1.      应用范围 本规范应用于采用J2EE规范的项目中,所有项目中的JAVA代码(含JSP,SERVLET,JA ...

  4. 谷歌Java编程规范

    Google Java编程风格指南 January 20, 2014 作者:Hawstein 出处:http://hawstein.com/posts/google-java-style.html 声 ...

  5. Google Java编程风格指南中文版

    作者:Hawstein出处:http://hawstein.com/posts/google-java-style.html声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Cre ...

  6. (转)google Java编程风格中文版

    转:http://www.hawstein.com/posts/google-java-style.html 目录 前言 源文件基础 源文件结构 格式 命名约定 编程实践 Javadoc 后记 前言 ...

  7. [转] java编程规范

    原文链接: 资料推荐--Google Java编码规范 之前已经推荐过Google的Java编码规范英文版了: http://google-styleguide.googlecode.com/svn/ ...

  8. java 编程时候的性能调优

    一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子: import java.util ...

  9. java编程思想

    Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而且在大型项目开发中也是常用的知识,既有简单的概念理 ...

随机推荐

  1. python time包中的time.time()和time.clock()的区别

    在统计python代码 执行速度时要使用到time包,在查找相关函数时有time.time()和time.clock()两个函数可供选择.而两者是有区别的: cpu 的运行机制:cpu是多任务的,例如 ...

  2. Java生鲜电商平台-积分,优惠券,会员折扣,签到、预售、拼团、砍价、秒杀及抽奖等促销模块架构设计

    Java生鲜电商平台-积分,优惠券,会员折扣,签到.预售.拼团.砍价.秒杀及抽奖等促销模块架构设计 说明:本标题列举了所有目前社会上常见的促销方案,目前贴出实际的业务运营手段以及架构设计,包括业务说明 ...

  3. Java自学-集合框架 遍历

    遍历ArrayList的三种方法 步骤 1 : 用for循环遍历 通过前面的学习,知道了可以用size()和get()分别得到大小,和获取指定位置的元素,结合for循环就可以遍历出ArrayList的 ...

  4. Qt固定窗口大小

    指定大小 this->setMaximumSize(250, 250); 默认大小 this->setMaximumSize(this->width(), this->heig ...

  5. 去除数组空格 php

    public function trimArray($params){ if (!is_array($params)) return trim($params); return array_map([ ...

  6. bat脚本输出日志

    一,bat脚本常用的的输出命令是“echo 输出内容”,可以利用echo将文本输出到cmd窗口或文件.bat脚本是不区分大小写的脚本语言,因此大小写都可以. 例如: REM 在命令行窗口输出 echo ...

  7. Win平台下窗口操作(Unity)

    Unity发布在Win平台时, 可以通过user32.dll的方式与Win API通信, 最小化窗口代码: public static class DllImports { private const ...

  8. 笔记8:Linux知识

    linux学习笔记 1 Linux介绍 1.1 基本知识 应用领域:服务器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQ ...

  9. Visual Studio的UTF-8问题

    参考:https://www.jianshu.com/p/c51cbb2f20e1 一.在“工具”菜单找到“自定义”,然后按照图示操作. 二.选择“编码”.

  10. MacOS上传文件到windows ftp时链接文件不见了

    最近打包遇到了一个问题,打包完MAC的sdk包后,得到的是一个framework的文件夹,我们需要将这个framework传到ftp服务器上,另外,还要把这个文件夹下的Release文件夹里的文件替换 ...