国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

J2ME程序開發全方位基礎講解匯總(一)

2019-11-18 15:53:48
字體:
來源:轉載
供稿:網友

  一、J2ME中需要的java基礎知識
  
  現在有大部分人,都是從零開始學J2ME的,學習J2ME的時候,總是從Java基礎開始學習,而且現在講Java基礎的書籍中都是以J2SE來講基礎,這就給學習造成了一些不必要的麻煩,下面將J2ME中用到的和不需要的Java基礎知識做一個簡單的說明:
  
  J2ME中使用到的Java基礎知識:
  1、Java語法基礎:包括基本數據類型、要害字、運算符等等
  2、面向對象的思想:類和對象的概念,繼續和多態等等。
  3、異常處理
  4、多線程
  
  J2ME中沒有用到的Java基礎知識:
  1、JDK中javac和java命令的使用
  2、Java基礎中的很多類在J2ME中沒有,或者類中的方法做了大量的精簡。所以建議在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之后可以從事的工作的種類:
  
  1、J2ME游戲開發人員
  根據游戲策劃或者文檔要求,在某種特定的機型(以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) 使用數據線傳輸
  
  c) 紅外傳輸
  
  d) 藍牙
  你可以根據條件,選擇合適的方式。
  
  3、 真機測試主要測什么?
  真機測試的內容很多,主要測試以下幾個方面:
  a) 程序的功能
  
  b) 程序的操作性,是否易操作
  
  c) 程序的大小,比如Nokia S40系列的手機大部分接受的最大文件尺寸為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#可以顯示該數字,長度為15位,全球唯一,永遠不會沖突,所以可以作為識別用戶的一個標志。
  
  下面是在J2ME中獲得IMEI的方法:
  
  1、MOTO系列的手機可以通過讀取系統的IMEI屬性獲得,代碼如下:
  String imei = System.get  
  2、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中卻沒有該方法(MIDP2.0中也沒有實現),但是在實際使用過程中,有些時候的確要用到這種操作,這里將我以前實現的一段代碼和大家共享:
  /**
  
  * 分割字符串,原理:檢測字符串中的分割字符串,然后取子串
  
  * @param original 需要分割的字符串
  
  * @paran regex 分割字符串
  
  * @return 分割后生成的字符串數組
  
  */
  private static String[] split(String original,String regex)
  
  {
  
  //取子串的起始位置
  
  int startIndex = 0;
  
  //將結果數據先放入Vector中
  
  Vector v = new Vector();
  
  //返回的結果字符串數組
  
  String[] str = null;
  
  //存儲取子串時起始位置
  
  int index = 0;
  
  //獲得匹配子串的位置
  
  startIndex = original.indexOf(regex);
  
  //System.out.println("0" + startIndex);
  
  //假如起始字符串的位置小于字符串的長度,則證實沒有取到字符串末尾。
  
  //-1代表取到了末尾
  
  while(startIndex < original.length() && startIndex != -1)
  
  {
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新密市| 华坪县| 麦盖提县| 宁安市| 利辛县| 神农架林区| 博兴县| 尚义县| 上蔡县| 仙游县| 綦江县| 包头市| 雅江县| 鸡泽县| 团风县| 淮北市| 固始县| 资溪县| 庆云县| 密云县| 土默特左旗| 鄂伦春自治旗| 武城县| 遂川县| 青冈县| 淳安县| 格尔木市| 商水县| 镇沅| 盐边县| 马边| 黎平县| 安溪县| 美姑县| 嘉黎县| 九寨沟县| 金溪县| 工布江达县| 锡林郭勒盟| 大悟县| 贺兰县|