显然,CDC和CLDC只是对各类信息家电中最具共性的内容进行抽象,形成适合于某个范畴中设备可用的规范即配置(configuration)。所谓配置就是由一组核心类库和一个运行在特定类型设备上的虚拟机组成,它为应用程序提供了运行基础。配置是针对设备的软硬件环境严格定义的,但是不同应用场合的信息家电,事实上还是有很大的差异。所以,Sun公司的做法是在共同的CDC、CLDC配置上,再添加使用特定规格的配置文件,即将某一个行业或领域内设备的特性提取出来,形成相关的配置文件即简表(Profile)。简表是针对某一类设备所制定的规范和API,它们只在某些设备上可用。与配置相比,简表更多的是针对软件接口的定义,简表有必须实现的,也有可选的功能,因此,简表更灵活。不同的虚拟机、配置和简表之间的关系如图2-2所示。
2.2 MIDP应用程序体系结构 从上面的J2ME体系结构的介绍可知,简表是位于配置之上的一层,用来定义一个特定的“垂直”设备家族的特殊需求。CLDC虽然为那些资源受到限制、不足以支持整个J2SE虚拟机环境以及J2SE核心类库的设备提供了运行Java程序的基础,但是CLDC中并没有针对移动设备的用户界面、输入时间处理机制、持久性存储和网络连接等高度的设备具体性进行定义。因此,需要在CLDC所定义的抽象设备上再对各类设备进行细分,并为每类设备定义一个简表(Profile),以便实现相应的功能。MIDP是位于CLDC上层的简表,是目前J2ME平台中发展最成熟、最广为人知的简表。
图2-3显示了MIDP的应用程序体系结构,在这个硬件上方是KVM,再往上一层是CLDC层,这一层表示K虚拟机以及与之相联系的CLDC规范定义的库。这一层表示K虚拟机以及与之相联系的CLDC规范定义的库。这一层提供了底层Java功能,高级Java API可以构筑其上。CLDC之上有两类API:一是MIDP API,它是MIDP规范所定义的API集合;另一个是OEM-Specific API,它是原始设备生产商(OEM)可能提供的API。最上层展示了移动信息设备中支持的应用程序类型:MIDP应用程序,OEM-Specific程序,Native(本地)应用程序。 2.3 J2ME与S60的结合 2.3.1 J2ME的优势 使用J2ME的一个关键优点是,J2ME与所有支持Java的手机都是兼容的。所谓支持Java的设备,就是任何运行Java虚拟机的计算机或者设备。Ericsson,Motorola,Nokia,Panasonic以及Nextel等各大厂商都生产支持Java的设备。 Java的与平台无关性的一个非常关键的技术就是上文所提到的Java虚拟机(JVM),在智能手机上则是KVM。一般的高级程序语言要在不同的平台上运行,至少需要编译成不同的目标代码,而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码)就可以在多种平台上不加修改地执行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。 2.3.2 J2ME与输入法的游戏开发 上文提到,Symbian OS采用了多种平台,这样虽然满足了不同人群的应用需也给Symbian OS带来了一种限制性的发展障碍。各个平台之间第三方软件不兼容,给用户带来了一定的不便。 我们使用J2ME就打破了这种限制,只要智能手机支持Java,那么编写出来的软件就可以移植到任何手机上,给编码带来极大便利。虽然由于Java的特性可能会降低程序运行效率,但对于一般的应用已经足够。鉴于S60是目前Symbian智能手机中出货量最大的用户界面,所以我们选择了Symbian S60作为我们的开发平台。 2.3.3 J2ME配置 配置是指将基本运行时环境定义为一套核心类和一个运行在特定类型设备上的特定的JVM。目前,J2ME中有两种最主要的配置,分别是CLDC(Connected Limited Device Configuration)和CDC(Connected Device Configuration)。他们是根据设备的硬件性能进行区分的,包括处理器,内存容量等。 (1).CLDC 连接限制设备配置(Connected Limited Device Configuration)的官方定义是这样的:“亲便,覆盖区域最小的Java构建块,适合小型的有资源限制的设备。”所以CLDC是为运行在资源非常有限的设备商的Java ME应用程序制定的构架,致力于低端的消费类设备,典型的例子包括个人的,移动的,电池供电的,互联的信息设备像手机,双向传呼机和个人信息管理器等。 CLDC简要描述了高度受限的设备上每个J2ME执行所要求的一套最基本的库和Java虚拟机特征。CLDC主要面向那些网络连接速度慢,电能有限(电池供电),128KB-512KB内存的设备。非稳定内存中的内容是持久的,并且有写保护。CLDC中包含了简化版的java.lang,java.io,java.util和专门为Java ME加入的Java.microedition.io包。 (2).CDC 连接设备配置(Connected Device Configuration)应用在具有较大内存,特别是2MB以上的设备上,其内存可以是RAM,ROM或是Flash,致力于高端的消费类设备,典型例子包括共享的,互联的信息设备如电视机机顶盒,Internet电视和端的通信设备。CDC的虚拟机被称为CVM(compact VM)。CDC与CVM和Foundation Profile共同定义了完整的J2ME环境。 图2-4显示了CDC,CLDC和J2SE之间的关系。由图可见,CLDC是CDC的一个子集,CDC和CLDC都删减了J2SE的部分内容并对J2SE做了必要的扩充。
图2-4 J2SE,CDC与CLDC之间的关系 CLDC类库一部分来自J2SE,这部分类库是经过裁剪的,去除了不必要的功能。其专有类库则主要是“通用连接框架(GCF)”,为CLDC提供网络连接功能。 CDC类库则是CLDC的超集,因此为CLDC开发的应用程序可以移植到CDC平台。 2.4 eclipse简介 Eclipse是一种可扩展的开放源代码IDE。2001年11月,IBM公司捐出价值4,000万美元的源代码组建了Eclipse联盟,并由该联盟负责这种工具的后续开发。集成开发环境(IDE)经常将其应用范围限定在“开发、构建和调试”的周期之中。为了帮助集成开发环境(IDE)克服目前的局限性,业界厂商合作创建了Eclipse平台。Eclipse允许在同一IDE中集成来自不同供应商的工具,并实现了工具之间的互操作性,从而显著改变了项目工作流程,使开发者可以专注在实际的嵌入式目标上。 Eclipse框架的这种灵活性来源于其扩展点。它们是在XML中定义的已知接口,并充当插件的耦合点。扩展点的范围包括从用在常规表述过滤器中的简单字符串,到一个Java类的描述。任何Eclipse插件定义的扩展点都能够被其它插件使用,反之,任何Eclipse插件也可以遵从其它插件定义的扩展点。除了解由扩展点定义的接口外,插件不知道它们通过扩展点提供的服务将如何被使用。 利用Eclipse,我们可以将高级设计(也许是采用UML)与低级开发工具(如应用调试器等)结合在一起。如果这些互相补充的独立工具采用Eclipse扩展点彼此连接,那么当我们用调试器逐一检查应用时,UML对话框可以突出显示我们正在关注的器件。事实上,由于Eclipse并不了解开发语言,所以无论Java语言调试器、C/C++调试器还是汇编调试器都是有效的,并可以在相同的框架内同时瞄准不同的进程或节点。 Eclipse的最大特点是它能接受由Java开发者自己编写的开放源代码插件,这类似于微软公司的Visual Studio和Sun微系统公司的NetBeans平台。Eclipse为工具开发商提供了更好的灵活性,使他们能更好地控制自己的软件技术。eclipse是一款非常受欢迎的java开发工具,使国内的用户越来越多,实际上使用它的java开发人员是最多的。缺点就是较复杂,对初学者来说,理解起来比较困难。 针对eclipse的插件目前已有上千种,eclipse的核心就是插件扩展机制,所谓一切皆为插件。我们也可以用eclipse开发出自己的eclipse插件。 Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——Eclipse Platform、JDT、CDT和PDE.JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。 Eclipse SDK(软件开发者包)是Eclipse Platform、JDT和PDE所生产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到Eclipse Platform中的工具。Eclipse SDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。Eclipse项目生产的软件以 CPL发布,第三方组件有各自自身的许可协议。 2.5 本章小结 本章简要介绍了本此设计采用的——J2ME技术,分析了J2ME的总体结构,重点介绍了Java虚拟机,J2ME的配置和简表,并归纳了J2ME程序开发的一般流程,另外将J2ME和Java 2的其它版本进行了对比,等等。 第三章 智能终端输入法的总体设计 3.1 概述 智能终端输入法的总体设计思想是:通过接口从系统获取用户的按键,然后根据当前的输入状态调用相应的转换引擎,从字库中搜索相应的字词。然后把输入的按键和获取的字词发送到用户界面显示出来。 汉字编码的设计 在拼音输入法的设计中,汉字编码系统的设计要做到编码简单、搜索快速. 下面对从搜索效果、字库的压缩以及设计的复杂度2个方面,对2种常规方案进行比较. 3.2.1 方案1 方案1很直观,直接对每一个汉字进行编码,编码结构分为编码、地址2个部分,如图3-1所示. 其编码形式是按每一汉字的按键顺序进行编码. 为了便于搜索,此方案的编码采用定码长,编码中的每一个数字必须至少4个bit 存放,所以整个编码大小为3个byte. 地址段用于存放汉字在字库中的地址,如果字库为5 000个汉字,则地址编码需要13 bit,实际占用2 byte,此时编码的字库大小为:(3+2) ×5000 =25 KB。
图3-1 方案1的编码结构
可见,方案1 编码方便简单,但是占用空间比较大,效率不高。 3.2.2 方案2 方案2 在方案1 的基础上作了一些改进。由于有些汉字的拼音相同,即汉字的拼音编码有重码,因此不需要对每一个汉字进行编码,从而可节省存储空间。改进后的编码结构如图3-2所示。
图3-2 方案2的编码结构 方案2 没有对每一个汉字进行编码,而是将所有发音相同即编码相同的汉字编为1 组。 在编码结构上相对于方案1 增加了1个长度字段,用于表示同1 组汉字的多少,其长度为7 bit(这已经足够大了)。 但是其编码字段的编码方式仍然和方案1 相同。仍假设对5000 汉字进行编码(仍然为3byte),地址字段也一样(13 bit)。 并假设所有汉字的编码有500个,那么该编码方案所占空间大小为:(3+2+1)×500=3KB。由上述分析可知,该方案所占空间大为减少。但是此方案缺少搜索信息,搜索效率低。同时,采用定码长的方法,很多汉字的编码很短就可以。此方案的编码结构不利于提高搜索效率。 3.3 系统总体框架的描述 系统的总体框架图如图3-3所示。
图3-3 系统总体框架图 输入模块可以说是1个接口,它一方面要与用户相联系,时时接收用户的输入。另一方面,输入模块必须为后面的搜索做准备,起到1个预处理的作用。比如当输入“2”键时,输入模块将其转化为“abc”3个字母,并存储于数组中,以供搜索时使用。由于存在同一编码不同发音的汉字的现象,这就需要一对上下按钮来让用户选择何种发音。同时由于同一拼音的汉字可能很多,在一页中无法显示,因此需要一对左右按键,以供用户翻页查找。为了让后面模块完成其功能,输入模块必须记录用户按下这2 对按键的次数。 检索模块是整个系统的核心模块。当用户输入时,检索模块根据输入模块提供的字母进行查找。整个编码体系称之为索引,而检索模块的搜索也在索引中进行。为了缩小搜索范围,字库内的汉字根据汉字拼音第一个字母被归为8 组。如“abc”,“def”,“ghi”等。 汉字提取模块的功能主要是根据检索模块提供的结果, 在字库中提取汉字以供显示。 检索模块检索所得到的结果是当前输入字母在索引表中的地址,需要根据编码结构中的地址字段来找到对应的地址。显示模块也就是输出模块。 汉语拼音输入时需要显示的内容有3 项:拼音、同一拼音的汉字列表以及正在编辑的文本. 在实际的手机系统中,汉字是经字模转换程序转换后,以16×16 点阵形式存放的,所以本文最终在3G终端实现时,是液晶片通过点阵形式显示。 3.4 智能终端汉语拼音输入法系统的框架设计 刚进入输入法时处于初始化状态,当用户输入一个输入码后,则切换到输入状态,并向输入法管理模块发送查找请求,在获得回复后将查找结果显示给用户。当用户删除输入码至长度为零时,则返回到初始化状态。另外在初始化状态下,用户还可以通过标点符号键调出符号对话框,从而输入相应的标点。本次输入法系统由下列几个部分组成:文字库:包括和用户输入的语言相关的内容。用户界面:包括状态窗口、候选窗口、指南窗口。输入法控制模块:负责在用户界面和文字库之间通信。系统的详细模块关系如图3-4所示。
图3-4 详细系统模块关系图 首页 上一页 1 2 3 4 5 下一页 尾页 2/5/5 相关论文
首页 上一页 1 2 3 4 5 下一页 尾页 2/5/5