首頁 Java java教程 J2ME程式開發全方位基礎講解總合(一)

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

Dec 20, 2016 pm 01:26 PM

  一、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


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

公司安全軟件導致應用無法運行?如何排查和解決? 公司安全軟件導致應用無法運行?如何排查和解決? Apr 19, 2025 pm 04:51 PM

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

如何使用MapStruct簡化系統對接中的字段映射問題? 如何使用MapStruct簡化系統對接中的字段映射問題? Apr 19, 2025 pm 06:21 PM

系統對接中的字段映射處理在進行系統對接時,常常會遇到一個棘手的問題:如何將A系統的接口字段有效地映�...

如何優雅地獲取實體類變量名構建數據庫查詢條件? 如何優雅地獲取實體類變量名構建數據庫查詢條件? Apr 19, 2025 pm 11:42 PM

在使用MyBatis-Plus或其他ORM框架進行數據庫操作時,經常需要根據實體類的屬性名構造查詢條件。如果每次都手動...

如何將姓名轉換為數字以實現排序並保持群組中的一致性? 如何將姓名轉換為數字以實現排序並保持群組中的一致性? Apr 19, 2025 pm 11:30 PM

將姓名轉換為數字以實現排序的解決方案在許多應用場景中,用戶可能需要在群組中進行排序,尤其是在一個用...

IntelliJ IDEA是如何在不輸出日誌的情況下識別Spring Boot項目的端口號的? IntelliJ IDEA是如何在不輸出日誌的情況下識別Spring Boot項目的端口號的? Apr 19, 2025 pm 11:45 PM

在使用IntelliJIDEAUltimate版本啟動Spring...

Java對像如何安全地轉換為數組? Java對像如何安全地轉換為數組? Apr 19, 2025 pm 11:33 PM

Java對象與數組的轉換:深入探討強制類型轉換的風險與正確方法很多Java初學者會遇到將一個對象轉換成數組的�...

使用TKMyBatis進行數據庫查詢時,如何優雅地獲取實體類變量名構建查詢條件? 使用TKMyBatis進行數據庫查詢時,如何優雅地獲取實體類變量名構建查詢條件? Apr 19, 2025 pm 09:51 PM

在使用TKMyBatis進行數據庫查詢時,如何優雅地獲取實體類變量名以構建查詢條件,是一個常見的難題。本文將針...

電商平台SKU和SPU數據庫設計:如何兼顧用戶自定義屬性和無屬性商品? 電商平台SKU和SPU數據庫設計:如何兼顧用戶自定義屬性和無屬性商品? Apr 19, 2025 pm 11:27 PM

電商平台SKU和SPU表設計詳解本文將探討電商平台中SKU和SPU的數據庫設計問題,特別是如何處理用戶自定義銷售屬...

See all articles