关于MTK验证J2ME问题解决是本文要介绍的内容,主要是来了解并学习MTK在J2ME中的应用,具体内容的详解来看本文。
KVM(kilo Virtual Machine)即J2ME移植到MTK的称呼。
J2ME (Java 2 Micro Edition) 微缩版,用于消费类电子产品的软件开发。J2ME体系结构包括简表层、配置层和Java虚拟机是J2ME的组成部分。
CLDC包括K虚拟机(KVM)和一组核心类库,主要是针对用户接口简单、内存较小、网络运行时连时断以及带宽较窄的小型无线设备。其中KVM是JVM的一个实现,特别用于移动电话、PDA等设备
Jar - Java Archive, Java 归档文件,程序体文件。
Jad是jar的描述文件,用来识别该JAVA程序是否匹配该型号手机以及手机读取时确定游戏容量,这就是为什么有时候有的游戏不能下载,我们可以通过更改.JAD文件来使其可以下载的原因)
MTK主要功能如下:
1、任务管理。系统任务采用静态创建方式,静态配置任务优先级、栈大小、任务全局唯一ID等;不提供动态创建Task的方式;任务内部以及任务之间的通信通过内部事件队列和外部事件队列完成。
2、内存管理。平台不提供动态分配内存的方式;应用程序需要使用动态分配内存时,可以采用以下几种方式:与系统其他模块共享内存,典型的是使用MED模块的内存;定义一个静态数组,交给系统adm托管,然后调用kal_adm_alloc、kal_adm_free等内存操作函数实现动态内存分配;定义一个静态数组,应用自己实现基于此数组的分配和管理,也就是实现自己的内存管理模块。
3、事件机制。平台事件机制采用“注册一回调”机制,把需要处理的各个按键、触摸屏等通过系统函数注册,当有事件发生时系统调用所注册的监听者。
4、UI。系统MMI层提供了丰富的UI元素,如各种消息框、列表、图标等。
平台框架
在MTK平台上实现J2ME运行环境,需要实现的功能如下:
1、应用程序管理。Java拥有丰富的应用程序,平台需要管理这些应用程序,因此要实现应用程序管理系统。应用程序管理系统功能包括程序的安装、删除、运行、下载等。
2、虚拟机的实现平台。嵌入式Java虚拟机的实现平台有多种方式。它可以直接嵌入到裸机上,也可以加载于其他嵌入式操作系统之上,成为一台抽象的计算机。它的平台无关性给它带来了巨大的发展前景。经过研究,在MTK平台上,采用SUN公司公布的KVM作为核心,结合虚拟机所需要实现的功能和MTK平台,设计和实现移植接口,最后在MTK平台上运行KVM,在KVM之上运行Java应用程序。
移植接口层
移植接口层包含以下部分:
(1)文件系统部分,对文件操作,实现建立、打开、关闭、读、写等功能。KVM在运行的时候须要通过这部分接口运用本地文件,如打开jar、jad文件等。
(2)网络部分,提供Socket访问功能。
(3)外部事件,获取用户输入,包括按键输入和触摸屏输入。
(4)图形显示部分,负责KVM图形及文字显示。
(5)系统时间部分,提供给KVM精确的系统时间。
(6)输入法,Java程序运行时可能要求用户输入,此接口实现调用系统输入法功能。
(7)其他接口,内存访问、交互性事件通知以及扩充的JSR实现所须要的接口,如JSRl20、JSRl35等。
J2me 应用启动流程
应用程序管理系统管理整个Java运行环境,实现如下功能:
1、显示应用程序列表,展示给用户当前手机系统的所有可用的应用程序。
2、应用管理功能选择菜单,菜单应包括两种类型,分别是程序已经安装好的菜单项和程序还未下载,只有Jad文件在本地,需要向服务器请求下载应用安装后才能运行的菜单项。
3、下载应用,与服务器通信下载用户选择的应用。
4、根据UI和engine的划分,可以把应用程序管理系统分为应用程序管理界面和应用管理系统核心:应用程序管理界面提供给用户交互式界面,包括管理系统主界面、程序下载界面、程序运行界面、管理功能菜单以及各级子界面;应用管理系统核心由实现功能的一系列API组成,提供给上层界面调用,实现程序的下载、安装、删除、运行等功能。
Java虚拟机移植的实现
在实现内存管理模块时,由于平台不提供动态分配内存方式,而虚拟机须要一块比较大的内存,不能从MED模块分配,且根据须要会对内存执行压缩整理,不适合采用系统托管方式。所以,采用虚拟机自己管理内存的方式,实现内存管理模块。
KVM就像一个软处理器一样控制解释Java字节码和它的执行状况,每一个建立的Java线程在Java堆中都会有各自的线程执行栈,并且由KVM运行来调度管理。为了使KVM能尽量正确地划分时间片,须要给一个时间标准作为KVM的内部时钟,由时间接口实现。系统提供void kal_get_time(kal_uint32*tieks_ptr)函数,可精确到1个ticks(4.615 ms)。
如今在移动多媒体领域,Java运用 大多要求联网,所以实现网络通信,即要实现TCP/IP,支持套接字,是KVM一个非常主要的功能。系统“soc_api.h”文件中定义了套接字接口API,运用此接口实现虚拟机网络方面移植非常方便。
Java运用 要求支持多媒体音频和事件处理,提供用户最好的交互功能。在多媒体音频方面,MTK系统提供了非常彻底的支持——支持MIDI、MP3等格式的音频播放。根据Java运行的需求,一些基于MIDP2.O扩展包的实现成为必要。系统实现了JSR120的短信功能以及JSR135的部分功能。
1、J2ME 移植的空间需求(不同版本会有差异,但是差异不大,这里以 07B GEMINI 0812版本为例) ROM : 1.3 M; RAM 0.7 M – 2.6 M (可以配置运行期内存)
2、J2ME的网络配置,由于J2ME依附于TELECA OBIG WAP,所以默认网络配置就是您在WAP里的配置,当然您也可以在配置里修改网络链接。
3、由于KVM有差异, j2me应用使用的标准不同,所以有些应用不能使用,这是正常的。
4、 J2ME是支持所有分辨率平台,但是你的应用的分辨率是有差别,在不匹配的分辨率下,界面会混乱,这个跟KVM没有关系,也有自适应分辨率的应用,比较少而已。
5、J2ME应用中语言是怎么预设的。由于KVM有得到语言的接口,但是大多应用是没有使用这个接口的而是自行使用自己的语言,因为应用中内置的语言不一定和mtk手机上的语言一致,但是字符集都是使用mtk系统的,如果系统没有这个语言在j2me应用中会是乱码的。一般修改语言的话要在j2me应用里的菜单选项中选择修改。
6、可以通过jar,安装j2me应用,也可以通过Jad安装j2me应用,但是如果使用Jad 安装的话,Jar文件必须存在而且Jad文件与jar文件必须一致。
7、J2me应用的预置,这个KVM支持j2me 应用预置,即可以在出厂前先做进几个应用,但是会占用ROM空间(跟应用的大小有关),并且预置进的应用不能删除.预置的话必须使用Jad, jar. 如果您的应用没有Jad文件,我们会提供jar文件的生成Jad文件的工具。
8、已经预置的应用可以单独的提出来放在任何地方。我们会提供相关开发例子, 我们已经实现了函数的功能,只需要传入参数即可。例如把MSN提出来放在idle screen 或主菜单,或其他地方。
9、J2me开启的java logo是可以替换的。
10、我们会提供一些常用的j2me应用, 流行的im工具:QQ, MSN, 飞信,旺旺,Skype等; 各种字典:金山词霸,牛津英文等;炒股软件,常用游戏,电子书等等工具软件。
11、另外还是很多和MTK相关的问题,例如有些屏退出睡眠白屏等这些实际上不是KVM的问题,我们可以提供一些方法给予规避。
以下列出测试报告: (支持以下规范)
- MIDP:MIDP-2.0 CLDC-1.1 PIM(JSR75):1.0 FileConnection(JSR75):1.0
- Bluetooth(JSR82):1.1 MMAPI(JSR135):1.1 JTWI (JSR185):1.0
- Web Services (JSR 172), File and PIM APIs (JSR 75), Bluetooth and OBEX APIs (JSR 82), and 3D Graphics (JSR 184)
[提示]
在MT6235上的测试结果里JBENCHMARK2的值是980比N95中J2me的结果高40%.因为MT6235上做了3D的特殊加速处理。但是在MT6225上的测试结果里JBENCHMARK2的值只有99.
MT6235平台使用j2me的结构。
小结:详解关于MTK验证J2ME问题解决的内容介绍完了,希望通过本文的学习能对你有所帮助。