您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > J2ME手机游戏开发技术详解
第1章J2ME概述本章主要介绍J2ME的相关背景知识。读者需要掌握以下知识点:J2ME的3层体系结构。CLDC类库和通用连接框架。MIDP2.0的新特性。CLDC/MIDP总体体系结构。CLDC/MIDP的安全机制。1.1J2ME体系结构为了适应移动数据的发展,推进无线电子商务等业务的发展,J2ME(Java2MicroEdition)即用于嵌入式系统的Java被引入无线领域。J2ME的出现实际上是Java技术的回归。作为Java2平台的一部分,J2ME与J2SE、J2EE一起,为无线应用的客户端和服务器端建立了完整的开发、部署环境。随着J2ME的应用,它为移动互联引入了一种新的模型,即允许手机可以从互联网上下载各种应用程序,并在手机创造可执行环境离线运行这些程序。由于定义了可执行程序下载的标准,并在手机上创立了可执行环境和程序开发语言,由此,在移动通信业第一次为软件开发商创造了巨大的商业机会,手机用户在得到丰富应用体验的同时,也大大提高了运营商的网络流量。1.1.1Java的版本Java在10多年的发展历程中,已经成长为一个全面而成熟的面向对象应用程序开发平台,它适用于广泛的、异构的编程环境,这些应用的涉及面非常广,从企业级的服务器应用到传统的桌面应用以及各式各样面向小型设备的嵌入式应用。Java2平台包括3个版本,每个版本都针对不同的用户群,如图1-1所示。这3个版本具体为:Java2平台企业版(J2EE):用于满足企业向它们的客户、供应商、雇员提供服务的需求,提供了大型的、可升级的、可靠的商业服务器解决方案。Java2平台标准版(J2SE):用于传统且成熟的桌面系统。Java2平台微型版(J2ME):主要面向消费电子产品和嵌入式设备。说明:JavaSDK1.2及以后的版本都统一改名为Java2,因此这些名字中都有2。GeneratedbyFoxitPDFCreator©FoxitSoftware概述·3·图1-1Java的版本结构Java2各个版本所面向市场的每一个版本都有其自己的虚拟机,这些虚拟机都为其目标应用做了特别优化。1.1.2J2ME的3层体系结构J2ME用于为信息家电市场提供应用服务,这些信息家电包括呼叫器、移动电话、像Palm这样的个人数字助手(PDA)、电视机顶盒、POS终端以及其他的消费电子设备,而且每一种家电设备又有不同的特性和界面。为了满足消费者和嵌入式市场不断发展和多样化的需求,J2ME体系结构采用模块化、可扩展的设计。这种设计是通过一个3层软件模型来实现的,该模型构建于本地操作系统之上。J2ME的3层体系结构依照各种设备的资源特性,将J2ME技术架构分为简表(Profile)、配置(Configuration)和JavaVirtualMachine(JVM)3层,然后再进一步细分,这使J2ME能够在每一类设备的限制下工作,而同时提供最低限度的Java语言功能性,如图1-2所示。连接设备配置简表层Profile配置层Configuration虚拟机VirtualMachine本地操作系统有限连接设备配置图1-2J2ME的分层结构Java虚拟机(JVM)层:这一层是针对设备本地操作系统定制的Java虚拟机的实GeneratedbyFoxitPDFCreator©FoxitSoftware手机游戏开发技术详解·4·现,支持特定的J2ME配置,就像使用所有Java技术一样,J2ME的核心也在一种虚拟机中。配置(Configuration)层:面对的是大量各种不同的小型嵌入式设备,它们在外观和功能上均各不相同。J2ME将这些设备进行分类,将一些共性提取出来形成适合于某个范畴中设备可用的规范,称为“配置”。读者也可以将配置理解成为对硬件的描述,所以通过定义配置的方法就能够清楚地描述硬件功能。简表(Profiles)层:简表层定义了特定系列设备上可用的应用程序编程接口(API)的最小集。简表在一个特定的配置上面实现。应用程序是针对特定的简表编写的,因此可以移植到支持该简表的任何设备上。另外,一个设备可以同时支持多个简表。用户和开发人员看到最多的就是这一层。Java虚拟机是J2ME技术的核心,但是配置和简表提供特殊环境的类应用程序接口。配置是用于一组通用设备的最小的Java平台,而简表则为具体的设备家族或特别的应用程序提供更具体的功能。每个配置和简表处理一般或具体的消费产品。配置和简表规范是由多种多样的设备生产商和用户共同开发并建立的。前面已提到,配置是用于一组通用设备的最小的Java平台,常常归为一种横向的设备分组。相对来说,横向分组设备是那些共享相同的内存安排、通信带宽、能量需求以及用户功能的设备。一般认为,配置能够提供这众多的设备的所有需求。配置对于简表的实现非常重要,它定义了某一类设备所采用的Java虚拟机和Java类库的最小集合,这类设备代表了某一特定水平市场。在某种程度上,配置定义了这一范围内能应用于所有设备的Java平台功能和类库的“最小公分母”;另一方面,简表完善了配置,为某个具体的设备家族或某个具体的工业片段应用程序提供了更高的性能。换言之,简表为具体的纵向市场设备如移动电话提供更多的性能。这里的关键是:简表必须完善配置,没有配置和虚拟机提供核心类应用程序接口和运行期环境的话,简表也不会工作。通常,简表为一种给定的垂直分组设备提供用户界面、输入法、持久存储机制。这类简表被认为是被用来开发这些移动信息设备应用程序的完整的工具包。一般所见到最多的应用程序简表的例子有移动电话简表和个人数字助手(PDA)简表,其他简表为范围宽广的其他信息设备提供了非常特殊的功能或应用程序可移植性,这方面的例子就是提供远程方法调用(RMI)功能的简表和提供统一银行事务的简表。可以这样理解,Java虚拟机和构建于此虚拟机之上的配置规范,它们一起代表了某一种类设备的基本能力,而更进一步的设备分类上的区别是通过简表层提供的API实现的。为了满足更多新的应用的需要,简表可以通过扩充类库来强大自己的功能。1.1.3J2ME配置(Configuration)J2ME中的应用是针对某个特定简表所写的,而简表又是基于某个特定配置的扩展,因此配置的所有特征都自动包括进简表,然后被针对这个简表所写的应用所使用。GeneratedbyFoxitPDFCreator©FoxitSoftware概述·5·配置在3层体系结构中起到了承上启下的作用,它定义了针对在总存储空间、电源、网络连接等硬件功能有类似需求的某个水平范畴或者一组设备的Java平台。对配置的说明如下:规定了所支持的Java编程语言特征。规定了所支持的Java虚拟机特征。规定了所支持的基本Java类库及其API。说明:由于简表运行于特定配置之上,某种设备的配置规定了Java虚拟机特征和相应的API规范,简表的实现在符合规定的条件下,便可以安全地认为,简表的实现以及使用这个简表的应用都能在该设备上运行。为了避免过于杂乱,到目前为止,通过Java规范定义的只有两种配置,它们是:ConnectedLimitedDeviceConfiguration(有限连接设备配置,CLDC):这个配置致力于低端的消费类设备。CLDC目标设备典型的例子包括个人的、移动的、电池供电的、互联的信息设备,例如手机、双向寻呼机和PDA。这些设备的特点是无线连接、没有稳定的电源供应(通常使用电池)、设备资源极少。这些配置包括了一些新的类,并非来自J2SEAPI,而是特别为适应小型设备而设计的。ConnectedDeviceConfiguration(连接设备配置,CDC):这个配置致力于高端消费类产品。CDC目标设备的典型例子包括共享的、互联的信息设备,包括电视机顶盒、网络电话、车载计算设备、Internet电视和高端通信设备。这些设备的特点是高带宽的网络连接、电源稳定、设备资源比较受限。这个配置包含了比CLDC更加复杂的Java库和虚拟机特征的集合。如图1-3表示了CLDC、CDC和J2SE之间的关系。CLDC和CDC的大部分功能都来源于J2SE。从J2SE环境中派生的类必须完全与J2SE环境中的类相符合或者是其子集。因为CDC与CLDC针对的设备CPU处理能力和内存是不一样的,所以它们所使用的虚拟机和核心类库也不相同,CDC的核心类库也比CLDC的核心类库要大。另外,CLDC和CDC可以引入一些并非从J2SE得来的特征,这些是专门为适应小型设备而设计的。在J2ME环境中加入配置层的最重要理由是,跨越多个Java平台实现的Java核心类库总是跟Java虚拟机的实现紧密结合在一起。在配置规范中的微小变动就会导致Java虚拟机内部设计的大量重大修改,还可能对内存的需求也增加了很多。这种修改不但代价高昂,而且费时费力。少量的配置意味着很少几个虚拟机实现就能满足大量的简表和大量不同硬件类型设备的要求。这个J2ME所提供的经济上的尺度,对于在消费类和嵌入式设备工业中获得成功并带来效益是非常重要的。图1-4说明了两种配置的具体应用。J2ME没有定义满足这两种配置的标准化用户接口。Sun也承认现在的消费设备多种多样,而用户界面各不一样,所以定义一个可用于所有用户的界面是不可能的。J2ME中的用户界面定义在简表中。GeneratedbyFoxitPDFCreator©FoxitSoftware手机游戏开发技术详解·6·CLDCCDC图1-3J2SE、CDC和CLDC类库之间的关系图1-4CDC、CLDC的应用1.1.4K虚拟机(KVM)配置同样对其基础的Java虚拟机的特性做了规范。CDC与CLDC都有它们各自的优化虚拟机。CDC用的虚拟机是CVM,而CLDC用的是KVM,CVM比KVM包含更多的功能和支持更多的特性。KVM是一个专门为小型、资源受限设备所设计的紧凑的便携的Java虚拟机,是用于J2ME平台最小的虚拟机,并且是用于CLDC配置的虚拟机。J2ME应用程序并不一定非要使用KVM,J2ME技术可以使用任何虚拟机,不过至少应当有KVM这样的功能。KVM是完全从头开始编写的,其设计目标包括:虚拟机的大小和类库为60KB~80KB左右。内存占用为几十KB。在具有16位和32位处理器的设备上,有相当的性能。高度可移植和可扩展,特定于机器的代码总量很少。多线程和垃圾回收是独立于系统的。可以对虚拟机的组件进行配置,以适合于特定设备,从而增强了灵活性为什么称为KVM呢?K代表Kilo。这样命名是因为它的内存容量是用几十KB来衡量的。这典型地应用于数字蜂窝电话、传呼机、个人信息管理器和便携式终端等。说明:由于这一历史原因,造成了很多名词上的困扰。许多早期的文章把KVM与com.sun.kjava包合称为KVM,表示这一技术。而现在所说的KVM单指Sun的CLDC虚拟机参考实现。甚至还有人用KJava作为J2ME的代称,表示基于KVM的Java,这很容易和正式的J2ME标准以及早期的com.sun.kjava包相混淆。读者在看这类文章时需要注意文章的时间和背景,并采用严格的正式名称。KVM实现所需的最小总内存空间大约是128KB,包括虚拟机、最小的库和运行Java应用所需要的堆空间。一个更加典型的实现是需要总共256KB内存空间,其中32KB作为应用运行时的堆空间,60KB~80KB用于虚拟机本身,剩余的为类保留。GeneratedbyFoxitPDFCreator©FoxitSoftware
本文标题:J2ME手机游戏开发技术详解
链接地址:https://www.777doc.com/doc-6123764 .html