作为专门为嵌入式计算和实时流程场景打造的编程语言,Java必将成为物联网时代的最佳开发选择。对于大家来说,Java究竟意味着什么?在校园里学的编程语言?企业IT领域的求职油?还是您将Java视为主导后互联网爆炸时代的主导语言?对于为嵌入式计算和实时过程场景构建的编程语言,我们将在本文中论证Java是物联网时代最佳开发选择的几个原因。从1969年到现在的漫长时间里,网络设备完成了一个完整的爆发式增长过程。通过ARPANET连接的四台大学计算机,现在全世界有20亿人经常访问互联网内容。在不久的将来,连接设备的数量将迅速翻倍甚至再次翻倍,从现在的数十亿到嵌入式处理时代的数千亿。我们生活的方方面面都会与连接设备相连:家庭环境、办公环境、汽车环境、设备、工具和玩具等——大家可以根据实际体验进一步完善这份清单。Java,用于嵌入式系统19年前,DavidL.Ripps为JavaWorld撰写了一篇关于Java在嵌入式系统中的作用的概述。从今天的角度来看,Ripps的文章也非常具有可读性,特别是对于那些想要了解嵌入式系统编程接口如何与连接的移动设备和物联网机制一起工作的人来说。虽然对席卷物联网的浪潮肯定有一些炒作,但其背后的现实是互联网的发展将使前几代计算变得相对微不足道。物联网不仅是客观存在的,而且还会给一切带来颠覆性的变化。参照以下时间历程,我们首先回顾一下过去互联网技术在不同阶段的发展轨迹:1982年至1989年:TCP/IP网络诞生。·1985年至1989年:互联网技术商业化趋势开始显现。·1990年至1991年:万维网正式成立。·1990年至1998年:传统台式电脑被重新设计为虚拟联网设备。·1996年至今:我们正在缓慢但肯定地进入一个移动连接设备(又称物联网)占主导地位的新时代。目前,作为物联网先决条件的各种辅助技术正在陆续推出。HTTP/2是一套关键的网络协议,它的出现在一定程度上实现了机器之间的通信需求。Thingsee是开发者工具领域的典型代表,也标志着物联网发展所需的硬件基础正在逐步形成。硅谷智库TimO'Reilly强调,物联网将不仅仅是将咖啡机或冰箱等微不足道的设备连接到网络。在理想的传感器和自动化机制的支持下,物联网将真正把人类文明提升到一个新的高度。而Java将在这一颠覆性变革中扮演重要角色。#p#物联网的工作原理2014年9月,AndrewC.Oliver撰写了一篇关于物联网实施水平与团队合作之间关系的文章。在这种情况下,团队合作系统将由人和计算机组成。由于设备的通信对象不再局限于人,需要同时面对其他设备,因此会在基础层面带来一系列新功能。具体来说,我们的冰箱不仅可以感知到用户的番茄储备即将用完,还可以根据个人的饮食习惯进行点餐。普适计算的成功也体现在这里,它融入后台,配合其他设备完成任务、事件和对接。只有执行级别的结果才会交付给用户。物联网的兴起将带来大量我们前所未见、甚至难以想象的创新,并以无缝的方式交到我们手中。许多常见的实际例子非常有说服力。在最近的新闻中,我们目睹了一系列令人印象深刻的应用,包括农业害虫管理、小型炸弹探测器和改进医疗诊断的解决方案等。物联网不再是那种低调却完整的自动售货机——它需要过多的存储空间并带来复杂的日常维护工作,一直默默等待着用户的召唤。当我们把账单放入这个自动售货机并按下按钮时,它会显示可用的购买物品,并通过简单的交互机制确保每个人都得到令他们满意的食物。我们不需要知道或同意实施过程的所有细节;我们的胃是对真理最好的检验。现在,我们拥有支持物联网的自动售货机。当我们从支持物联网功能的自动售货机购买商品时,购买行为将在全球范围内集成到一个完整的系统中,以确保供应商保持库存平衡并充分保持零件的工作状态。这种新模式在前物联网时代可以将整体成本降低30%。Java的嵌入式计算之旅今天,大多数人都没有意识到Java早期是为嵌入式计算而构建的。它的早期版本是为各种家用电器设计的,如电视机顶盒接口。当JamesGoslin创建Java的初始版本时,他专注于设备之间的通信。当时他认为它的作用不应该只是实现设备与人之间的通信,还要承担设备与设备之间的通信任务。二十年后,那些最初的设计优势终于迎来了他们的黄金时代,物联网的辉煌时代即将拉开序幕。出色的人气水平也使其适合物联网时代的实际需求。全世界对Java领域投入的大量资源,使得这门编程语言成为新一代程序员的最爱,同时也保证了它在所有基于它的生产系统中都能得到很好的维护和支持。数十万个成功的应用程序和系统解决方案充分证明了Java的强大实力。对于希望在嵌入式编程领域有所建树的开发人员而言,区分Java平台的不同组件非常重要。在进行嵌入式编程时,我们无需对编码或阅读方式进行任何更改:优秀的Java程序员可以像查看典型的桌面企业应用程序一样轻松地阅读嵌入式源代码内容。然而,库,尤其是在开发(和测试)环境中的库,将面向嵌入式Java编程。确保您的目标嵌入式环境拥有正确的工作链。Java对于嵌入式系统来说是否过于臃肿?Java并不总是适用于嵌入式系统的首选编程语言,主要是因为嵌入式设备在计算资源方面经常捉襟见肘。汇编语言、C语言甚至Python都可以在有限的内存、CPU性能和其他硬件限制下提供更好的性能。不过,这种情况在过去几年有了明显改善,因为嵌入式系统的资源规模有了很大的提升。此外,针对嵌入式环境的全新Java编译技术方案进一步降低了相关代码对系统资源的要求。#p#2015年Java嵌入式编程趋势展望早在1996年,Java就已经做好了实现嵌入式编程的充分准备,但当时并没有能够带动业界在这方面进行探索的动力。如今,这种势头正在迅速聚集,用于嵌入式编程的Java标准和工具生态系统已准备好充分发挥这项技术的潜力。2000年到2010年间,基于Java的嵌入式或“微型”计算机制主要集中在J2ME(Java2平台微型版)上。如今,JavaPlatform、MicroEdition或JavaME已成为嵌入式应用程序的标准运行时环境。虽然JavaME及其概念(尤其是配置文件和配置)仍然很重要,但移动Java开发人员更有可能将Android和HTML5用于用户界面。移动手持设备是目前嵌入式计算最突出的组成部分,目前销售的移动设备中有五分之四使用安卓系统。(虽然Android支持JavaME,但两者在产品生命周期上存在显着差异,目前尚不清楚由谁来决定在特定的嵌入式设备上使用哪种下一代应用环境。)配置文件和Configuration是一个嵌入式编程工作中的关键概念。像MIDP这样的嵌入式配置文件是一组用于在设备上获得支持的API。配置是一组框架规范。但是,我们还没有找到严格的理论依据来证明配置文件应该属于配置的范畴,包括CLDC和网络受限设备配置。(有兴趣的朋友也可以点这里查看JimConnors的博客,了解更多物联网下应用的配置文件和配置的细节。)除了JavaME配置文件和配置,还有一系列的企业-级别Java技术在嵌入式世界中具有相当大的潜力发挥作用。Java管理扩展(JavaManagementExtensions,简称JMX)用于分布式资源管理和监控,有朝一日能够作为嵌入式定义的有效补充。实时Java(Real-timeJava)在物联网嵌入式开发领域也占有重要地位。Java的实时模型和工具在医疗、交通、制造等行业,与传感器和效应器接口的嵌入式应用程序往往需要满足多种实时性要求。可以预见,心脏起搏器、发动机控制器、管道阀门等设备必须能够提供正确的实时结果,这甚至关系到用户的生命财产安全——而不仅仅是恼人的堆栈回溯问题。尽管JamesGosling预言Java需要满足各种常见的实时需求,但Java在发展初期还不具备理想的实时计算能力。值得强调的是,大多数Java运行时环境的可靠性很差,或者至少在处理垃圾回收时会导致内容一致性违规。Java实时规范(Real-TimeSpecificationforJava,简称RTSJ)等相关标准支持定时和不定时的任务调度、任务期限规划、CPU时间预算、垃圾回收线程等功能,可以保证特定任务不会受到垃圾的影响。集合带来的延迟效应,所有这些都显着解决了时间不确定性问题。RTSJ于2002年获得官方认证,并开始在部分Java虚拟机上运行。尽管直到2015年2月RTSJ才被置于Java社区进程的搁置项目列表中,但专家们在过去十年中一直在积极致力于改进和更新它。例如,JamaicaVM是aicasGmbH支持的RTSJ实现,目前免费用于教育和其他非商业用途。嵌入式实时调度,尤其是实时标准,在很长一段时间内取得了长足的进步,远远超过了一般的消费级软件。虽然成功的移动应用程序可能会在六个月内消失,但嵌入式医疗设备、汽车制造和工业软件通常需要可靠运行数十年。影响这些应用的公共标准通常需要相对较长的起草和开发周期。最近,甲骨文针对实时系统改进了JavaSE,并表示JavaSE已经能够为软实时需求带来比过去更理想的支持。这里所说的“软”至少有两个不同的相关含义。首先,这部分需求必须以比较平均的方式来实现,例如,一笔好的银行交易必须在300毫秒内完成。这里的软是相对于硬实时要求而言的。例如,某机车需要在1.25秒内收到应用的特殊告警,提醒其电磁阀已关闭。从这个意义上讲,硬实时系统需要满足的第一个要求是它必须以可预测的方式应对最坏情况。软实时足以满足大多数嵌入式和物联网应用的需求。对于那些需要硬实时支持的应用程序,建议Java开发人员在此处阅读JSR-302:Java关键安全技术。这套规范是Java实时规范的一个子集,其中一部分依赖于CLDC。除其他事项外,安全关键型Java定义了自己的并发模型和实时线程。OpenGroup行业团队最初于2003年开始推进Java关键安全技术。说到规范的当前状态,JSR-302规范负责人DougLocke预计这个酝酿已久的项目将在今年春天获得认证,并可能在2015年5月发布参考实现。嵌入式Java中Java的未来对嵌入式编程有很多希望,要满足即将全面成熟的物联网的需求和可能性,它还有很长的路要走。未来几年,数百亿台基于Java的设备将成为物联网网络的一部分。我将在下一篇文章中讨论这个话题,在爱好者和社区的背景下探索嵌入式Java环境中的各种具体示例,同时更深入地解释为什么RTSJ2.0将在实时编程领域之外传统对Java产生了重大影响。原标题:Java:曾经和未来的互联网编程之王
