琉璃是什么材料| nap是什么意思| 正名是什么意思| 神经损伤吃什么药最好| 子宫肌瘤有什么症状表现| 什么化妆品好用哪个牌子的| 耿耿什么| 大熊猫吃什么| as医学上是什么意思| 甲鱼喜欢吃什么| 吃什么长胖| 戴银首饰对身体有什么好处| 鸡汤炖什么菜好吃| 屋漏偏逢连夜雨是什么意思| 肌层回声不均匀是什么意思| 大腿肿胀是什么原因| 茯苓和土茯苓有什么区别| 疳是什么意思| 岁月的痕迹是什么意思| 恍恍惚惚什么意思| 伸张正义是什么意思| 黑胡桃色是什么颜色| 树大招风的意思是什么| 命途多舛是什么意思| 急性结肠炎什么症状| 心什么如什么的成语| 翠字五行属什么| 尿崩症是什么意思| 胆汁淤积症有什么症状| 什么是五行| 温州有什么区| 意志是什么意思| 盗汗和自汗有什么区别| 青春不散场什么意思| 90年出生属什么生肖| 石蛋是什么| 爱哭的人是什么性格| 喝中药不能吃什么食物| 宋朝前面是什么朝代| 膝盖擦伤用什么药| 金鱼藻是什么植物| 三天不打上房揭瓦的下一句是什么| 人工授精是什么意思| 巴洛特利为什么叫巴神| 实至名归是什么意思| 什么是阻生智齿| 自我是什么意思| 来姨妈喝什么比较好| 性激素是什么意思| 什么是飘窗| 口腔溃疡是什么原因造成的| 蜜蜡属于什么五行属性| 2028年是什么年| 什么牙膏好用| 左手无名指戴戒指什么意思| 炖牛肉放什么调料最好| 潮热是什么症状| 浙江有什么旅游景点| 黄体酮有什么作用与功效| 女人梦见自己掉牙齿是什么征兆| 三月是什么季节| kt什么意思| 牛逼是什么| 纺织厂是做什么的| 白带黄绿是什么原因| 什么叫介入治疗| 征信对个人有什么影响| 肚脐左侧按压疼是什么原因| 自然流产的症状是什么样的| 流火是什么原因造成的| 滑石是什么| 县局长是什么级别| 晚上磨牙是什么原因| 女性肾火旺有什么症状| 私奔是什么意思| 低度鳞状上皮内病变是什么意思| 小孩热感冒吃什么药好| 草字头加青读什么| ab血型和o血型的孩子是什么血型| 长期耳鸣是什么原因| 嗓子疼吃什么药最管用| 东盟是什么意思| 凡人修仙传什么时候写的| 肺痨是什么病| 梦见灵堂是什么预兆| 舌头烧灼感吃什么药| 小孩睡觉说梦话是什么原因| 补血补气吃什么好| 骨穿是检查什么病| 包子都有什么馅| 繁花似锦是什么意思| 血红蛋白是什么| 久坐睾丸疼是什么原因| 黄连水有什么作用与功效| 阴挺是什么意思| 巨蟹后面的星座是什么| 勾魂是什么意思| 三唑仑是什么| n t是什么检查| 狐狸和乌鸦告诉我们什么道理| 脚踝后面的筋疼因为什么| 蓝玫瑰的花语是什么| 什么风什么月| 蜈蚣是什么样的| 别开生面是什么意思| 湿气重喝什么茶| 为什么佛山有三个车牌| 脾虚生痰吃什么中成药| 心脏逆钟向转位是什么意思| 万事大吉是什么意思| 红糖是什么做的| 腿抽筋是什么原因| q12h医学上是什么意思| 儿童流黄鼻涕吃什么药| 做肝功能检查挂什么科| 脂肪肝挂什么科| 12月24号是什么星座| 红薯叶不能和什么一起吃| ugg是什么品牌| 嗓子疼吃什么食物好| 什么的蘑菇| 脂肪瘤应该挂什么科| 乳房边缘一按就疼是什么原因| 千年修炼是什么生肖| 牛肉和什么炒最好吃| 恒字属于五行属什么| 乳腺低回声结节是什么意思| minute什么意思| 经常腹痛什么原因| 冬至为什么吃饺子| 带鱼屏是什么意思| 炸油条用什么油最好| 什么叫酮症酸中毒| 现在是什么季节| 低血压吃什么好的最快女性| 文联主席是什么级别| 什么芒果好吃| 玄是什么颜色| 怀孕养猫对胎儿有什么影响| 授课是什么意思| 烧仙草是什么做的| 属虎的幸运色是什么颜色| 医院属于什么单位| 曹操原名叫什么| 九浅一深是什么意思| 心慌吃什么药能缓解| 哨兵是什么意思| 孩子不好好吃饭是什么原因| 肺阴虚吃什么中成药| 早上起床咳嗽是什么原因| 多囊卵巢综合症吃什么药| 什么牌子洗发水好| 8.9是什么星座| 白带多什么原因| 老婆妹妹叫什么| ins是什么| 11月13日什么星座| 吃什么水果能壮阳| 什么是平行世界| 黑死病是什么| 小产吃什么好恢复营养| 脑膜炎吃什么药| 一个火一个华念什么| apart是什么意思| 舌面上有裂纹是什么病| 昙花一现是什么生肖| 疯狂动物城树懒叫什么| 肠镜检查前需要做什么准备工作| 脱臼是什么感觉| 蚊子最怕什么植物| 名字为什么不能叫安然| 畏寒怕冷是什么原因| 拧巴什么意思| 肺有小结节要注意什么| 2021属什么| 氟比洛芬是什么药| 阴阴阳是什么卦| 一天吃一个苹果有什么好处| dg是什么牌子| 行李箱什么材质的好| 潜血弱阳性什么意思| 多发性脂肪瘤是什么原因造成的| hdr模式是什么意思| no是什么气体| 麻醉学学什么| 梁五行属什么| 乙肝核心抗体阳性是什么意思| 身体有湿气有什么症状| 喉咙一直有痰是什么原因| 三只手是什么意思| 苏铁是什么植物| 容祖儿老公叫什么名字| 倍感欣慰是什么意思| 银川有什么特产| 什么是静脉曲张| 天珠是什么| 子宫脱落有什么症状| 儿童流鼻涕吃什么药| 身份证后面有个x是什么意思| 死灰复燃是什么意思| 豆芽和什么一起炒好吃| 口臭是什么原因引起| 牛蒡是什么| 平面模特是做什么的| 寂灭是什么意思| 早教是什么| 吃什么对脾胃好| 2027是什么年| bmg是什么意思| 女生真空是什么意思| 头发长不长是什么原因怎么办| 0.5是什么意思| 一月二十号是什么星座| 抗美援朝是什么时候| 雪莲果什么季节成熟| 发改委是干什么的| 肛门指检是检查什么| 什么是夹腿| 井柏然原名叫什么| adidas是什么牌子| 狗为什么吃屎| 苦荞是什么植物| 夜幕降临是什么意思| 垂头丧气是什么意思| 蜜蜡是什么东西| ozark是什么牌子| 夜场是什么工作| 作壁上观是什么生肖| 桃李满天下是什么生肖| 忠心不二是什么生肖| 年年有今日岁岁有今朝什么意思| 食欲不振吃什么药| 天意是什么意思| hvi是什么病| tfcc是什么| 总胆固醇高有什么症状| 破瓜年华是什么意思| 当我谈跑步时我谈些什么| 1月底是什么星座| 中山市有什么大学| 慢性咽炎吃什么药效果最好| 7是什么意思| 手脚抽筋是什么原因引起的| 贵阳有什么特产| 歇斯底里是什么意思| 为什么会得脚气| 乙肝检查挂什么科| 中国的国酒是什么| 例假一个月来两次是什么原因| 脑袋疼是什么原因| 右侧卵巢囊性结构是什么意思| 一月19日是什么星座| 吃什么不长肉还能瘦| 黑管是什么乐器| 剑桥英语和新概念英语有什么区别| 流金铄石是什么意思| 吸气是什么意思| 献血有什么危害| va是什么车牌| 血管鼓起来是什么原因| 70属什么生肖| 意守丹田是什么意思| 男人为什么会出轨| 秉字五行属什么| 百度

新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > Java能扮演嵌入式应用开发的主角吗?

北京冬季オリンピック会場とインフラ建設が全面的に着工

——
作者: 时间:2025-08-05 来源:IT168 收藏
系统设计师来说,有许多优点。作为一门开源的编程语言,允许面向对象编程,又没有C中存在的严重问题。运行时环境还提供了有用属性。Java提供的内存管理功能使得编程人员不必分配及释放内存。运行时环境甚至可以通过整合核心类库来简化程序分配。 但大多数应用面临Java没有处理好的两大约束:没有足够的空间和时间。 百度 “不少评估表彰活动组织轰轰烈烈,验收草草收场,学校参与就发一块铜牌。

  那么,Java作为一种在C++基础上改进了的面向对象的开源语言,在应用方面能挑大梁吗?能否为它自己撑起一片蔚蓝的天空呢?

  一、为什么会是Java?

  对于来说,Java技术比C语言和汇编语言具有很明显的优越性。最显著的特点是减少了系统的和维护,增强了代码的重利用能力,提高了Java代码与系统原有代码的可整合性。

  1. 提高效率和可维护性

  在项目的整个生命周期中,Java环境大大的简化了开发和维护。由于目标环境是建立在一个虚拟机上,代码可以很容易的编写、调试、分析、更改、维护。加上将来要连接的外接设备,未来的系统可能比目前的复杂很多。升级手册也许不会在整个项目的生命周期中都能起到作 用。取而代之的是,硬件设备的可连接性使得能够远程管理模块,这样就保证了开发人员能在产品上增加新的性能,同时解决了在产品生产后软件升级和维护的问题。

  2. 重复利用代码

  由于嵌入式系统有特殊的需求,以及不同的专门硬件要协同工作,嵌入式软件开发者通常使用非常原始的方法来开发,有时每一个新的项目都要从头再来一遍。现在,随着嵌入式技术的成熟以及系统本身变得更大更优化,很多人开始对于把一个产品的模块甚至是全部的应用程序用到另一个产品感兴趣。这种可重新利用性使得"一次开发,多次利用"成为了可能。

  Java环境使得一个模块可以只要做很少的工作就可以适应多个项目和平台。甚至包括有时客户需要一个新的目标板,或者采用新的硬件(CPU或外设)和软件,或者使用不同的Linux都可以进行移植。

  3. 集成Java代码和源代码

  使用源代码明显是指应用程序的多可用性以及代码的重利用能力。在开源的Java语言的应用中,一个设计很好的界面,或者虚拟机,或者是底层的硬件都可以很好的兼容到嵌入式系统中。尽管无法移植,对于很多功能和硬件界面来说,在本地环境下开发的代码也许仍然是最好的解决方案。在C、C++或者汇编语言中,加入标准的通信、接口模块、用户界面、安全特性会花费很多时间与金钱。与之相比较,Java的基本库本身就提供了这些东西甚至还更多,这样就可以加速开发。

  二、Java碎片真的会有影响吗?

  在使用JavaME CLDC进行移动电话开发时,人们经常会碰到碎片这个词。Java强调“一次开发,多次利用”,但碎片出现,却打破了这种传奇。于是,这就导致应用开发人员不得不在许多不同的设备进行应用程序的测试,甚至于不得不在应用程序中对某些特殊的设备进行一步客户化的工作。

  对程序开发人员来说,碎片真是个恶梦,因为碎片平白无故的增添了代码量和测试工作量。当然,对移动电话持有者来说也不是什么好事,因为碎片消耗了设备的空间。不管怎么说,碎片对每个人来说都是件很讨厌的事情。

  但对于嵌入开发者而,碎片又意味着什么呢?

  首先来看看碎片产生的根源。移动电话行业标准本来给不同的产品预留了一定的自由空间,这初衷是好的。但事实上,这种预留的空间,却导致了不同产品之间的冲突,不能进行很好的兼容。这就是碎片产生的最根本原因。于是这种不兼容性进而升级到了Java实现的程序里。这正是Java想花大力气创建一个统一Java实现的原因所在,如JSR248,MSA(Mobile Service Architecture)的建立。

  从嵌入式开发人员的角度来看,也许并没有这么糟糕。其实碎片并不会影响到嵌入式开发人员,因为已经可以确定设备之间的硬件是完全兼容的。如果使用的是原始语言像C/C++的话,嵌入式开发人员可以在任何地方来编写代码,并在不同的设备上进行代码的重用。

  三、 Java平台的测试

  如果采用Java来实现嵌入式设备开发,会不会碰到C/C++经常碰到的测试成本太高的难题呢?

  当然,采用Java来开发的话,可以对软件进行多次的重复测试,尽管这不一定是必需的。而完全需要进行重复测试的只是那些新加的Java实现。如果是Java平台的合法用户的话,还可以使用Sun提供的TCK来进行程序兼容性的检测。如果付费的话,还有很多压力测试可供选择。只要能保证Java平台的正常运行并按Java的测试通过了的话,那么所开发的程序其可移植性是完全可以保证的。

  当然,在此有必须有提醒一下只测试Java实现端口的开发人员。因为有一些端口的实现有可能是采用C/C++来编写的,这些必须测试。可以使用全新设备来对整个程序进行测试以达到这一目的。

   1. 测试工具包

  通过采用Java来进行编程,可以确保平台的APIs是否正确的工作。如果采用C/C++或直接对操作系统编程,则使用全新的设备时,无法保证APIs的正常性。由于这些问题取决于所采用的测试包的全面性和可靠性,因此,在开发阶段有可能发现不了它们,而在部署的阶段发现了它们时,问题已经扩散得超出控制范围了。而对于Java平台的测试,一般比较全面。所以,C/C++或直接对操作系统编程的问题能比较早的被发现并解决。

  因此,采用Java平台时,其测试时间有可能跟使用C/C++来开发整个程序的时间差不多。但结果大大不同,使用Java平台时,其最差的测试效果往往可以与C/C++环境下最好的测试效果媲美。就测试的选择而言,采用Java平台时,可以使用Sun的TCK来确保程序对新设备的适用性,同时,还可以得到Java的其它测试包,不过是收费的。然而使用C/C++时,则只能依靠开发人员自己来保证程序对新设备的适应性了。

  2. 端口兼容性

  那么如何知道设备所依赖的操作系统端口是兼容的 呢?没法知道,因为操作系统供应商通过没有测试它。除非所使用的设备是标准的硬件,没有进行任何的客户化工作,或是可以让操作系统提供商对这特殊的端口进行单独的测试。相样,采用Java平台时,这又是怎么的结果呢?可喜的是,由于Java平台的TCK已经做了这样的工作,因此,这可以更好的提高其兼容性。

  总之,采用Java平台所需的测试,最差的情况也就跟采用原始语言(C/C++)一样,但大部分情况下,都优于后者。而且,更具有兼容性的保证。

  四、Java很占内存吗?

  使用Java平台进行嵌入式设备开发时,其对内在的使用量,会不会比使用原始语言如C/C++更大些呢?这取决于软件的复杂性。Java由于虚拟机和内库的原因,有可能会导致内存开销的增大。下面比较一下Java平台内存的占用情况(基于Sun的实现):

  CLDC(Connected Limited Device Configuration,运算功能有限、电力有限的嵌入式装置,如PDA 、手机等):可工作于100K(RAM),JIT(Just In Time,即时编译技术)需要最大些。典型的部署要求500K-16M(RAM)。

  CDC(Connected Device Configuration,运算能力相对较佳、并请在电力供应上相对比较充足的嵌入式装置,如冷气机、电冰箱等):VM约为250K,JIT小于300K,VM+JIT+基础类库约占2-2.5M。典型的部署要求:4M-32M。

  当然,内存的占用量还取决于应用的大小及内在的使用情况。可以看出,其实Java平台不会占用太大的内存。但是,这只是问题的一半。另一半是,Java代码最后部署时是以类文件来部署的,它主要是包括字节码和元数据。通过对CVM数据的分析,可以看出,字节码占据着大概30%的数据量。而采用JIT编译的代码相对于字节码而言,可以发现,内存的占有量增加了,并有一个7-8倍的ARM指令集。由于,可以估计:

  Java类转成字节码的速度≈1/30%≈3.3x;

  原始语言转成字节码的速度≈7x。

  这意味着,Java代码的内存使用量约为原始语言代码的一半。当然这只是非常粗略的估算,但却是合理的估算。

  使用Java的JIT后,只有那些使用频率高的代码才会被编译。而在系统中只是偶然被执行的代码则采用解释来编译。同时,JIT尽量使被编译的代码其内存占有量保持在一较小的范围内。对CVM(CDC所使用虚拟机),默认值为512K。而在一些较优秀的程序中,可以发现,其值为100K-300K。

  这也就是说,使用Java编写的程序,只有使用频率比较高的代码才导致内存占用的增加。相反,使用C/C++编写的程序,整个代码都需要进行编译。因此,不能说使用Java语言编写的程序占用的内存就会比使用C/C++编写的程序大。这决定于软件相对于平台代码的复杂度及大小。如果软件规模比较大,Java平台所消耗的内存远小于Java类文件简洁性节约的内存,这种情况下,使用Java平台将有利于节约内存。如果软件的规模比较小,则Java平台消耗的内存就比较明显了,可以考虑使用C/C++来开发,以节约内存。

  五、  结论

  Java语言最初的设计企图是想用于控制消费性电子产品,本为嵌入式设备而设计,但随着因特网的兴起,Java在台式机和服务器端的应用开发中取得了巨大的成功。Java在应用中充分展示其通用性与完全性等优势,而这在嵌入式设备的应用开发中是至关重要的,这使得Java重返嵌入式应用开发领域成为必然。STK Java卡和的成功应用昭示着Java在嵌入式系统应用开发中的美好前景。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭
小孩流鼻涕咳嗽吃什么药 日丙念什么 美国绿卡有什么好处 唇系带断了有什么影响 心律不齐什么症状
前列腺炎是什么症状 缺钾会出现什么症状 母婴传播是什么意思 老狐狸是什么意思 开店需要什么手续
千里马比喻什么人 女生适合什么工作 宝宝有口臭是什么原因引起的 87岁属什么生肖 嗓子哑了是什么原因
提高什么 娃娃鱼用什么呼吸 山楂不能和什么一起吃 心脏跳的快吃什么药 狗什么东西不能吃
标准分是什么意思hcv8jop0ns4r.cn 姻亲是什么意思hcv8jop0ns0r.cn 漫反射是什么意思hcv9jop1ns7r.cn 巴西货币叫什么hcv9jop6ns5r.cn 金牛座后面是什么星座hcv8jop0ns9r.cn
窝边草是什么意思hcv9jop1ns7r.cn 早上起床手指肿胀是什么原因hcv9jop3ns7r.cn 甘油三酯是什么意思hcv8jop5ns3r.cn apl医学上是什么意思hcv8jop5ns3r.cn 性功能下降是什么原因hcv9jop5ns6r.cn
脚老是抽筋是什么原因hcv8jop6ns9r.cn 特仑苏是什么意思hcv8jop4ns9r.cn 决明子泡水喝有什么功效hcv8jop4ns7r.cn 沙棘对肝脏有什么好处xinmaowt.com 为什么会流鼻血什么原因引起的hcv8jop8ns8r.cn
眉毛浓的男人代表什么hcv7jop6ns1r.cn 朋友圈ps是什么意思hcv9jop3ns4r.cn 血痰是什么原因hcv7jop9ns2r.cn 为什么男人吃石榴壮阳hcv9jop6ns4r.cn 藿香正气水有什么功效hcv8jop1ns1r.cn
百度