物联网、ui/ux 和 ai 等嵌入式系统每天都变得越来越复杂。过去只有一个或两个功能的产品现在为用户提供了更多的实用程序,需要反映用户界面提供的体验。物联网正在改变我们处理硬件的方式,保证了互联、自动化甚至更智能的日常生活。java是最常用的编程语言之一,特别是因为它易于开发和跨平台使用。但是,java尚未在嵌入式系统的开发中被广泛采用。事实上,c/c++仍然是嵌入式系统中最流行的编程语言。大约80%的嵌入式系统项目是用c/c++编写的,但将来不会这样。可能会采用新的语言来满足市场增长。使用 c/c++ 构建项目非常耗时,并且很难找到或培训新的 c/c++ 专业人员。本文的目的是展示使用java进行嵌入式系统开发的主要优点,以及这种语言的缺点(以及建议处理和解决这些缺点的方法)。
物联网和嵌入式系统与java的比较
多年来,参与嵌入式系统开发的专业人员数量大幅增长。当然,这种专业人员与从事台式机和移动设备应用程序开发的人数之间存在巨大差异。但是,根据ic insights的数据,嵌入式设备mpu的销量将在三年内与智能手机处于同一水平。
一般来说,机器已经配备了真正的技术武器库。我们周围的产品,如汽车和家用电器,已经创造出能够响应人类需求的不同事件和要求的能力。在这种情况下,物联网代表的不是未来的趋势,而是现在正在发生的事情。这也可以在工业环境中看到。工业自动化需要更多的连接性、数据分析,当然还有新的仪表板。
考虑到所有这些,有必要关注未来的预期。尽管 c 和 c++ 需要更少的内存和 cpu 周期,但 java 应该被视为嵌入式系统的更好选择,因为它是最有组织的编程语言之一,非常适合大型项目。java 具有嵌入式系统环境的理想特征,包括可移植性、代码重用、可靠性、安全性、web 以及与其他嵌入式系统的连接。为了提供嵌入式世界需要(并且已经要求)的东西,使用像java这样的高级语言是很重要的。此外,世界上有很多java开发人员,迁移到嵌入式系统对他们来说应该不是问题。
在嵌入式系统上使用 java 的优势
使用java为嵌入式设备开发应用程序,除了最佳的语言质量外,由于各种用途和现有支持,还可以减少应用于项目创建的时间和成本。那么,让我们看看为什么你应该将java用于嵌入式系统的其他一些原因:
上市时间很重要,提供更少的开发时间:java具有理想的内存管理,并且更容易检测错误(并修复它们);
建议用于超过 5 个屏幕的 gui 项目;
从第一个版本开始就坚固耐用(得益于封装概念、设计模式和 solid 原则);
单纯;
可移植到不同的cpu或操作系统(无需重写代码);
安全性,支持加密敏感数据;
大量独立于操作系统的库;
可在桌面和远程调试;
在高级语言和高性能方面的最佳折衷方案(取决于所使用的虚拟机);
看起来很完美!但是(就像世界上的一切一样)也有一些缺点。让我们看看java在嵌入式系统面临的挑战。
将 java 用于嵌入式系统的缺点
选择java有很多很好的理由。但是,在嵌入式系统上使用 java 有三个主要缺点:
java非常冗长;
它复杂而庞大(217 个包,4240 个类);
性能低。
甚至甲骨文自己也创建了java se embedded来解决这类问题,并针对嵌入式设备优化了虚拟机。但是,对于大量针对低端设备的项目来说,这还不够。
这种担忧一直是java进入嵌入式系统的主要障碍。但好消息是,有一些新技术旨在解决所有这些问题。
嵌入式系统占用空间小,性能高
为了实现这一目标,有必要找到完整java和java虚拟机的替代方案。在这种情况下,totalcross是一个有趣的框架。
totalcross是嵌入式系统的sdk,使用自己的虚拟机,称为totalcross虚拟机(tcvm)。tcvm 不是基于堆栈的 jvm,而是基于寄存器的虚拟机。这在运行时间上产生了巨大的差异,因为它减少了加载的指令数量。正如您在以下示例中看到的,一个简单的操作在 jvm 上加载四条指令,而在 tcvm 上运行时只加载一条指令。
除了tcvm之外,还基于统计研究创建了一个称为totalcross字节码的优化字节码,以确定对性能影响最大的最常用的函数。除了这些函数减少指令数量的压力外,这种优化的字节码还确保了低占用空间,因为它使用了一个名为 nano java 的 java 子集,该子集只有 86 个包和 1184 个类(完整 java 的 1/4)。
totalcross不使用所有的java架构,而只使用嵌入式应用程序开发所需的架构。所有这些特性为嵌入式系统提供了5mb的占用空间和高性能。
结论
在嵌入式系统上使用java的优点多于缺点,特别是因为代码的质量和已经能够使用java编程的大量人员。将java社区纳入嵌入式系统领域尤为重要,因为它是编程世界中的第三大社区。但是,正如我们所看到的,足迹和性能会影响项目结果。因此,建议使用能够打破这些障碍的替代方案,例如totalcross框架。有了它,可以享受java的所有优点,并且仍然保证嵌入式系统的低占用空间和高性能。
LED全彩显示屏电压不稳定会出现哪些故障?
iOS10.3.3正式版刚更新iOS11Beta4又来了,iOS11Beta4升级教程、可更新设备、更新内容汇总
赛伍应用成为今年第三家将上市的光伏企业
愈发强势的“宁王”,如何拓展产业链?
电子芯闻早报:物联网架构国际标准的制定
用于嵌入式系统的Java:优点和缺点
硅谷在一步步走下神坛 中国人工智能战略的实施使人才从硅谷回流
NVIDIA RTX与GTX的区别是什么?
ReID与人脸识别相结合将应用于更多更丰富的场景
蓝牙,WIFI等无线产品的FCC-ID认证
Atmel半导体方案:如何实现汽车雨刷系统
超干的干货来了!一文了解HTTP协议
塑壳断路器选型要素和注意事项
电子元器件系列知识--三极管
无人值班变电站的电力运维云平台的维护
单晶高镍正极高压稳定性的起源
基于RS-485总线的温度监控系统
MEMS加速度计有什么样的运用前景
FCC一致投票反对中国移动向美国提供电信服务的申请
高通炮轰联发科和麒麟 根本就不在一个级别