首頁 > Java > java教程 > 主體

J2ME程式開發全方位基礎講解總合(一)

黄舟
發布: 2016-12-20 13:26:05
原創
1023 人瀏覽過

  一、J2ME中需要的java基礎知識
  
  現在有大部分人,都是從零開始學J2ME的,學習J2ME的時候,總是從Java基礎開始學習,而且現在講Java基礎的書籍中都是以J2SE來講基礎,這就給學習造成了一些不必要的麻煩,下面將J2ME中用到的和不需要的Java基礎知識做一個簡單的說明:
  
  J2ME中使用到的Java基礎知識:
1.Java語法基礎:包含基本資料型態、要害字、運算子等等
  2、物件導向的想法:類別和物件的概念,繼續和多型等等。
  3、異常處理
  4、多執行緒
  
  J2ME中沒有用到的Java基礎知識:
  1、JDKKjavac和命令的使用基礎的方法做了大量的精簡。所以建議在J2ME中熟悉類別庫。
  3、Applet、AWT、Swing這些知識在J2ME中根本使用不到。
  
  簡單說這麼多,希望學J2ME的朋友們能少走一些彎路,不足之處希望大家積極指正和補充。
  
  二、J2ME中暫時無法完成的功能
  
  列一些J2ME中暫時無法完成的功能,希望大家能積極補充:
 1、在手機中不更改遊戲程式碼。
  2、動態修改按鈕文字。
  3、在Canvas上接受中文輸入。
  4、操作本地資源、例如地址本、已收短資訊等。
  5、製作破壞性的手機病毒。
  6、其他等待大家來補充。
  
  三、J2ME的跨平台性
  
  J2ME技術源於Java,所以也具有JVM的優勢,可以在支持Java的平台上進行移植,但是現在的J2ME技術在跨平台上卻做的很糟糕,我們來簡單看一下原因:
  1、手機的螢幕尺寸不一:
  這個主要在介面製作上。
  
  假如你使用的是高級用戶介面,例如你做的是應用開發或用戶登陸、用戶註冊這樣的通用功能時,一般沒有什麼問題。
  
  假如你使用的是低階使用者介面,例如你做的是遊戲,那麼你就需要考慮這個問題了。
  
  2、廠商的擴充API不統一:
  例如Nokia的擴充API類庫UI系列,在別的手機上或者沒有實現,或者包名不同等等。
  
  3、手機平台上實現的bug:
  例如Nokia的7650在實現雙緩衝上有bug,那麼在這種機型上運行的軟體就不能使用雙緩衝。其他NOKIA上的一些bug,可參考:http://blog.csdn.net/Mailbomb/archive/2005/03/24/329123.aspx
  
  4、手機效能問題。
  不同手機的可用記憶體、最大jar檔案都有要求,例如Nokia S40的大部分手機支援的最大jar檔為64K,最大可用內容為210K。
  
  所以現在的手機軟體,非凡是遊戲都提供支援的機型列表,也才有了手機遊戲移植人員的存在。
  
  四、學習J2ME可以從事的工作種類
  
  現在J2ME技術可以說相當的火暴,這裡介紹一些學好了J2ME之後可以從事的工作的種類:🎀〟〟〟〜〟〜4]要求,在某種特定的機型(以Nokia S40或S60居多)開發遊戲程式。
  這是現在大部分J2ME程式設計師從事的工作。
  
  需熟練掌握:進階使用者介面、低階使用者介面、線程,假如是網路遊戲,還需要熟練網路程式設計。
  
  2、J2ME應用開發人員
  現在的行動應用還不是很多,但是還是出現了一些,非凡是移動定位以及移動商務相關的內容。
  
  需熟練掌握:進階使用者介面、執行緒與網路程式設計。
  
  3、J2ME遊戲移植人員
  參考原始碼,將可以在一個平台上可以運行的遊戲移植到其他平台上去。例如將Nokia S40的遊戲移植到S60上,或是索愛的T618等等。
  
  主要是控制螢幕座標,有些可能需要取代一些API。
  
  需要熟悉各平台之間的差異以及相關的技術參數,例如螢幕大小、最大jar檔案尺寸等等。
  
  五、J2ME程式設計的幾個原則
  
  1、使用物件導向程式設計。
  雖然使用面向過程程式設計可以減少檔案的尺寸,但是為了以後維護的方便和利於擴展,還是要使用物件導向程式設計。
  
  2、使用MVC模式
  將模型、介面和控制分開。現在很多的程式將三者合一,但是假如你做的程式比較大的話,還是建議你分開。
  
  3、自動儲存使用者設定
  使用RMS來儲存使用者的信息,例如儲存使用者上次輸入的使用者名稱、密碼、使用者對於系統的設定等,這不僅可以減少使用者的輸入,而且對使用者友善。很多程序甚至做了自動登陸等。
  
  4、一些系統設定答應用戶關閉。如背景音樂、背景燈顯示等。
  
  5、將低階使用者介面的繪製動作放在一個獨立的執行緒裡面去。
  
  6、在需要大量時間才能完成的工作時,給使用者一個等待介面。
  
  六、從模擬器到真機測試
  
  對於J2ME開發者來說,模擬器給我們帶來了很多方便,比如可以在模擬器中調試程序以及很方便的察看程序的效果,但是模擬器也為我們帶來了一些問題,例如模擬器實現的bug等等,所以進行真機測試是必須的。
  
  1、為什麼要進行真機測試?
  因為模擬器程式可能有bug,以及真機的效能有限,所以必須進行真機測試。
  
  2、如何將程式傳送到機器中?
  將程式傳送到機器中有以下方式:
  a) OTA下載
  
  b) 使用數據線傳輸🀜  〜〜 牙齒
  你可以依照條件,選擇適合的方式。
  
  3、 真機測試主要測什麼?
  真機測試的內容很多,主要測試以下幾個方面:
  a) 程序的功能
  
  b) 程序的操作性,是否易操作🀜  〜 〜〜〜4〜〜 〜 〜〜〕〜]系列的大部分尺寸的最大檔案尺寸為64K
  
  d) 程式運作速度,速度是否可以忍受。
  
  七、從WTK到廠商SDK
  
  對於J2ME愛好者來說,基本上大家都是從SUN的WTK(J2ME Wireless Toolkit)開始的,但是對於實際應用來說,僅僅使用WTK ,所以在學習過程中,必須完成從WTK到SDK​​的跨越。
  
  1、廠商SDK的下載位址?
  http://blog.csdn.net/Mailbomb/archive/2005/01/01/236606.aspx
  
  2、廠商SDK和WTK有什麼不同?
  廠商SDK最簡單的理解就是在WTK的基礎上增加了自己的模擬器和自己的擴充API。
  也就是說,你在使用廠商的SDK時,可以使用廠商的擴充類別庫,例如Nokia的UI類別庫,和廠商自己的模擬器而已。
  每個廠商的擴充API都不多,而且不盡相同。
  
  3、如何使用?
  有些廠商SDK的使用都和WTK相同,例如SamSung。
  Nokia提供了獨立的介面來開發,但是這個介面在實際開發中使用不多。
  
  4、廠商SDK的問題
  廠商SDK實現過程中,有一些bug,而且和真機實現不一致。例如NOKIA的混音播放問題等等。
  
  八、在J2ME中獲得手機IMEI的方法
  
  IMEI是Internation mobile entity identification的簡稱,在衝突中輸入*#06是Internation mobile entity identification的簡稱,在衝突中輸入*#06#06#06#06#可以作為識別使用者的一個標誌。
  
  下面是在J2ME中獲得IMEI的方法:
  
  1、MOTO系列的手機可以透過讀取系統的IMEI屬性取得,代碼如下:🎀   㟜。〜。); 、 SIEMENS系列的手機可以透過讀取系統的com.siemens.IMEI屬性取得,程式碼如下:
  String imei = System.getProperty("com.siemens.IMEI");
  
  九、J2ME網路連線中顯示問題的解決方案辦法
  
  在網絡編程中,有些時候會出現一些在沒有接收到網絡數據就顯示界面的,造成界面顯示不符合要求(例如公告顯示,會先顯示公告的背景圖片再顯示公告信息),這裡提一個簡單的解決方法給大家:
  
  解決這種情況的方法分成三個步驟:
  1、在需要顯示的介面中,呼叫傳送網路資料的方法。每次顯示時呼叫該建構方法,不呼叫Display的setCurrent方法顯示。
  
  2、顯示等待介面(例如進度條等),給使用者提示,在進行網路連線。
  
  3、在處理網路回饋的資料完以後,呼叫Display的setCurrent方法顯示顯示目前介面。
  
  十、增強J2ME的String能力-分割字串
  
  從JDK1.4以後,String類別中新增了split方法來實現字串的分割,但是在J2ME中卻沒有該方法(DP2.0也沒有實現),但是在實際使用過程中,有些時候的確要用到這種操作,這裡將我以前實現的一段代碼和大家共享:
  /**
  
* 分割字串,原理:偵測字串中的分割字串,然後取子字串
  
  * @param original 需要分割的字串
  
  * @paran regex 分割字串🀀 
  * @paran regex 分割字串🀜 串數組
  
  */
  private static String[] split(String original,String regex)
    int startIndex = 0;
  
  //將結果資料先放入Vector中
  
  Vector v = new Vector();
  
  //返回的結果字串陣列
  㟎
  
  int index = 0 ;
  
  //獲得匹配子字串的位置
  
  startIndex = original.indexOf(regex);
  🀎  //假如起始字串的位置小於字串的長度,則證實沒有取到字串結尾。
  
  //-1代表取到了末尾
  
  while(startIndex


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板