程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> J2ME學習之溫故而知新篇

J2ME學習之溫故而知新篇

編輯:JAVA編程入門知識
  學習J2ME最重要的部分是把握J2ME的體系結構,J2ME是SUN針對嵌入式消費類電子產品推出的開發平台,事實上它是一系列的技術和規范的總稱。J2ME的核心是Configuration(配置),Configuration的目的是定義一套縱向的API而服務於廣泛的設備,同時VM也是在Configuration一層規定的。在Configuration的上面是Profile(描述),他是運行在Configuration上面的,它的目的是為一類具有某些重要特性的設備提供支持。這些特性都很重要,但是它們又不是在所有的設備上都具有的。SUN對當前市場上的設備進行硬件層的抽象根據設備的處理器、內存和網絡連接能力提出了兩個標准的配置,這就是CLDC和CDC。
  
  目前國內提及J2ME就指CLDC+MIDP事實上是不准確的,忽略了更為強大的CDC是難以原諒的。配置和描述的配合異常的靈活,在一個配置上面可以同時支持多個描述,例如在CLDC上我們可以運行基於MIDP上的程序,假如設備支持的話你還可以運行Bluetooth這樣的可選包。把握了J2ME的體系結構我們就不會在J2ME的學習中迷路。假如你要具體了解J2ME一路發展的歷史,可以下載JSR規范讀讀,地址是http://jcp.org。
  
  目前流行的開發是手機開發,因此我們在本文中將主要講述CLDC+MIDP的主要內容,下文的J2ME也特指CLDC+MIDP,但是我們必須清楚J2ME並不是指CLDC+MIDP。
  
  J2ME的內容並不多,假如你讀讀MIDP的api的話,發現總共也就是那麼百十個類。比起J2SE的幾千個類庫真是小巫見大巫,之所以提供這麼精簡的類庫給開發人員主要原因是移動信息設備的資源受限特性。在CLDC1.0中只定義了三個包Java.lang,java.io和java.util。這構成了CLDC的語言基礎,在這層同時還包括了KVM。在開發J2ME程序的時候切忌想當然,因為並不是所有的J2SE類庫都在J2ME中得到了支持。
  
  學好J2ME最快捷的方式就是編寫J2ME的應用程序,多讀代碼、多寫代碼。在J2ME中提出了一種新的應用程序模式——MIDlet,這個類定義在javax.microedition.midlet.MIDlet中,我們的MIDlet必須擴展這個類並實現它的三個抽象方法startApp(),pauseApp()和destroyApp()。方法同時也反映出了MIDlet的生命周期,MIDlet的生命周期是由AMS(application management software,以前叫做JAM)治理的。關於MIDlet的生命周期可以仔細參考一下API doc。
  
  在CLDC推出後兩個月的時間,SUN就推出了MIDP1.0,讓人興奮的是在MIDP中提供了GUI,這樣開發人員可以很方便的編寫J2ME應用程序了,GUI得類庫在javax.microediton.lcdui中定義,在MIDP2.0中SUN增加了對游戲開發的支持推出了javax.microedition.lcdui.game包,方便開發人員開發游戲。MIDP中的UI並沒有采取AWT或者SWING的設計思想,因為他們是針對PC的,在手機等設備上主要的交互還是通過按鍵完成的,因此針對鼠標鍵盤事件機制設計的AWT/SWING並不適合J2ME平台。在把握UI的時候,我們在頭腦中應該清楚的知道J2ME平台的界面和事件處理是區分高級和低級的。高級界面和事件處理相對簡單,但是速度快、可移植性好。低級用戶界面和時間處理相對復雜,但是功能強大、可移植性差。通常在開發游戲的時候我們多用低級UI。
  
  在J2ME平台中提供了一個小型的數據庫,他就是Record Management System。他的數據是存儲在非揮發性存儲器上的,因此不會因為程序的退出以及手機的關機而丟失,從而為J2ME平台提供了持久性存儲。RMS的設計異常的小巧,他主要負責存儲數據和標記數據,數據存儲是面向子節的,RMS規范並沒有說明什麼數據能被存儲,只要數據可以轉換為子節,都可以被存儲。RMS是通過id來標志數據的,但是他並不是索引。設計小巧當然適合在手機上運行了,但是加重了開發人員的任務,我們必須負責存儲數據和讀取數據並表示數據,在本站有專題介紹RMS,請參考。
  
  在J2ME中非常重要的框架就是GCF,它是在javax.microediton.io裡面定義的,提供了聯網的能力。在MIDP2.0中更是提供了對TCP/IP層聯網的支持。在GCF中核心是Connector,而面向接口的設計使得GCF的擴展性非常出色。我們在開發聯網程序的時候必須要涉及到的問題就是多線程問題。因為聯網操作必須在另一個線程中完成,而不能再主線程內,這樣是為了避免堵塞。這時候你應該熟悉到其實學好J2ME必須要有堅實的J2SE的基礎。
  
  在J2ME中有個非常重要的概念就是可選包,可選包是針對特定設備功能提出的,比如有些設備可以支持移動多媒體,那麼你就可以使用MMAPI進行相關的開發。
  
  事實上設備廠商同時會開發一些針對自己設備的API給開發人員使用,一旦你使用了他們的API那麼你的應用程序就喪失了可移植性,比如Nokia 6108的程序不能在Motorola 388c上運行。SUN為了改善這些分裂API的問題在JSR185中進行了一定強度的規范,也就是我們所知道的JTWI,JSR185並沒有提供新的API,只是對實現JTWI的設備進行了規范,比如Heap空間至少為256K等。具體資料可下載JSR規范讀讀看。
  
  希望這篇文章可幫助J2ME開發者理一下脈絡
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved