1.1 Java ME


簡介

Java ME 以往稱作J2ME(Java Platform,Micro Edition),是爲機頂盒、移動電話和PDA之類嵌入式消費電子設備提供的Java語言平臺,包括虛擬機和一系列標準化的Java API。它和Java SE、Java EE一起構成Java技術的三大版本,並且同樣是通過JCP(Java Community Process)制訂的。與J2SE和J2EE相比,JAVA ME總體的的運行環境和目標更加多樣化,但其中每一種產品的用途卻更爲單一,而且資源限制也更加嚴格。爲了在達到標準化和兼容性的同時儘量滿足不同方面的需求,JAVA ME的架構分爲Configuration、Profile和Optional Packages(可選包)。它們的組合取捨形成了   具體的運行環境。
Configuration主要是對設備縱向的分類,分類依據包括存儲和處理能力,其中定義了虛擬機特性和基本的類庫。已經標準化的Configuration有- Connected Limited Device Configuration(CLDC)和Connected Device Configuration(CDC)。
Profile建立在Configuration基礎之上,一起構成了完整的運行環境。它對設備橫向分類,針對特定領域細分市場,內容主要包括特定用途的類庫和API。CLDC上已經標準化的Profile有Mobile Information Device Profile (MIDP)和Information Module Profile(IMP),而CDC上標準化的Profile有Foundation Profile(FP)、Personal Basis Profile(PBP)和Personal Profile(PP)。
可選包獨立於前面兩者提供附加的、模塊化的和更爲多樣化的功能。目前標準化的可選包包括數據庫訪問、多媒體應用、藍牙等等。
Java ME(Java 2 Micro Edition)是Java 2的一個組成部分,它與J2SEJ2EE並稱。根據Sun的定義:Java ME是一種高度優化的Java運行環境,主要針對消費類電子設備的,例如蜂窩電話和可視電話、數字機頂盒、汽車導航系統等等。JAVA ME技術在1999年的JavaOne Developer Conference大會上正式推出,它將Java語言的與平臺無關的特性移植到小型電子設備上,允許移動無線設備之間共享應用程序。今天,不止是桌面上的電腦,手中的電話、汽車中的通信設備、家中的冰箱、洗衣機等都將連入互聯網,這是一個移動的互聯網。J2ME(Java2平臺微型版)就是Java程序在這些連接設備上的執行平臺和開發環境,其基本思想和J2SE類似,就是在各種設備上安裝適合它的Java虛擬機,應用程序則在虛擬機之上運行。
Java本來就是爲了嵌入式系統而生,1990年12月,Sun公司內部由James Gosling、Patrick Naughton以及Mike Sheridan成立了一個叫做Green Team的小組。Green Team小組的主要目標,是要發展一種新架構,而這種架構必須能夠在消費性電子產品作業平臺上運行,現在我們普遍認識的PDA、手機或是信息家電(IA),都是屬於這種架構的目標平臺。雖然在1999年,Java被分割成J2ME、J2SE、J2EE,所以有了J2ME這個名詞的出現。但是Java並非1999年纔開始發展嵌入式系統上的應用。其實,Java本來就是爲了嵌入式系統而發展的一種架構。即使目前大家多半將Java的應用聚焦於企業上的J2EE應用。但是嚴格來說,J2ME纔是Java真正“迴歸本心”的領域。
Sun公司將J2ME(Java 2 Micro Edition)定義爲“一種以廣泛的消費性產品爲目標的、高度優化的Java運行時環境”。J2ME是Sun公司爲嵌入式開發所定義的一個框架,由一系列標準的規範組成。所以J2ME是一系列技術規範的總稱,而不是單一的規範。
J2ME的所有技術標準都由JAVA社區過程(Java Community Process,JCP)制定,JCP是一個開放的國際組織,主要由Java開發者以及被授權者組成,職能是發展和更新Java技術規範、參考實現(RI)、技術兼容包(TCK)。Java技術和JCP兩者的原創者都是SUN計算機公司。
JCP維護的規範包括J2ME、J2SE、J2EE、XML、OSS、JAIN等。組織成員可以提交JSR(Java Specification Requests),通過特定程序以後,進入到下一版本的規範裏面。
J2ME使用配置(CDC或CLDC)和簡表(Profile)定製JRE,一個完整的JRE由配置和簡表組成,配置決定了所使用的JVM(可能是CVM或KVM),而簡表通過定義特定的類來爲應用程序提供功能上的支持,一個簡表定義了設備所提供的API集合。例如:CLDC規範目前分爲v1.0 JSR 30、v1.1 JSR 139;CDC規範目前分爲v1.0 JSR 36、v1.1 JSR 218;MIDP規範目前分爲v1.0 JSR 37、v2.0 JSR 118。
J2ME 在設計其規格的時候,遵循着「對於各種不同的裝置而造出一個單一的開發系統是沒有意義的事」這個基本原則。於是 JAVA ME 先將所有的嵌入式裝置大體上區分爲兩種 :一種是運算功能有限、電力供應也有限的嵌入式裝置(比方說PDA、手機);另外一種則是運算能力相對較佳、並且在電力供應上相對比較充足的嵌入式裝置 (比方說冷氣機、電冰箱、電視機頂盒 (set-top box))。因爲這兩種型態的嵌入式裝置,所以Java 引入了一個叫做Configuration 的概念,然後把上述運算功能有限、電力有限的嵌入式裝置定義在Connected Limited Device Configuration(CLDC)規格之中;而另外一種裝置則規範爲 Connected Device Configuration(CDC)規格。也就是說, JAVA ME 先把所有的嵌入式裝置利用Configuration 的概念區隔成兩種抽象的型態。其實在這裏大家可以把Configuration 當作是JAVA ME 對於兩種類型嵌入式裝置的規格,而這些規格之中定義了這些裝置至少要符合的運算能力、供電能力、記憶體大小等規範,同時也定了一組在這些裝置上執行的 Java 程序所能使用的類別函式庫、這些規範之中所定義的類別函式庫爲 Java 標準核心類別函式庫的子集合以及與該型態裝置特性相符的擴充類別函式庫。比方就CLDC 的規範來說,可以支援的核心類別函式庫爲java.lang.* 、java io.*、java.util.*,而支援的擴充類別函式庫爲javamicroeditionio.*。
區分出兩種主要的Configuration 之後,JAVA ME 接著在定義出Profile的概念。Profile 是架構在Configuration 之上的規格。之所以有Profile的概念,是爲了要更明確地區分出各種嵌入式裝置上Java 程序該如何開發以及它們應該具有哪些功能。因此Profile 之中定義了與特定嵌入式裝置非常相關的擴充類別函式庫,而 Java 程序在各種嵌入式裝置上的使用者介面該如何呈現就是定義在Profile 裏頭。Profile 之中所定義的擴充類別函式庫是根據底層Configuration 內所定義的核心類別函式庫所建立。

關鍵技術編輯

我們先從整體上了解J2ME在運行中Java程序、Profile(MIDP是其中的一類描述)、Configuration(CLDC是其中的一類配置)、虛擬機、操作系統以及實體機器之間的關係,即J2ME的運行環境。
· MID:移動信息設備硬件;
· 原生代碼的系統軟件:包括操作系統和系統使用的庫文件;
· CLDC:包括KVM和由CLDC規範定義的相關庫函數,CLDC是MIDP和OEM特定類的基礎;
· Java API:這部分提供上層所需的最底層Java功能;
· MIDP:一個Java API集合,處理諸如用戶界面、持久存儲和網絡等方面的問題;
· OEM特殊類:擴展了MIDP所定義的功能,這些類可能由OEM爲某一給定的設備提供,是不可移植的。
(1)KVM
KVM是一個緊湊的、可移植的Java虛擬機,專用於小型的資源受限的設備,如蜂窩電話、尋呼機、個人組織機、移動互聯網設備、POS終端和家用電器等。KVM設計的高級目標是生成儘可能小且完整的Java虛擬機,它需要維護Java核心語言所有的核心方面,並且仍能在資源受限的設備中運行,儘管它只有幾十或幾百千字節的存儲空間。
KVM設計的目標:
· 小,虛擬機內核所佔用的靜態存儲空間在40~80 KB之間(與編譯選項和目標平臺有關);
· 清晰的,具有良好的註釋和高可移植性;
· 模塊化,可定製;
· 在不犧牲其他設計目標的前提下,儘可能的“完整”和“快”。
KVM實現所需的最小內存空間大約是128 KB,包括虛擬機、最小的庫和運行Java應用程序所需的堆空間。一個更加典型的實現是需要總共256 KB內存空間,其中32KB作爲應用程序運行時的堆空間,60KB~80KB用於虛擬機本身,剩餘的爲類庫保留。由於受到嚴格的內存容量限制,KVM缺乏JVM所提供的完整特性。使用CLDC的開發者在編譯程序之後必須預先採用J2ME開發工具包所提供的一種檢查工具對它們的源代碼進行預校驗。
Sun的KVM參考實現可以在Solaris和Windows兩個平臺上進行編譯和測試,這兩個平臺都可用於KVM的開發、調試、測試和使用。它們包含了大量的開發工具,並且由於強大的工作站級性能,因而能夠快速地進行KVM的移植和開發。Solaris和Windows版本的KVM作爲基本的官方CLDC參考實現,可被用戶移植到特定的設備之上。
由於KVM是一個支持CLDC庫的後臺Java虛擬機,因此,CLDC中不支持的性能在KVM中也不支持。這些不支持的性能包括:浮點支持、最終化支持以及設備特定的錯誤管理。除此之外,由於J2ME提供了有限的Java安全模型版本,因此一些可能會造成安全問題的性能也被KVM所刪除,這些性能包括:Java本地接口(JNI),用戶自定義類裝載器,反射、RIM或對象序列化,線程組或Daemon線程,以及弱引用等。
(2)CLDC/CDC
可用的Configuration有兩個:CDC和CLDC設備。CDC設備主要面向有較大內存和較強處理器的移動設備;CLDC設備則主要面相向較小內存和小屏幕、較弱處理器的移動信息設備。同時,CLDC和CDC的大部分功能都繼承自J2SE,每個繼承自J2SE平臺的類,不是等價於J2SE相應的類,就是J2SE的子集,而且CLDC和CDC還加入了一些自身特有的特性。
CLDC:這個配置致力於低端的消費類設備。從設備的用途和功能角度看,它針對的設備主要包括個人的、移動的、電池供電的、互聯的信息設備,如手機、PDA和POS機,其特點是無線連接,沒有穩定的電源供應(通常使用電池)、設備資源極少。從設備的硬件功能角度看,它主要針對16bit、32bit,主頻在16MHz以上的處理器,設備的內存比較小,可能小於512 KB。這個配置包括一些新的類,並非全部來自J2SE的API,而是特別爲適應小型設備而設計的。
CDC:這個配置致力於高端的消費類產品。從設備的用途和功能角度看,它針對的設備主要包括共享的、互聯的信息設備,如電視機機頂盒、Internet電視和高端的通信設備,其特點是有線連接、電源穩定、設備資源比較受限。從設備的硬件功能角度看,它主要針對32 bit,主頻在75 MHz以上的處理器,內存可能在1~4 MB。這個配置包含了比CLDC更加複雜的Java庫和虛擬機的集合。
(3)MIDP
區分出兩種主要的Configuration之後,J2ME接着定義了Profile的概念。Profile是架構在Configuration之上的規格。之所以有Profile的概念,是爲了更明確地區分出各種嵌入式設備上Java程序該如何開發以及它們應該具有哪些功能。因此,Profile之中定義了與特定嵌入式設備非常相關的擴充類函數庫,而Java程序在各種嵌入式設備上的用戶接口該如何呈現就是定義在Profile裏的。Profile之中所定義的擴充類函數庫是根據底層Configuration內所定義的核心類函數庫所建立的。
從CLDC所衍生出來的Profile主要有兩種,一種是PDA Profile,大多數用在PDA上;而另外一種是Mobile Information Device Profile(MIDP),這個Profile是針對移動設備所定義的,如尋呼機(Pager)、移動電話等,都是屬於移動設備。i-mode是日本電信(NTT)的子公司DoCoMo在日本市場推出的無線通信服務,相應於MIDP中的MIDlet,i-mode把其專用的J2ME應用程序稱爲i-Appli。
另外,我們可以看出Embedded Java與Personal Java沒有包含在兩個Configuration的任何一個底下,但它們還是歸類在J2ME的範疇之中,而且也衍生出了Java的實時版本(Real time Specification for Java)。其實Embedded Java與Personal Java會慢慢被架構在CDC之上的Profile所取代。就Personal Java來說,它的規格與Personal Profile的規格是兼容的。之所以目前還存在Embedded Java與Personal Java這兩個名詞的主要原因在於,市場上已經有大量採用這兩種規格的產品,所以短期內Personal Java仍然會不斷髮展,一時間還無法立刻歸類到J2ME的特定Profile之下。
MIDP1.0包含以下7個包,其中前4個是CLDC核心包,後3個是MIDP特有的包。
·java.io;
·java.lang;
·java.util;
·javax.microedition.io;
·javax.microedition.lcdui;
·javax.microedition.midlet;
·javax.microedition.rms。
一個MIDP應用程序稱作MIDlet——MIDP小應用程序,這個概念與J2SE中的Applet十分類似。它們不能單獨運行,都必須運行在特定的運行環境之中,或者說運行在一個容器中。可以把這個容器看作是個大的應用程序,它運行在Java虛擬機之上,但不能完成任何特定的任務,因此需要程序開發者編寫代碼以完成一項工作,這些編寫的程序就稱作小應用程序。這樣設計的目的是爲了讓它能在所有的容器中運行,這些容器實現可能不同,但它能運行在多種環境中。容器的作用就是適配小應用程序和它的大運行環境之間的差異。MIDlet中這個容器就是MIDP實現,它以Sun公司發佈的CLDC規範和MIDP規範爲標準,然後針對設備進行移植,從而提供給所有MIDlet都一樣的容器內部接口。MIDP實現提供了一套機制用來管理MIDlet,如運行、暫停、銷燬等。因此對MIDP小應用程序來說,也應該遵照一個標準,如必須實現一定的接口應用管理軟件纔可識別並調用它。
編寫MIDP應用程序的要求就是必須擴展MIDlet類,這個類定義了一些接口,應用 管理軟件可以通過這些接口對MIDlet進行控制。MIDlet類位於javax.microedition.midlet包中,因此,在所有的MIDlet中,都必須引入這個包javax.microedition.midlet.*。

體系結構編輯

J2ME並沒有爲移動設備定義一個全新的操作系統或完整的系統軟件棧,而是從滿足消費者和嵌入式市場彈性和定製需求角度出發,採用模塊化、可擴展性設計。J2ME技術這種模塊化和可擴展性是通過一個3層軟件模型來實現的,這個3層軟件模型構建於設備本地操作系統層之上。
(1)主機操作系統層
這一層爲移動信息設備的操作系統,通過它可以直接控制硬件設備,實現硬件設備的功能。
在最底層的是移動設備的主機操作系統,目前主要有Symbian、Windows Mobile、Linux和Palm 4大手機操作系統。Symbian公司是由諾基亞、摩托羅拉、西門子等幾家大型移動設備製造商共同出資組建的合資公司,專門研發手機操作系統。Symbian操作系統在智能移動終端上擁有大量的應用程序以及強大的通信處理能力,它有一個非常健壯的核心:強大的對象導向系統、企業用標準通信傳輸協議以及完美的Sun Java語言支持。Windows Mobile包括Pocket PC、SmartPhone以及Pocket PC Phone 3大平臺體系。此係列操作系統功能強大,具備音頻播放、視頻文件播放、上網衝浪、MSN聊天和電子郵件收發等功能。Windows Mobile是在Windows操作系統上變化而來的,它們的操作界面非常相似,因此,採用此操作系統的手機方便易用。由於Windows Mobile本身對資源的巨大吞噬作用,所以在能耗方面,Windows Mobile系統要明顯遜於其他操作系統。Linux手機操作系統是由計算機Linux操作系統“變化”而來的。Linux操作系統具有穩定、可靠、安全等優點,有強大的網絡功能。Linux憑藉其自由、免費、開放源代碼的優勢,已經得到衆多知名廠商的支持。Palm操作系統是由Palm公司自行開發的,並授權給Handspring、索尼和高通等設備廠商。Palm是一種32 bit的嵌入式操作系統,主要運行於移動終端上。這種操作系統是一種更傾向於PDA的操作系統。
(2)Java虛擬機層(JVM)
這一層是針對設備本地操作系統定製的Java虛擬機的實現,支持特定的J2ME配置。Java語言的一個非常重要的特點就是與平臺的無關性。而使用Java虛擬機是實現這一特點的關鍵。JVM以軟件的形式實現了硬件的功能,是硬件的軟件抽象,可以認爲,JVM就是J2ME軟件化的處理芯片。由虛擬機直接負責和移動設備的接口,而J2ME應用程序只能和JVM打交道。
(3)配置層(Configuration)
配置層對用戶來說是能見度不高的一層(比較透明)。但是對簡表的實現卻非常重要。它定義了某一類設備所用的Java虛擬機和Java類庫的最小集合,這類設備代表了某一特定水平市場,在某種程度上,配置定義了這一範圍內能應用於所有設備的Java平臺功能和類庫的“最小公分母”。
Configuration規範中定義了硬件所必須具備的能力,例如:硬件至少具備多少ROM、RAM,CPU的時鐘週期最少應該是多少,連接網絡時頻寬至少要多寬。Configuration規範之中定義了一組低級的API,這代表Java至少必須提供的低級功能,這組低級的API就是核心類庫的子集合。由於消費性電子產品的差異性極大,Sun認爲對於不同硬件特性的電子產品,應該有不同的設計規格,因此,Configuration針對硬件的數據處理能力、存儲容量、網絡連接能力和用戶輸入輸出設備將這些電子產品區分爲不同的類。目前已經定義出來的Configuration有兩種,分別是CDC(Connected Device Configuration)與CLDC(Connected Limited Device Configuration),前者包含的設備對硬件資源的支持較大,例如網絡電話、Set-top Box、車用計算機等,後者則可以涵蓋一般的個人移動設備,如手機及PDA等。Configuration除了定義硬件支持程度之外,還定義了對Java語言所支持的程度、對Java Virtual Machine所支持的程度和對核心類庫所支持的程度。
(4)簡表層(Profile)
對用戶和應用開發者來說,簡表層是能見度最高的層。它定義了能夠應用於某一類設備上的API的最小集合,這一類設備代表了一定的垂直市場。簡表都是在某一特定配置基礎之上的實現,針對某一簡表開發的應用程序可移植到任何設備,只要此設備也支持這個簡表。另外,一個設備可以同時支持多個簡表。在J2ME設備中,Java虛擬機的實現和構建於虛擬機之上的配置規範聯繫十分緊密,它們一起代表了某一種類設備的基本能力。而更進一步的設備分類上的區別是通過簡表層所提供的API規定的。爲了滿足更多新的、激動人心的應用的需要,簡表可以通過擴充類庫來增強自己的功能。
Profile針對各種不同機器的特性定義了高級API,這些高級API通常都是與其他平臺不相關的擴充類庫。這些高級API決定了該種機器上Java程序的撰寫方法,例如移動通信設備(手機、PDA等)上Java程序的撰寫方式,以及能夠調用的API都定義在MIDP(Mobile Information Device Profile)之中。
(5)可選包(Optional Package)
Optional Package是指這是一組和其他規範(或API)沒有任何依存性的類庫,如果廠商願意提供這樣的功能給程序員(通常是因爲硬件具有充分的能力可以完成規範之中所制定的功能),就會將這組類庫實現出來,程序員也可以利用這些類庫開發出功能更多的應用程序。

java虛擬機編輯

我們知道,任何Java程序都是在JVM中被執行的。那麼對於J2ME來說,情況又是如何呢?CDC仍然使用與J2SE相同的JVM,對於CLDC,由於設備資源受到限制,Sun專門開發了一個新的名叫KVM(K Virtual Machine)的虛擬機。這是個不同於傳統的Java虛擬機:
● 虛擬機本身僅僅需要40-80KB內存;
● 只需要20-40KB動態內存(堆);
● 能夠運行在16位25MHz處理器上。
當然KVM只是一個由Sun實現的符合CLDC規範的Java虛擬機而已,它並不是唯一的,還存在很多類似的虛擬機,你也完全可以自己實現一個這樣的虛擬機,只要它符合CLDC規範就可以。

開發工具編輯

開發Java ME程序一般不需要特別的開發工具, 開發者只需要裝上
Java開發工具Java開發工具
Java SDK 及下載免費的 Sun Java Wireless Toolkit 2.xx系列開發包,就可以開始編寫Java ME程式,編譯及測試, 此外目前主要的IDE(Eclipse及 NetBeans)都支持 Java ME 的開發,個別的手機開發商如 Nokia、Sony Ericsson、摩托羅拉、Android系統 都有自己的SDK, 供開發者再開發出兼容於他們的平臺的程序。

優化內存

內存佔用主要有兩種,即程序和資源。

程序

類會被編譯成class字節碼文件隨MIDlet的啓動加載進內存,而且是一次性全部加入。也就是說MIDlet裏類個數越多、單個類程序越長、類內字符串常量及數據越多,編譯後的class文件就越大,載入後佔用的內存也越多。我經常在MIDlet類的構造函數裏用Runtime方法來查看MIDlet啓動後整個程序佔用內存量。
優化方法:
⒈將MIDlet程序寫成兩個類來減少內存佔用量,但是以犧牲Java的OOP特性爲代價的。在程序比較大時這種弊端將尤爲顯見。而且CoCoMo曾經遇到過單個類過大,載入時間過長而違反百寶箱有關Logo 6秒時間限制的情形。
⒉儘量編寫優雅的代碼,減少函數數量,在程序發佈時去掉try catch,最大限度的減少程序行數,這一般都是在老40上沒有辦法的辦法,現在CoCoMo已經不靠這個來省內存了。
⒊將數據及字符串寫進文件,在用時方載入內存,不用時設爲null。
⒋I/O操作getClass().getResourceAsStream(file);、數據庫操做RecordStore.openRecordStore(name,true);、聲音創建Manager.createPlayer();、圖像創建Image.createImage(file);會在短時間內佔用大量內存且過後釋放,如果MIDlet程序內存剩餘量不足則會在這些函數頻繁調用時發生內存溢出,產生所謂的內存峯值,尤其在老40上比較普遍。當再次與OutOfMemoryError碰面時,多用Runtime查找內存峯值發生位置並儘量將這些語句分開調用,並靈活運用System.gc()來及時回收。

資源

圖片:是佔用內存的大戶,尤其是手機遊戲圖片資源衆多。對圖片資源在內存中佔用量的計算成爲J2ME遊戲開發者的經常性工作,CoCoMo來解釋一下如何計算圖片在內存中的佔用量:
內存佔用量=寬*高*像素字節數,其中像素字節數因機型而異。
例如一張64*64的圖片在7210上的內存佔用量=64*64*1.5=6144(字節)=6K、在S60上的內存佔用量=64*64*2=8192(字節)=8K。像素字節數因機型而異,例如7210是4096色機型,也就是說用12位來表示一個像素,所以乘上1.5,而S60是65536色的機型,用16位來表示一個像素,所以乘上2。
優化方法:
認爲壓縮圖片可以節省內存,這種想法是錯誤的。根據上面的解釋圖片載入內存後只和寬高有關係,和圖片數據量大小沒有任何關係,壓縮圖片只能減少jar大小而不能減少內存佔用量。
⒈靜態法:減小圖片大小,寬高小了結果當然小了。根據這個思路出現了動畫編輯器之類的工具,像gameloft的波斯王子,人物被分割後使人體的部位可以重用,各部位緊湊放置都是爲了減少圖片大小,充分利用圖片中的每一寸空間。
⒉動態法:減少同一時刻載入內存的圖片數。CoCoMo曾經在火影武士項目中遇到過這種情況,當時有6種怪物,如果同時載入內存在老40上肯定爆掉了,但是每關只出現兩到三種怪物,所以每一關只需要載入該關出現的怪物圖片即可。現在想起來當時做這個項目在老40上溢出頻出,真把我搞死了。
聲音:聲音也是比較耗用內存的資源,聲音中音軌所佔的byte會轉化成字節流被載入到內存中。因而減少音軌所佔byte即可減少內存耗用量。目前gameloft的做法是用聲音轉化工具將mid轉化爲ott,然後變爲ByteArrayInputStream字節流來創建Player。

數字簽名編輯

隨着國家3g牌照的發放,手機遊戲市場再度成爲業界關注的焦點。上週,業界相關人士表示,中國手機遊戲市場經過幾年的市場培育,市場開發已漸成熟,3g時代的到來將使中國手機遊戲市場規模將大幅度增長,一場手機遊戲盛宴有望上演。3g時代的到來,網絡寬帶的速度將大幅提升,那麼手機遊戲帶給用戶的將又是一種全新的體驗,大家體驗越來越好的時候,這個經濟一定會越來越熱。因此可以預見3g時代到來的時候,手機遊戲一定會成爲主流之一。從手機遊戲的幾年發展不難看出,從簡單內置的手機遊戲到下載類遊戲,再到聯網遊戲、多人聯網遊戲,最後發展到跨平臺聯網遊戲,手機遊戲產業正不斷升級,隨着3g時代的到來,對於手機遊戲來說,意味着更強的終端表現力、更快的傳輸速度,全新的體驗將使它吸引更多的用戶加入進來。得到一個證書後就可以對Java ME的jad文件進行簽名。這裏有一些與簽名相關的需要注意的一些問題。
⒈想要安裝簽過名的軟件,就必須通過jad來安裝。
我們知道Java ME程序生成後會有jad和jar兩個文件,一般情況下我們只需要安裝jar文件就可以了。例如我會將jar文件通過藍牙傳到手機上,再進行安裝。但如果想通過手動安裝簽過名的文件,就要通過jad來安裝,而且要確保jad和jar文件是在相同目錄下。我的做法是通過數據線將兩個文件拷入手機的內存或存儲卡上,然後通過jad來安裝,這樣安裝好的軟件就是簽過名的軟件了。不會再有總是很煩人的詢問用戶是否允許操作的提示信息。但就我看過的手機看來,應該是不同的手機有不同的表現。例如索愛的手機關於提示仍然是需要用戶自己設置的。諾基亞也是。只是諾基亞的在使用非簽名軟件時用戶無法設置爲“總是允許”或“只提示一次”。而簽了名的就可以設置了。
⒉編程人員需要注意,像很多功能在未簽名前是可以使用的,例如gps,網絡連接,文件讀寫等。
⒊簽過名的軟件有什麼好處。
簽名就是告訴我們這個軟件是可信的,對用戶最直接的感受就是聯網或訪問手機文件的時候,收發短信,彩信,藍牙等,但簽名後這些功能就不可用了。這就是jad中MIDlet-Permissions屬性的問題。當未簽名時對這個屬性的要求並不嚴格,但簽名後就一定要注意。必須把所要使用到的權限加入進去,否則這個功能就不能使用了。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章