您的位置 首页 系统

嵌入式体系用Java言语

Java是在C++基础上改进了的面向对象的语言。它可以得到类的封装、继承、多态等的优异重用性的好处,Java的小应用程序(Java Applet)还特别适合于上网。

Java是在C++基础上改善了的面向对象的言语。它能够得到类的封装、承继、多态等的优异重用性的长处,Java的小运用程序(Java Applet)还特别适合于上网。看来,用Java开发上的网的嵌入式运用应是很抱负的,惋惜,完结起来受嵌入式设备硬件在速度、存储器容量、和其它资源的约束,加上桌面Java言语操作不到硬件,和履行时刻的不确认性,使Java运用于嵌入式体系遇到新的问题。Sun公司按PersonalJava规范开发的J2ME(Java 2 Micro Edition),是专用研发用于开发嵌入式的上网个人消费类设备的。因而J2ME除有面向对象的长处外,还包含了Web才能。J2ME运用的是Java API的一个子集,它仅保留了API的要害特性并适当地作了简化。一起,又规则了两种可有存储形式:一个形式的内存为128~256KB,另一种形式是 256KB以上的。其他,如类包也依据存储形式选用。

下面为防止混杂,在文中凡未加特别阐明的Java,统指桌面Java而言。

一、 问题提出

*常用的解说性Java(Java Applet)的履行速度慢,不适于嵌入式的运用。

*Java要求过大的内存。

*嵌入式设备要求操作硬件。因Java抛弃了C言语所运用的指针,且在Web环境下运用了Java虚拟机(JVM),使Java无力直接乃至间接地用指针操作硬件。

*Java运用一些主动功用会引起履行时刻的不确认性,成为嵌入式的大忌。如废物主动搜集器。本是关于C的严重改善,但却因程序主动地收回废物,然后引入了实时的时刻不确认性。

二、处理方案

运用AOT编译器

为处理解说性Java(Java Applet)履行速度过慢的问题,开展了AOT(ahead-of-time)编译器。我们喜爱在Internet上运用Java的一个原因是其字节码具有跨渠道性,即同一Java代码能够运转于PC、Mac、Solaris,乃至于主机之上。为此,在英文叫它WORA(写一次即可通行于恣意机)。这是由于每一操作体系渠道上都有契合自己机型的专用Java虚拟机(JVM),由它对字节码进行解说运转。由于解说程序需先被解说再被履行,多了解说环节,延误数秒钟时刻。假如是拨打电话,这个时刻足以令人生厌。现在运用AOT(ahead-of-time)超前编译器,提早将解说码转换为本渠道所用的并经优化过的二进制码,速度进步许多。现有Cygnus公司宣称,它开发的AOT编译器履行速度是原解说程序的8倍。NewMonics说它的 QuickPERC编译器是原解说程序的20倍。当然,AOT编译器也有缺乏,便是他献身了Java的WORA。

削减内存的占用

一切的面向对象言语,比C及汇编言语点用内存都多。这个问题关于桌面体系早已不再是考虑的要素了,如服务器均匀占用数GB的内存已习以为常。可是,关于嵌入式体系却不能不考虑。用Java开发的信息家电产品或许需求把内存约束到 512KB以下。假如嵌入式体系运用的是规划为1MB的中心类库,那便是说,一句代码没有写,内存早就不行用了。

为此,需求把用不到的类、类方法和代通通从程序中除掉。(AOT超前编译器能够协助处理这个问题。)再便是自己开发本渠道专用的,既矮小高效、又契合Java API规范的Java中心类库。

开发能混合编程的IDE

一般以为,用C言语写的程序,指锗运用不当引起的缺点占总缺点的80%左右。 Java言语,出于安全的考虑,才抛弃了运用指针。可是,指针却能够最直接地访问到存储器和实在的硬件。现在,为在嵌入式Java中能够访问到硬件,不得不改用本地接口,即从嵌入式Java中运用能够访问到硬件的C言语函数来实施穿插编程。这就意味着增加了杂乱性。开发人员需求具有多言语以及多层次的混合编程和混合调试的才能。开展多言语多层次混合编程的IDE,无疑非常有助于一般开发人员完结这一适当杂乱的课题。Metrowerks的 CodeWorrior和IBM的VisualAge便是新开发的依据J2ME的这样的IDE。

战胜时刻的不确认性

Java最首要的问题是时刻不确认性,首要来源于存储器残渣的主动搜集再生器。这种废物搜集再生器作业的时分,主动地决议何时停下其他程序的履行,再依据其时残渣的实践情况或长或短地完结使命。所以,它严重地搅扰实时运用所要求的时刻确认性。为处理这一问题,不同公司选用不同的方法和废物搜集的算法。NewMonics的Real Time Executives和Windriver的FastJ都是确保肯定确实守时刻,Sun公司用不同的方法但也确保具有实时确实定性。选用不同的编程技巧,比方运用类型确认的线程部分存储,也能够防止因废物搜集引发的抵触。

需坚持跨渠道的必要

AOT编译器生成的Java代码丧失了Java在其他操作渠道上的履行才能。要想把Java的源代码再向其他渠道移植,需求附加很大的劳作。面向对象的一个根本规划原理便是只需坚持接品不变,那么,与接口攀谈的代码在移植时就不受影响。所谓高档逻辑接口的阻隔方法,事实上,便是将渠道灵敏的内容同移值无关的代码别离开来,而且别离供给相同功用的渠道灵敏程序。现在,针对嵌入式 Java,现在还没有人做这项作业。

三、实践运用

Java是杰出的嵌入式编程言语吗?

还不能这么说,至少现在是这样。由于在嵌入式体系中,Java怎么运用要看具体情况而定。关于需求办理中止来完结重要使命的运用体系,就不适宜选用Java进行开 发,比方引导登外星的飞行器体系便是这样。关于要求轻型、高效、使命重要、时刻确认性要求极高的体系,也是只能局限于运用C言语和汇编。比方,点着登陆外星的制动火箭体系,守时经过串行口获取要害信息一边做出决议的体系,守时陈述航天器方位的体系等都不能运用Java。可是,需求不断与别人通信联系,以便对货运进行有用办理的手持体系,又最适合运用Java编程。由于,它既发扬了Java Applet固有的跨渠道运用地Web环境的特色,又能充分运用服务器端的现成软件。

运用Java有时也并不彻底取决于技能

立足于经济上的考虑,比独自的技能考虑更为重要。比方,关于服务器,为了支撑运用Java,甘愿多花费数千元扩展存储器是正确的。由于,从投入/产出的剖析也得出相同的定论。又如手机,若为支撑运用Java,哪性仅只需求多花一元钱去扩展存储器也是不可行的。由于,手机的出产是以行百万件的产值来考虑的,多花一元线,就意味着多花千百万元,诺大的数字远比技能的先进更为重要,是清楚明了的。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/xitong/300059.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部