詳解關于MTK驗證J2ME問題解決
關于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問題解決的內容介紹完了,希望通過本文的學習能對你有所幫助。