【Java开源代码栏目提醒】:网学会员鉴于大家对Java开源代码十分关注,论文会员在此为大家搜集整理了“JSR135 - 硕士论文”一文,供大家参考学习
复旦大学 硕士学位
论文 JSR135 级别:硕士专业:
计算机应用技术 指导教师:高传善 20070420
论文独创性声明 本
论文是我个人在导师指导下进行的研究工作及取得的研究成果。
论文中除了特别加以标注和致谢的地方外,不包含其他人或其它机构已经发表或撰写过的研究成果。
其他同志对本研究的启发和所做的贡献均已在
论文中作了明确的声明并表示了谢意。
作者签名:
论文使用授权声明 本人完全了解复旦大学有关保留、使用学位
论文的规定,即:学校有权保留送交
论文的复印件,允许
论文被查阅和借阅;学校可以公布
论文的全部或部分内容,可以采用影印、缩印或其它复制手段保存
论文。
保密的
论文在解密后遵守此规定。
作者签名 日期:幽:且13 摘要 摘要 J2ME是Java平台的三个核心版本之一,它为运行在诸如手机、PDA等资源受限的消费产品上的应用程序提供了健壮而灵活的运行环境,是当前手持设备的首选平台之一。
J2ME的架构由“配簧”(Configuration)、“描述”(Profile)和 “可选包”(Optional Packages)组成.开发者可以对其进行选择从而构建成一个完整的Java运行环境。
JSRl35是J2ME平台上一个重要的可选包,提供了多媒体的回放和控制功能,其接口集MMAPI(Mobfie Media API)为Java应用在移动设备上运行使用多媒体提供了一套简洁、规范及可扩充的API。
JSRl35的开发使得手机和PDA等小型移动设备上多媒体应用和服务的普及成为可能,JSRl35也渐渐成为这类设备上的标准配置。
ORL.即Open Runtime Libs.是一个严格遵循Sun公司J2ME框架规范而开发出的高性能Java类库。
它的开发基于一个称为XORP的J2ME虚拟机,该虚拟机是在原先支持J2SE的
开源项目ORP(Open Runtime Platform)的基础上改造的。
XORP/ORL系统构成了Intel公司基金项目“J2ME Class Libs with SmallFootprint,Low Power and High Performance on XScale Processor”的核心组成部分。
可选包JSRl35则处于ORL开发的第三个阶段,本文的内容即是在该阶段的设计开发基础上完成的。
在本文中,我们提出了XORP/ORL系统中JSRl35的一种跨平台设计方案及其实现机制,特别地,在Windows平台上我们还给出了可行并且高效的实现。
在该方案开发过程的各个阶段,包括目标定位、架构设计、功能实现、平台移植等等,都做了大量细致的工作。
在整个的过程中,我们一直遵守正确性、统一性、简洁性、可扩展性和Clean Room的原则。
总体来看,JSRl35兼具专门性、原创性、通用性和可移植性。
首先,是JSRl35的专门性。
与通用目的的多媒体处理包不同,JSR.135是专门在J2ME框架中设计开发的多媒体处理模块。
作为整个XORP/ORL系统的一部分,JSRl35子系统除了必须完全遵循Sun公司的规范外.还必须满足各种J2ME规范对虚拟机的要求.例如,JSRl35的虚拟机部分的可执行模块就必须足够的小。
其次.是JSRl35的
原创性。
与ORL的其他部分如CLDC和MIDP相同,JSRl35也是白手起家的。
在设计过程中,为了使JSRl35能够更加 摘要适合在手持环境下运行,我们创造性地引入了一些技术和方法,比如在虚拟机层我们很好地利用了Intel的IPP(Integrated Performance Primitives)开发包。
其三.是JSRl35的通用性和可移植性,这两者关系密切。
尽管JSRl35的最初定位是以PocketPC作为目标平台的,但在设计实现的过程中,我们借鉴了以往软件架构设计中的成熟经验,考虑进了通用性和移植性的因素,最终采用了分层次的架构模型,并极大地利用了支持多平台的多媒体开发包IPP(IntelIntegrated Performance Primitives)。
这些方法能够将对底层硬件设备的依赖性最小化和局部化,从而使JSRl35具有最大的跨平台通用性,同时大大方便了之后的移植
工作。
关键字 JSRl35,MMAPI,J2ME,CLDC,MIDP,Java虚拟机,XORP。
ORL,IPP,Windows CE,Pocket PC,waveOut,midiOut,DirectShow 中图分类号TP3lI.1:程序设计,TP319:专用应用软件 摘要 Abstract J2ME is one of the three major versions ofJava PlatforillS.It provides robust andflexible runtime environment for applications running on raSOUOe limited devices such∞cellphones and PDAs.So J2ME is the platform of choice for today’S handhelddevices.The J2ME architecture consists of a variety of configurations,profiles,andoptional packages that implementers and developers can choose from,and combine toconstruct a complete Java mntime environment.Within J2ME,JSRl35 is animportant optional package that suppoas playback and control of multimedia.MMAPI porvides a concise.standard and extensible set of APis for accessingmultimedia on mobile devices.The development of JSRl35 makes possible thepopularization of applications and services of multimedia on handheld devices.Therefom,JSRI 35 is being one standard configuration on these devices. ORL(Open Runtime Libs)is a high-performance Java class libs to strictly meetSun’S J2ME specifications.The development ofORL is based on XORP,a J2ME VM(virtual machine)transformed from an open source J2SE VM named ORP(OpenRuntime Platform).Both ORL and XORP批essential parts of a projeet called‘‘J2ME Class Libs with Small Footprint,Low Power and Hi【gh Performance onXScale Processor,’funded by Intel Corp.JSRl 35,髂an important optional package.isin the third phase of ORL’S development.This paper is based on its design andimplementation. In this paper,we present a cross·platform design and implementation of JSRl35in XORP/ORL system,and particularly,we introduce its feasible andhigh-performance implementation on Windows platforms.We have done massive andintensive work in each phase of this project,including target orientation,architecturedesign,implementaion and system porting.We always stick to principles ofcoFrcctness,unity,conciseness,extensibility and Clean Room.In general,JSRl35owns the features ofspeeiality,originality,Generality and portability. First,JSRl35 is a specialized multimedia package.Unlike the general purposedmultimedia package.JSRl35 is designed for multimedia processing module withinJ2ME architecture.As part of XORP/ORL system.JSRI 35 has to meet therequirements from all the specifications for J2ME VM,besides Sun。
S specification for ,its Java part.For example,the size of the executable module of JSRl35’S VM partshould be very small. Second。
JSRl35 is a multimedia solution with originality in XORP/ORL system.Just like other parts of ORL.such豁CLDC and MIDP,JSRI 35 is also designed andimplemented from scratch.We have incorporated many different features into JSRl35to make it more suitable for running in handheld environment.For example,we makeplausible USe ofIntel IPP(Integrated Performance Primitives)in JSRl35’S VM part. Third,JSRI 35 is a multimedia solution with generality and portability.Althoughthe original target platform of JSRl35 was Pocket PC,JSRl35 is still designed withthe consideration of generality and portability.Referring to successful experiencefrom privious design of software architecture.we adapt a multi-layered module inJSRI 35 tO isolam its dependency on hardware,which proves to be a wisemethodology later in the porting stage,and finally grants JSRl35 the largestcross-platform generality and portability. Keyword JSRl35,MMAPI,J2M【E,CLDC,MIDP,Java VirtuaI Machine,XORP,ORL,IPP,Windows CE,Pocket PC,waveout,midiOut。
DireetShow Chinese Library ClassificationTP311.1:Program Designingt TP319:CustomizedApplication Sotiware 6 摘要 引言项目背景 Inte〔公司的基金项目“J2ME Class Libs witit Small Footprint.Low Power andHi曲Performance on XScale Processor’’,是一个以XORP作为Java虚拟机平台。
在其上开发高性能J2ME(Java Platfom,Micro Edition)类库ORL(Open RuntimeLib)的项目,其目标平台包括Win32、Windows CE(winCE)、Pocket PC(PPC)和Linux。
JSRl35是J2ME类库的一个重要组成部分,提供给用户基于时域多媒体播放的众多功能。
ORL作为符合J2ME规范要求的类库,实现了JSRl35规范,同时.XORP也为ORL中JSRl35功能部分提供了全面和高效的支持,使得多媒体的播放和控制能够达到高效、低耗的设计目标。
J2ME框架与JSRl35 J2ME是Java的一个子集,是Sun公司针对硬件处理能力相对较弱、电源功耗也有限的移动通讯设备、嵌入式设备或消费性电器所推出的Java平台,其上的规范层从下往上依次为:虚拟机层(VM)、配置层(configuration)、描述层 (profile)和可选包层(optional packages)。
对于内存、处理能力、电池寿命、显示屏大小和网络带宽等资源高度受限的小型移动设备.如移动电话和小型PDA等,Sun公司对这些层次所做的规范分别为千字节虚拟机KVM、CLDC(Connected Limited Device Configuration)、MIDP(Mobile Information DeviceProfile)和多个optional packages。
CLDC定义了一个Java虚拟机的特性与Java类库的最小子集,提供了开发人员一个最基础最核心的Java平台。
MIDP提供了包括用户界面、
网络连接、永久存储和应用程序生命周期管理等在内的功能。
CLDC和MIDP合在一起提供了一个标准的运行时环境。
Optional packages是一组供选择实现的Java包,如Security相关的JSRl77,3D Graphics相关的JSRl84和多媒体相关的JSRl35等。
JSRl35(MMAPI 1.1)基于CLDCl.1和MIDP2.0 (JSR 118),提供给用户基于时域多媒体播放的众多功能。
摘璺 图A-I—J2ME的体系架构 JSRl35的开发使得手机和PDA等小型移动设备上多媒体应用和服务的普及成为可能。
接口集MMAPI(Mobile Media API)在JSRl35中被定义,为Java应用在移动设备上运行使用多媒体提供了一套简洁、规范及可扩充的API。
它依据小型移动终端的各种特性来设计,满足了处理能力低、内存容量小、屏幕小、无线连接带宽窄和连接速度慢等小尺寸要求,允许一些简单的基于时域多媒体的访问和控制,主要支持的媒体格式为Wave、Mp3、Mpe94、Midi和Tone等,可用的服务主要有图像音频视频的交换、交互式的在线游戏、拍照、流媒体播放、音频视频会议以及各种新型应用与服务。
XORP与ORL 开放式运行平台ORP(Open Runtime Platform),是由Intel公司开发的一个开放源码的研究项目。
它是一个高性能的可控制运行环境软件,是用来研究垃圾收集和动态编译技术的开放资源研究平台。
它支持执行类型安全字节码,能够运行Java程序,我们可以将其视作一种Java虚拟机的实现。
在原ORP的基础上,针对移动手持设备这一平台的特殊性,我们做了功能模块上的替换和增减,从而获得了一个符合J2ME规范标准的虚拟机XORP,作为开发J2ME类库的基本
软件环境。
ORE,就是我们在XORP之上,严格遵循Sun公司J2ME框架规范,开发出的高性能Java类库。
开发过程中我们严格遵循了Clean Room的原则。
整个XORP/ORL系统与前文介绍的J2ME框架的关系如图A.2所示。
摘要 Op衄alP¨hge。
F习F习 ■■■■■■● ORL MJDP2_o ■■■■■■I CU】C1.I Java盛掇帆 XORP ■ ■ ■●- 本地摊行系缝 PPC,SmarIPho孵,Emb‘=ddcd LinUX 奠:故踺备 PDAJSmart Pho脾 ; ●■ ■ ■I 幽A-2:xORP/ORL系统对应于J2ME框架的关系 0RL的开发过程分为三个阶段。
第一阶段是针对J2ME框架中的CLDC“配置”,开发相应的Java类库;第二阶段是在CLDC的基础上,开发符合MIDP“描述”规范的Java类库;第三阶段则是在CLDC/MIDP的基础上,迸一步开发其他可选包功能,如JSRl35和JSRl84。
本文的内容是在第三阶段的设计开发基础上完成的。
本文的目的和应用意义 J2ME技术在1999年的JavaOneDeveloperConference大会上正式推出,它将Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用
程序。
随着手机和PDA等嵌入式设备的日益普及,J2ME技术也得到了广泛的应用和全面的发展,其功能已经从简单的拨打电话、发送短信扩展到3D游戏、多媒体的播放和控制等。
目前,带Mp3及摄像头的手机为主流。
份额能够达到40%~50%以上。
带Mp3及多媒体MP4播放功能,和高像素照相及摄像功能的音乐拍照手机,正在成为当前的标准配置。
在多媒体播放和控制领域,在当前世面上存在着大量的不同媒体格式(如Wave,Midi,Tone,Mp3,Mpe94等),并且还有许多新的媒体格式即将被建立。
为了存储和传输这些不同的媒体格式,还存在着了许多不同格式的存储设备和传输协议,例如大家常使用的媒体存储设备(如CD、VCD以及DVD),有线传输协议(如UDP、HrrP),无线传输协议(如WAP)。
移动设备也是种类繁多,有仅支持单音播放的手机,也有高端的支持音频和视频的PDA。
为了 摘要使这些移动装置能够访问和控制这些不同格式的媒体数据,必需为其设计一个规范化的、强大的和可扩充的应用接121。
MMAPI(JSRl35)就提供了一套较为规范的播放和录制音频或视频接121,用来表现和获得以时间为基础的媒体。
并且它被设计成灵活的和平台无关的,它没有对媒体格式、协议或者在未来不同设备支持的特征作任何假设。
MMAPI已经在移动设备上使用,例如,Nokia3650就包含了一个实现。
XORP/ORL作为一个J2ME解决方案,我们也希望其能实现JSRl35的诸多功能。
在方面,有以下几点必须注意的因素: 其一:JSRl35作为J2ME的可选包,其定义的类和接口都是平台无关的。
所以,覆盖了JSRl35的XORP/ORL系统。
也应该是一种跨平台的
设计方案,即用户在ORL上编写J2ME应用程序的时候,不应该涉及平台相关的东西,ORL本身也不包含平台逻辑;平台逻辑在XORP中得到实现。
其二:移动手持设备的环境非常多样,并没有桌面Pc那样统一的硬件和软件平台,目前应用在手机上的操作系统主要有Pocket PC、SmartPhone、Symbian和Linux等。
所以,作为J2ME解决
方案一部分的XORP,必须在不同的平台上支持多媒体的回放和控制,同时,我们希望XORP的结构和
代码也能够得到最大程度的重用。
其三:目前已经有一些专门进行多媒体处理的开发包,如微软公司提供的支持Win32平台(Win9X,WinME,WinNT,Win2K,WinXP)和WinCE平台的DirectShow·Intel公司提供的支持Wird2平台、WinCE平台、Pocket PC平台、Linux平台和SmartpPhone平台的IPP,性能都很好。
我们可以在XORP/ORL系统中多多利用这些比较成熟的产品。
综合考虑了上述几个因素,本文作者和项目组成员总结出以下的设计目标:扩充XORP/ORL系统以支持JSRl35,实现MMAPI的各种调用逻辑:覆盖了JSRl35的XORP/ORL是一个跨平台的系统,Java层平台无关,VM层随底下操作
系统支持的不同有不同的实现,同时在平台移植时有尽可能小的改动;尽可能利用市面上比较成熟的用于多媒体处理的开发包;JSRl35的实现能有高速、低耗等较优的性能。
本文作者作为项目组成员,负责JSRl35跨平台方案的设计和开发,着重研究Windows系列操作系统上的设计和开发。
在J2ME体系结构方面,主要负责ORL,以及ORL与XORP之间粘合逻辑的设计和开发;在多媒体类型方面,主要负责设计和开发Wave格式及Mpe94格式多媒体文件的同放与控制。
lO 摘要本文的内容和组织结构 本文首先介绍了J2ME的发展现状,以及可选包JSRl35的基本内容,该可选包为Java应用在移动设备行运行使用多媒体提供了一套简洁的、可扩充的和规范的API。
在分析了一些手持设备上多媒体处理的市场需求和应用意义以后,阐述了在J2ME框架中开发JSRl35的必要性、可行性和应用前景,并大致提出了方面的一些注意点。
接着,本文概要地介绍了JSRl35的基本特性和体系结构。
在JSRl35中,多媒体的处理被划分为协议处理和内容处理两个部分,两个高层对象DataSource和Player分别封装了这两部分。
我们通过Manager生成Player,同时能用一个或多个Controls来调整player的行为。
Player可是说是整个JSRI 35 API的核心部分,它控制多媒体的播放,提供基本的同步机制,管理着整个媒体播放器的生命过程。
本文的重点之一,在于文章从架构设计入手对XORP/ORL系统中JSRl35的跨平台设计作了全面的介绍。
在我们的设计中.系统被划分成Java层和Native层两个层次。
Java层即我们的JSRl35类库Orl,它又分成上下两层:上层实现MMAPI的各种调用逻辑:下层将所有和Native层交互的部分封装起来。
用c/c十+实现的Native层即我们使用的虚拟机XORP,其包含的JSRl35 Native部分也分为上下两层:上层是平台无关的,主要目的是为不同平台提供统一的接口,方便移植和最大程度的
代码重用;下层则与平台相关,包含了与底下操作系统的粘合逻辑,随底下操作系统支持的不同(Win32,WinCE,Pocket PC,Smartphone或Linux等)有不同的实现,在这一层中我们还很好地利用了Intel公司提供的IPP (Integrated Performance Primitives)开发包。
可见,整个设计具有良好的扩展性和移植性。
在Win32和WinCE平台上。
我们还将专门用来播放数字音讯的应用程序接口waveOut和midiOut纳入上述设计中。
在Windows系列操作系统上,我们还有一种设计方案是充分利用DirectShow的特性和功能来实现JSRl35。
基于DireetShow的系统架构在Windows平台上执行效率很高.而在跨平台性方面该设计则劣于前面基于IPP的设计,所以最终被抛弃。
本文的又一重点,在于文章介绍了前面提出的JSRl35跨平台设计方案的实现机制,并详细阐述了在Windows系列操作系统上,各媒体格式回放和控制的实现。
在Win32和WinCE平台上,我们除了使用IPP开发包以外,还利用了专门用来播放数字音讯的应用程序接口waveOut和midiOut.Wave格式的多媒体 摘要文件,直接在Native层的WavePlayer中用Windows waveOut API播放;Mp3格式的多媒体文件,通过IPP解码器转换为Wave格式后,再用WaveOutAPI播放;Mpe94格式的多媒体文件.通过IPP解码器抓出特定信息和待播放的帧,然后用MIDP2.0 Ul来绘制帧;midi格式的多媒体文件,需要Native层的MidiPlayer借助辅助类MidiControl,MidiControl重新组织和封装了Windows midiOut API。
经过测试,JSRl35规范提出的多媒体回放和控制功能均得到了基本的实现。
这些实现虽然基于Windows系列操作系统.但大部分对其它平台上的实现也具有普遍的参考意义。
然后.本文简单介绍了JSRl35的移植与测试。
JSRl35的移植工作只涉及到Native部分,具体实现时在
代码中采用宏作为开关来划分编译
代码块。
为了方便J2ME类库的测试,本文的作者还自行研发了一种方法覆盖测试工具,可以统计分析J2ME应用程序运行时xORL/oRL系统中的方法调用情况。
极大地提高了测试的效率和可视性。
晟后,本文总结JSRl35各个方面的特点并对其进一步扩充和应用作了展望。
本文的结构如下;第一章,JSRl35介绍。
第二章,JSRl35的设计。
第三章.JSRl35的实现。
第四章。
SRl35的移植与测试。
第五章,总结与展望。
第一章JSRl35介绍 在MIDPI.0(JSR 37)中并没有提供对声音和视频处理的支持,因此有些厂商就独立开发了API来弥补这样的不足。
在MIDP2.0(JSR l lS)中提供了对多媒体处理的支持.但是它只是MMAPI(JSRl35)的一个子集。
MMAPI为多媒体开发提供了一个强大、可扩充以及简单的接口,用来播放和录制声频(audio)或视频(video)。
本章将对MMAPI做整体介绍。
1.1 MMAPI的特性 MMAPI主要有以下特性:1.支持单音,重复播放和记录基于时间的多媒体文件。
2.以CLDC为目标。
虽然如此,MMAPI在CLDC和CDC软件上都可以运行 得很好。
事实上,MMAPI可以作为轻量选择用J2SE实现到
java media Framework。
3.设计小巧,目的为了节省资源。
4.MMAPI并非针对任何内容类型和协议。
5.可以只实现MMAPI的子集。
MIDP 2.0规范就包括了一个MMAPI的子集, 它向上兼容所有API。
6.扩展性强,MMAPI在不修改原来功能的情况下可以添加新的功能。
7.选择性实现,实现者可以只实现部分功能。
在我们的项目中,我们实现了 Wave、Mp3、Mpe酣和Midi的播放和简单控制,一些可选的高级功能如语 音捕获、录音和摄像等,我们暂时没有实现。
1.2 MMAPI的体系结构 在JSRl35中。
多媒体的处理被划分为两个部分:协议处理和内容处理。
前者是指如何从源读取数据并送到多媒体处理系统;后者包括分析和解码多媒体数据,并将数据送给扬声器和显示器等输出设备。
两个高层对象Datasou∞e和Player在MMAPI中担任了重要角色,分别封装了协议处理和内容处理这两部分。
下面这张图表明了这些类问的协作关系: 图I-I·MMAPl的高层协作图1.一个Player知道如何去解释媒体数据。
举个例子,某种类型的Player知道如 何根据Mp3媒体数据产生声音,另外一个Player知道如何播放一段 QuickTime的movie。
javax.microedition.media.Player接121的实现即是这里说 的Player.2.一个DataSouree知道如何从它的原始位置读取媒体数据给player。
媒体数据 可以被保存在不同的位置,从远程服务器到资源文件或者RMS数据库。
媒 体数据可以从原始位置通过HTrP,像RTP一样的流式传输协议,或者其他 机制传输到player。
javax.microcdition.media.protoc01.DataSouree是MMAPI 中所有DataSouree类的抽象父类。
3.你能用一个或多个Controls来调整Player的行为。
你可以在Player从媒体转 换数据的时候从一个Player实例取得并且使用Controls。
比如,你能用一个 VolumeControl来调节一个采样音频的声音大小。
Controls是 javax.mieroedition.media.Control接口的实现。
详细的Control子接口在 javax.microedition.media.control包中,包括FramePositioningControl、 GUIControl、MetaDataControl、MlDIControl、PitchControl、RateControl、 RecordControl、StopTimeControl、TempoControl、ToneControl、VideoControl 和VolumeControl等。
4.最后,Manager把每一个部件捆绑起来.并且为API提供了切入点。
javax.microedition.media.Manager类包含了得到Player或DataSouree的静态 方法。
1.2.1创建Player实例 摘要 通过如下三种方法我们得到一个Player的实例 1)public static Player createPlayer(String IocatoO throws IOException, MediaException 2)public static Player createPlayer(DataSource Source)throws IOException, MediaException 3)public static Player createPlayer(InputStream stream,String type)throws IOException,MediaExeeption 圈1-2,Manager生成Player的三种方式 得到一个Player最简单的方法是使用第一个createPlayer方法,仅仅传递一个代表媒体数据位置的字符串就可以了。
举个例子,你可以指定一个网站上的音频文件:Player P=Manager.createPlayer(”http://webserver/music.Mp3”); 其他createPlayer方法允许你从一个DamSource或一个InputStream流创建Player。
一个InputStream是个最简单的对象,仅仅是一个字节流;而DataSource更为高级,是一个选择协议去访问媒体数据的对象。
传递一个位置字符串是个最好的捷径,MMAPI会判断用何种协议并为player取得媒体数据。
1.2.2 Player的行为 Player可是说是整个JSRl35 API的核心部分,它控制多媒体的播放,提供基本的同步机制,管理着整个媒体播放器的生命过程。
Player接收并解析多媒体数据,送交外设播放。
Player的状态转移图如下: d‘血oc“c0 desl〕ocate0 St01)O .