<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    空間站

    北極心空

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks

     

    [轉貼自yesky]
    一、J2ME中需要的Java基礎知識
      現在有大部分人,都是從零開始學J2ME的,學習J2ME的時候,總是從Java基礎開始學習,而且現在講Java基礎的書籍中都是以J2SE來講基礎,這就給學習造成了一些不必要的麻煩,下面將J2ME中用到的和不需要的Java基礎知識做一個簡單的說明。
      J2ME中使用到的Java基礎知識:
       1、Java語法基礎:包括基本數據類型、關鍵字、運算符等等
       2、面向對象的思想:類和對象的概念,繼承和多態等等。
       3、異常處理
       4、多線程
      J2ME中沒有用到的Java基礎知識:
       1、JDK中javac和java命令的使用

    JAVA手機網[www.cnjm.net]

       2、Java基礎中的很多類在J2ME中沒有,或者類中的方法做了大量的精簡。所以建議在J2ME中熟悉類庫。

    JAVA手機網[www.cnjm.net]

       3、Applet、AWT、Swing這些知識在J2ME中根本使用不到。

    JAVA手機網[www.cnjm.net]

      簡單說這么多,希望學J2ME的朋友們能少走一些彎路,不足之處希望大家積極指正和補充。
      二、J2ME中暫時無法完成的功能
      列一些J2ME中暫時無法完成的功能,希望大家能積極補充:

    JAVA手機網[www.cnjm.net]

       1、在手機中不更改代碼實現移植,主要指游戲。
       2、動態修改按鈕文字。

    JAVA手機網[www.cnjm.net]

       3、在Canvas上接受中文輸入。

    JAVA手機網[www.cnjm.net]

       4、操作本地資源、例如地址本、已收短信息等。

    JAVA手機網[www.cnjm.net]

       5、制作破壞性的手機病毒。
       6、其他等待大家來補充。
      三、J2ME的跨平臺性
      J2ME技術源于Java,所以也具有JVM的優勢,可以在支持Java的平臺上進行移植,但是現在的J2ME技術在跨平臺上卻做的很糟糕,我們來簡單看一下原因:
      1、手機的屏幕尺寸不一:
      這個主要在界面制作上。如果你使用的是高級用戶界面,比如你做的是應用開發或者用戶登陸、用戶注冊這樣的通用功能時,一般沒有什么問題。
      如果你使用的是低級用戶界面,比如你做的是游戲,那么你就需要考慮這個問題了。

    JAVA手機網[www.cnjm.net]

    JAVA手機網[www.cnjm.net]

      2、廠商的擴展API不統一:

    JAVA手機網[www.cnjm.net]

      例如Nokia的擴展API類庫UI系列,在別的手機上或者沒有實現,或者包名不同等等。
      3、手機平臺上實現的bug:
      例如Nokia的7650在實現雙緩沖上有bug,那么在這種機型上運行的軟件就不能使用雙緩沖。其他NOKIA上的一些bug,可以參看:http://www.cnjm.net/resfetch/EKayXl5MlY2NaSIHXDqIdRYYOhhiXo2ZYQgiaQcmaY1ha4iyCKZijcsVFcqNFWSNy6SNZMvczstkOmF1THk_
      4、手機性能問題。
      不同手機的可用內存、最大jar文件都有要求,例如Nokia S40的大部分手機支持的最大jar文件為64K,最大可用內容為210K。
      所以現在的手機軟件,特別是游戲都提供支持的機型列表,也才有了手機游戲移植人員的存在。
      四、學習J2ME可以從事的工作種類
      現在J2ME技術可以說相當的火暴,這里介紹一些學好了J2ME之后可以從事的工作的種類:
      1、J2ME游戲開發人員
      根據游戲策劃或者文檔要求,在某種特定的機型(以Nokia S40或S60居多)開發游戲程序。這是現在大部分J2ME程序員從事的工作。
      需要熟練掌握:高級用戶界面、低級用戶界面、線程,如果是網絡游戲,還需要熟練網絡編程。
      2、J2ME應用開發人員

    JAVA手機網[www.cnjm.net]

      現在的移動應用還不是很多,但是還是出現了一些,特別是移動定位以及移動商務相關的內容。需要熟練掌握:高級用戶界面、線程和網絡編程。
      3、J2ME游戲移植人員
      參照源代碼,將可以在一個平臺上可以運行的游戲移植到其他平臺上去。例如將Nokia S40的游戲移植到S60上,或者索愛的T618等等。主要是控制屏幕坐標,有些可能需要替換一些API。
      需要熟悉各平臺之間的差異以及相關的技術參數,比如屏幕大小、最大jar文件尺寸等等。
      五、J2ME程序設計的幾個原則
      1、使用面向對象編程。
      雖然使用面向過程編程可以減小文件的尺寸,但是為了以后維護的方便和利于擴展,還是要使用面向對象編程。
      2、使用MVC模式
      將模型、界面和控制分離。現在很多的程序將三者合一,但是如果你做的程序比較大的話,還是建議你進行分離。

    JAVA手機網[www.cnjm.net]

      3、自動存儲用戶設定
      使用RMS來存儲用戶的信息,例如存儲用戶上次輸入的用戶名、密碼、用戶對于系統的設定等,這樣不僅可以減少用戶的輸入,而且對用戶友好。很多程序甚至做了自動登陸等。
      4、一些系統設置允許用戶關閉。如背景音樂、背景燈顯示等。

    JAVA手機網[www.cnjm.net]

      5、將低級用戶界面的繪制動作放在一個獨立的線程里面去。
      6、在需要大量時間才能完成的工作時,給用戶一個等待界面。

    JAVA手機網[www.cnjm.net]

      六、從模擬器到真機測試
      對于J2ME開發者來說,模擬器給我們帶來了很多方便,比如可以在模擬器中調試程序以及很方便的察看程序的效果,但是模擬器也給我們帶來了一些問題,比如模擬器實現的bug等等,所以進行真機測試是必須的。
      1、為什么要進行真機測試?

    JAVA手機網[www.cnjm.net]

      因為模擬器程序可能存在bug,以及真機的性能有限,所以必須進行真機測試。
      2、如何將程序傳輸到機器中?
      將程序傳輸到機器中有如下方式:
       a) OTA下載
       b) 使用數據線傳輸

    JAVA手機網[www.cnjm.net]

       c) 紅外傳輸

    JAVA手機網[www.cnjm.net]

       d) 藍牙
      你可以根據條件,選擇合適的方式。
      3、 真機測試主要測什么?

    JAVA手機網[www.cnjm.net]

      真機測試的內容很多,主要測試以下幾個方面:
       a) 程序的功能
       b) 程序的操作性,是否易操作

    JAVA手機網[www.cnjm.net]

    JAVA手機網[www.cnjm.net]

       c) 程序的大小,比如Nokia S40系列的手機大部分接受的最大文件尺寸為64K
       d) 程序運行速度,速度是否可以忍受。

    JAVA手機網[www.cnjm.net]

      七、從WTK到廠商SDK
      對于J2ME愛好者來說,基本上大家都是從SUN的WTK(J2ME Wireless Toolkit)開始的,但是對于實際應用來說,僅僅使用WTK是遠遠不夠的,所以在學習過程中,必須完成從WTK到SDK的跨越。
      1、廠商SDK的下載地址?
      ·Nokia
      Nokia不愧為手機行業的老大,對于j2me的支持也是一流的,有專門的網站提供SDK和各種文檔說明。
      網址是:http://www.cnjm.net/resfetch/Dbvxamo8cwoKpIh4z44.G4iEykM.MYiOPzEbCpMx8QrKGwv7TD.xao4N
      ·Siemens

    JAVA手機網[www.cnjm.net]

      Siemens對于J2ME的支持也不錯,它提供了SDK,模擬器需要獨立安裝。下載地址如下:
    http://www.cnjm.net/resfetch/BVBDcHC9yrySkj0S7e24pIs9PnCLEqR77T4GZi5wS8qLLu0upMpLjS6SvRIGcD7qku0-i6RLPsq9OjfEPqTCQkUOt6kgPoukIC6kuEJFDnqpxC59cEJFDnqpvYuNDhSpPYuNDrepcIuNDuu3t7epOouNDrc_
      ·SonyEricsson

    JAVA手機網[www.cnjm.net]

      SonyEricsson SDK以及自己的模擬器,下載地址為:
     [url]http://developer.sonyericsson.com/site/global/docstools/java/p_java.jsp/url]
    http://www.cnjm.net/resfetch/BEe.ZGSB34qK5B9NqS2pZHWSH9stlFti26l4xsYfsFt4H-RbeLCKlGLEYi0fgeRisGSKlB-SsC0fQ5RFv6lkW0PGgQ__
      ·Motorola
      Motorola提供了專門的SDK,內部包含模擬器,下載地址為:
    http://www.cnjm.net/resfetch/EKayXl5MlY2NPj4-OiYHXgeIBxZiazqIByaNJgdeB2sHImGNTIh1gAcmYjrBdUw_

    JAVA手機網[www.cnjm.net]

      ·SamSung

    JAVA手機網[www.cnjm.net]

      SamSung也提供了專門的SDK和模擬器,下載地址為:
    http://www.cnjm.net/resfetch/CnUnZGQjjsPDP7oJunRUI7phlNiAL9hs4OwvVP9FdLqUb1Qvw7rg7MOjYVTgZPn9VOC6w...2MP..9j5L4BF4JRL2CPfI.kvuuBs-UU.BC4p.v4_
      ·NEC:
      NEC也提供了集成模擬器的SDK,下載地址為:

    JAVA手機網[www.cnjm.net]

    http://www.cnjm.net/resfetch/Ig9UMDBaS5eXGxsbLMm43HD4NMZquMmDLNzh-JfcyQ__
      2、廠商SDK和WTK有什么不同?

    JAVA手機網[www.cnjm.net]

      廠商SDK最簡單的理解就是在WTK的基礎上增加了自己的模擬器和自己的擴展API。也就是說,你在使用廠商的SDK時,可以使用廠商的擴展類庫,例如Nokia的UI類庫,和廠商自己的模擬器而已。每個廠商的擴展API都不多,而且不盡相同。
      3、如何使用?
      有些廠商SDK的使用都和WTK相同,例如SamSung。Nokia提供了獨立的界面來開發,但是這個界面在實際開發中使用不多。

    JAVA手機網[www.cnjm.net]

      4、廠商SDK的問題

    JAVA手機網[www.cnjm.net]

      廠商SDK實現過程中,有一些bug,而且和真機實現不一致。例如NOKIA的混音播放問題等等。
      八、在J2ME中獲得手機IMEI的方法
      IMEI是Internation mobile entity identification的簡稱,在手機中輸入*#06#可以顯示該數字,長度為15位,全球唯一,永遠不會沖突,所以可以作為識別用戶的一個標志。

    JAVA手機網[www.cnjm.net]

      下面是在J2ME中獲得IMEI的方法:
      1、MOTO系列的手機可以通過讀取系統的IMEI屬性獲得,代碼如下:

    JAVA手機網[www.cnjm.net]

       String imei = System.getProperty("IMEI");
      2、SIEMENS系列的手機可以通過讀取系統的com.siemens.IMEI屬性獲得,代碼如下:
       String imei = System.getProperty("com.siemens.IMEI");
      九、J2ME網絡連接中顯示問題的解決辦法

    JAVA手機網[www.cnjm.net]

    JAVA手機網[www.cnjm.net]

      在網絡編程中,有些時候會出現一些在沒有接收到網絡數據就顯示界面的,造成界面顯示不符合要求(例如公告顯示,會先顯示公告的背景圖片再顯示公告信息),這里提一個簡單的解決辦法給大家:

    JAVA手機網[www.cnjm.net]

      解決這種情況的方法分成三個步驟:
      1、在需要顯示的界面中,調用發送網絡數據的方法。每次顯示時調用該構造方法,不調用Display的setCurrent方法顯示。

    JAVA手機網[www.cnjm.net]

      2、顯示等待界面(例如進度條等),給用戶提示,在進行網絡連接。
      3、在處理網絡反饋的數據完以后,調用Display的setCurrent方法顯示顯示當前界面。

    ===========================================================================

    本文轉自解正宇朋友的《手機Java之怪現象》,個人感覺對我等初學者幫助非常大,故此轉貼,由于不知道原文所出網址,這里表示歉意。

     

     

    下面記載的都是手機java實現中各種奇怪的毛病,bug,或者……特性,是根據某項目的開發經驗總結出來的。但是涵蓋的手機型號還是有限。因此很有可能某些“特性”會存在于更多的采用了相同JVM(比如平臺相同、生產廠商)的手機上。
                                                                                      == 早期S60的內存泄漏 ==
    這個bug可以上溯至2003年,甚至更早。表現為java應用中如果使用了Class.getResourceAsStream("本地文件")無法釋放其占用的內存,是的,沒有任何辦法,無論是調用獲得的的InputStream實例的close()或將其設為null,甚至顯式強制System.gc(),都沒有效果。結果就是至少和本地文件同尺寸的內存成為了無法回收的垃圾。這個問題還影響到以Class.getResourceAsStream()為基礎的Image.createImage()(這個是最要命的,如何能夠不使用圖片資源呢!)。
    這個bug據說在新的S60上已經解決了。但是Nokia3230(4.0526.2ch)、Nokia7610(6.0525.0ch)都存在這個問題。對于這些個有問題的機型,在java程序中是無法完美解決這個問題的,只能盡量避免。比如集中、統一載入資源,永不釋放(也就是說,盡量控制泄漏的次數)。當然,這會對已有代碼造成很大影響。畢竟手機java應用是內存受限系統的典型,大多數情況下,珍貴的內存中只保留需要的資源。
                                                                                      == 鍵盤響應事件 ==
    在MIDP1中,獲取鍵盤事件只能自己實現Canvas.keyPressed()。但是MotorolaE398和SonyEricssonK700c的實現卻很奇怪。表現為左右軟鍵有可能在這個方法中捕獲不到。而是否能夠成功捕獲,取決于keyPressed()方法中代碼的行數……
    我承認我沒徹底搞清楚這其中的玄機。鬼知道Motorola和SonyEricsson是怎么實現的JVM。我只知道把keyPressed中的所有代碼提取到另外一個函數中,在keyPressed只把參數傳遞給新函數,問題就消失了……
                                                                                      == 超慢的drawRegion ==
    除了N-Gage QD,幾乎所有的NokiaS60手機都實現了MIDP2的支持。MIDP2中,最為重要的幾個特性之一就是Graphics.drawRegion。這個API可以方便的將圖片旋轉、剪切之后畫到畫布上。
    但是,這個API在Nokia3230、Nokia7610等手機上的實際性能表現讓人實在不敢恭維。于是,這個最重要的API成了擺設……沒什么怎么辦,只能急需延用MIDP1的做法,自己實現剪切和旋轉,或者像我一樣懶,直接要求美工把旋轉之后的圖片全都做出來……
                                                                                      == 詭異的內存容量 ==
    按照官方Spec,Java在Nokia3125上的可用內存(即Java Heap Size)為512k。但是實際測試的結果是,Nokia3125只有412k左右的實際內存,相差整整100k。不過好在Nokia3125并不是種市場保有量很高的型號。但是它是我正在使用的型號……
                                                                                      == 無法repaint ==
    這個問題只存在于SonyEricssonK700c。表現為在keyPressed()中調用repaint()進行屏幕重畫沒有任何反映。
    解決辦法是,在keyReleased()中補一個repaint()……
                                                                                      == UTF8 ==
    還是SonyEricssonK700c的問題。問題存在于new String(byte[], charset)上。也就是說,當獲得了某個byte[],并希望用UTF8作為字符集將其轉換為字符串的時候,使用上述方法在SonyEricssonK700c上會出現丟失字符的現象。這個現象很詭異,以至于我目前沒有搞清楚什么情況下會丟失字符(我甚至專門寫了個測試程序在真機上跑,得出的結論是丟失字符的原因可能會很復雜,簡單的拿被丟掉字符附近的一個子串來測沒有任何問題)。
    幸虧還是有解決辦法的。不用new String就完了,而要用更加麻煩的辦法,比如像我一樣,用ByteArrayInputStream,外面套InputStreamReader(bais, "UTF8"),然后用StringBuffer一個一個char讀進來,最后再toString()……
                                                                                      == 不可靠的copyArea ==
    這是Motorola機器上的問題,V3和E398都有。copyArea是Graphics的作整塊屏幕像素copy的常用API(2D動態背景的游戲幾乎是必不可少)。按照Sun官方的Spec,手機廠商有義務來保證其API實現不存在覆蓋沖突問題。但是Motorola顯然做得不夠好。在Motorola手機上使用這個API會隨機產生貼圖混亂的情況……
    解決辦法是自己實現另外一套機制。比如使用另外一張至少和屏幕同樣大小的Image作為緩沖,用兩次drawImage來替代copyArea……不過這個方法顯而易見的缺點是消耗了更多的內存(那可是不小于屏幕尺寸的Image啊!)。如果內存實在吃緊,只能退而再求其次,作為緩沖的Image繼續縮水,drawImage的次數繼續增加……不過這個時候需要自己手工解決覆蓋沖突……
                                                                                      == 無法安靜下來的3220 ==
    不知道這個問題是不是在S40平臺上都有,手里S40又支持MIDI的手機實在是太少了……
    3220的一個很明顯的特征就是聲音大。以至調用了VolumeControl.setLevel(0)之后還是有聲音,和Sun官方的Spec完全不符……沒辦法,只能在需要靜音的時候,再補一個VolumeControl.setMute(true)。
                                                                                      == 永不ready ==
    這是一段手機java獲取網絡數據的常用代碼:while(InputStream.ready()) { InputStream.read() }。
    但是經測試,在Nokia3230上,這個ready永遠返回false……沒辦法,如果不改上述代碼的話,就自己實現一個繼承類吧。

    posted on 2007-07-27 17:27 蘆葦 閱讀(1035) 評論(1)  編輯  收藏 所屬分類: IDEJAVA

    Feedback

    # re: 關于J2ME開發的一些資料 2007-08-22 22:08 shevchenko
    謝謝,很有幫助  回復  更多評論
      

    主站蜘蛛池模板: 91精品免费不卡在线观看| 免费一级特黄特色大片在线 | 亚洲av永久无码嘿嘿嘿| 日韩免费视频播放| 国产一级高青免费| 亚洲一级毛片在线播放| 亚洲 国产 图片| 四虎在线最新永久免费| 国产亚洲综合一区二区三区| 亚洲爱情岛论坛永久| 四虎成人免费观看在线网址| a级毛片毛片免费观看久潮| 亚洲乱码日产精品BD在线观看| 四虎免费影院4hu永久免费| 久久久99精品免费观看| 狠狠入ady亚洲精品| 久久久久亚洲av无码专区导航| 国产精品久久免费视频| 久久免费的精品国产V∧| 黄色a三级三级三级免费看| 亚洲高清中文字幕| 久久久久久A亚洲欧洲AV冫| 日韩一区二区a片免费观看| 久久精品免费观看| 免费在线观看一区| 国产成人亚洲精品| 久久夜色精品国产亚洲AV动态图| 国产成人免费永久播放视频平台 | 特黄aa级毛片免费视频播放| 久久久无码精品亚洲日韩京东传媒| 免费国产在线观看| 岛国大片免费在线观看| 日韩插啊免费视频在线观看| 日本特黄特色AAA大片免费| 亚洲中文字幕久久无码| 亚洲经典在线中文字幕| 黑人精品videos亚洲人| 亚洲日本韩国在线| 免费国产成人高清在线观看麻豆| 国产日本一线在线观看免费| 三年片在线观看免费大全电影|