Java用于嵌入式系统之分析与解决方案.docx
《Java用于嵌入式系统之分析与解决方案.docx》由会员分享,可在线阅读,更多相关《Java用于嵌入式系统之分析与解决方案.docx(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java用于嵌入式系统之分析与解决方案摘要:本文具体分析了Java语言用于嵌入式系统的优点和缺点,并针对其缺乏提出了可行的解决方案。关键词:嵌入式系统JavaJava语言最初的设计企图是想用于控制消费性电子产品,Java的设计者企图建立一个简单的、面向对象的、智慧的、已经解译的、强大的、平安的、架构公道的、可移植的、高性能的、多线程的、动态的语言。为使Java对开发者有吸引力,Sun公司交融了类似于C语言的语法和构造。然而Sun最终没有到达这个目的,Java还是被证实不合适小型的电子设备,这很大程度是由于它大而且速度慢。应用Java程序所需要的处理才能和内存量,对这类设备来讲太昂贵了。然而,S
2、un公司设计Java时最重要的是平台无关及网络集成。一个无须更改可以在几种不同硬件和软件平台运行的程序,对网络环境来讲是一个理想的程序。对想建立通过网络来通讯并利用网上资源的分布式程序的开发者来讲,一种在任何平台上都有内置的和标准的网络支持的语言是一个大实惠。并且在Java开展的后来阶段,对新兴的贸易化Internet的兴趣到达了狂热的程度。因此Sun公司便借机大力宣扬Java是为Internet设计的。越来越多的人已经把Java视为将使Internet功能更上一层楼的工具。1、Java语言与嵌入式对于选用嵌入式编程语言,一般讲,越是高级的语言,其编译和运行库施加的开销越大,你的应用程序也越大
3、,越慢。已经公认用汇编语言能写出最小最快的程序,其次是用C或者Forth,接下来较大的是C+或者Basic,然后才是Java。因此一般来讲,编程人员都会首选汇编和C,而然后才会考虑C+或者Java。但是嵌入式开发者为何要来关注Java呢?笔者以为,随着不断增长的市场需求,很多嵌入设备必须适应网上沟通的需要,为了迎合此要求,考虑这种到开发Internet应用程序的便利,诸多开发者都发现使用这种语言是有意义的。另一个原因是随着内存条及32位处理器价格的下降,最初在嵌入系统使用Java太昂贵的问题不再有了。随着使用Java的本钱代价减少,它的很多优点应当被考虑作为嵌入平台。2、Java对于嵌入式的优
4、点分析Java语言的优点在于:它当初就是由理解和信仰网络计算梦想的一个小巧而专注的开发组设计的,固然该语言最初的施行方案有点缺陷,有很多后来已被解决了,但为了这个梦想,他们很少在技术上妥协,结果诞生了一种专为以互相通讯为主要目的的设备而设计的语言。有很多技术上的优点都可能会引导嵌入系统开发者选择Java,以下就是这些优点其中有几个也适用于通用编程A与处理器无关Java的第一个优点就是与处理器无关,这个优点似乎与嵌入式系统没什么相干。传统上,嵌入程序就是针对特定的微处理器设计并在其上运行的,而C语言程序的可移植性那么可通过编译或者穿插编译来保障。但是在Sun公司的模型中,一个程序可能是存储在一个
5、系统上,而被下载并运行在另一个完全不同的系统上;设备可能从不同地方下载一些程序来在一个处理器上运行,或不同的处理器运行一个程序,通过网络在互相间传递数据。使用Java,一个嵌入式系统就可能成为一个通用的通讯设备,能下载并运行能完成特定任务的程序。对嵌入式系统,这是一个新的模型,已经有一些开发者正在向它靠拢。例如,电视机机顶盒的供给商已公布并入JVM,以使用户能通过Javaapplets在他们观看电视的同时接收到的支持该电视节目的一些内容。这样你在观看足球比赛时,看到的支持内容就可以是对球员的技术统计;假设你在看电影,看到的支持内容就可以是演员的背景资料。JVM还被并入到挪动中,这样用户可接收股
6、票报价信息、比赛分数及其他即时信息。笔者以为,这是一个恰当的设计和施行模型。其一是你在选择开发平台时更加灵敏了。你无需在与目的一样的平台上开发,也不用去关心穿插编译,由于Java字节码能在任何有JVM的操纵系统中运行;另一个优点是:几乎所有的检测和调试可以独立于目的设备来进展。但是,一些数据输入和硬件交互要求在目的或者是很好的仿真系统上测试。由于个别JVM有时有兼容性的问题,你应该在所有将用到该程序的平台上测试它。但一般来讲,你并不要高级而昂贵的、装备有逻辑探针、ICE以及其它调试工具的、针对目的平台的开发环境。B面向对象的编程Java是一种纯粹面向对象的语言。所有代码和数据都是某个类的一局部
7、,没有全局变量或者是独立于类存在的代码,一个对象是一个类的实例,对象是通过调用操纵方法,或讲函数来操纵的,而这些方法或者函数也是类的一局部,对象的方法就对象的数据进展操纵。Java类被组织成一个等级层次,在层次构造中,一个子类可以继承其超类的行为,并可用子类所具备的一些特有功能来扩展其超类的功能。对象模型是你能定义对应真实事物的数据构造,使得程序的任务和任务怎样实现者二者之间的转换变得根本上透明。面向对象的设计和编程的优点在于其开发速度和代码的可维护性,很多面向对象的开发都能通过利用和更改现存类库来完成,而不是创造一个新的构造,这就使开发加快了,例如,一个硬件开关能在软件中使用一个开关对象来实
8、现,该对象包含用于控制和操纵开关的所有必须的数据和代码。面向对象的方法还尽量使用自然的构造,使其有很高的可读性,且可轻易更改和加强。C平安和平安操纵由于有了JVM,一个Java应用程序与操纵系统或者硬件完全隔绝,因此计算机病毒或者其它作祟的的代码就很难获得对设备的控制。虚拟机是主机设备和那些可能难以确定其质量和可靠性的软件之间的一个保护层。另外,Java设计者从该语言中去掉了指针变量的概念。Java不能任意访问其内存位置,它们只能读写有Java内存分配治理系统创立的对象。由于Java编译器所强迫的严格的分类机制,从理论上来讲,访问那些未分配给程序的内存区域是不可能的。这个限制使得要写恶意代码的
9、程序变得非常困难了。对Javaapplet施加的限制就更加严格了。由于Javaapplet被设计成从Internet上下载,因此被视为不可信任的代码,除非它包括你已认定为可信任的主机的数字指纹。JVM在内存的一个称之为sandbox的区域运行诸如applet这种不可信任的代码。它给每个applet分配资源和特权,并将其限定在这些分配区域范围中。D内存治理Java的内存治理远比其他语言简单,由于它不使用指针。当对象被实例化时,内存被动态分配。正如我们前面分析的,对个别内存地址的访问被Java的设计者视为一个对平安的潜伏危险,因此,访问也被制止。而且,Sun的网络模型已假定你也许不知道目的处理器,
10、而引用专用内存地址变得没有必要。去掉指针的结果不仅进步了平安性,还简化了编程,错误也减少了。在C语言中,可以用值或者引用的方式来访问数据。事实上,出于灵敏性和控制考虑,非原始数据类型都由引用方式来存取,即通过指针访问。因此,值和引用的不同变得非常清楚,十分是:由于你不得不使用不同的符号和&来存取数据。要用这两种不同的访问方式,你必须清楚理解它们是什么以及你为什么应该使用这一个,而不使用那一个。在Java中,由值和引用来存储是无缝的,尤其由于其符号都一样。两者间唯一不同在于数据类型本身:所有原始数据类型始终由值的方式存取;所有对象,包括字串、数组以及文件流,始终由引用方式访问。声明为原始数据变量
11、类型包含该变量的值,声明为对象的变量那么包含对该对象即该对象的地址的一个引用,而非对象自身的引用。仅仅声明一个对象变量并不给对象分配内存,你必须用“new关键字来分配内存和创立对象。这两种方法最根本的不同在于:不可能象在C中那样就Java内存地址做指针算术或者其他操纵。Java中对象的地址是相对的或者虚拟的,它由虚拟机任意分配,因此你没有理由还想要指针地址。E垃圾采集垃圾采集自动采集内存中未引用的内存,并将其归回空闲内存链表中。JVM使用此功能将不在使用的内存还给系统。当Java程序讲明并实例化一个对象或者数组时,它仅仅做一个JVM恳求,访问其下面的系统内存通常是通过主机操纵系统并分配内存,J
12、ava的垃圾采集系统通过内存采集对象,然后检查它们的引用链。Java的垃圾采集系统的工作方式一般是搜索内存中的对象,然后检查它们的引用表。它计算程序中有多少变量当前正在引用每个对象。假设对象的引用数目为零,它知道此对象不再在使用了,它的内存可以收回。其结果就是,不必像你在C语言所作的那样,要人工来释放分配的内存。在C中,释放内存是一个必要、耗时且易出错的细节。Java自动而准确的处理此经过,去除了C/C+程序中那种常见的错误致因。由于今天的嵌入式系统通常都是网络的,采用内置网络支持的语言节约了在实现网络协议和通讯程序方面消耗的大量时间和努力。在Java中,网络类包括TCP/IP流和使用TCP及
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 用于 嵌入式 系统 分析 解决方案
限制150内