程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 勃勃生機的J2ME技術簡要標准介紹

勃勃生機的J2ME技術簡要標准介紹

編輯:JAVA編程入門知識
  J2ME的標准很多,這裡我們只簡要介紹幾個基本而重要的標准。讀者也可以直接去查標准的正式文檔,在JCP網站可以找到所有J2ME標准和規范,包括還在提出和審核階段,沒有正式成為標准的提案。
  
  雖然J2ME標准繁多,但只要把握住標准劃分的原因就很輕易把握。在這個技術飛速發展的領域,我們不能把眼光局限於標准的字面含義,而要靈活把握,把握其精神。比如,CLDC和CDC的定義中具體的最小內存需求僅僅是"最小的",隨著硬件能力的飛速發展,很有可能一些界限會變得模糊。PDA本來應該屬於CLDC的范圍,但是Compaq的iPaq上卻實現了CDC。以後的下一代PDA有64M內存並不意外,在其上實現CDC也是完全可能的。但是,從功能的角度,應該還是CLDC以及PDA Profile更適合於PDA的條件。到那時,具體的實現就要看廠商和開發者的選擇了。還需要注重的是,由於Profile是建於Configuration之上,作為對Configuration的擴展,因此Profile必須Configuration的支持。有的文章在講到MIDP的內存需求時,說MIDP需要最少256K,這是指MIDP本身。而有的文章說MIDP需要最少768K,那時因為把作為基礎的CLDC所需要的512K算進去了
  
  CLDC
  CLDC(Connected, Limited Device Configuration)針對個人化的移動的有限連接信息設備,例如智能手機,雙向呼機,PDA等等。其要求是:
  512 KB 以下內存
  有限能源供給(通常使用電池)
  有限或非持續網絡連接
  簡單的用戶界面(甚至沒有)
  在如此嚴格的限制之下,CLDC 只包括四個包,其中三個來自標准 Java 規范並且作了縮減(java.lang、java.util 和 java.io),另一個專門針對CLDC (javax.microedition)。
  
  包 描述 類和接口數目
  java.io 系統輸入輸出 18
  java.lang Java 編程語言的基本類 38
  java.util 集合、日期和時間支持、各式實用工具類 10
  javax.microedition 通用連接框架(Generic Connection Framework) 10
  
  CLDC必須照顧最苛刻的硬件條件,因此去掉了許多重要的類和特征,只保留了最核心的一些基本類。例如RMI和映射因需要內存太多而被捨棄,錯誤處理要求的代價太高,也被刪除了。許多設備不能支持浮點數,更不用說雙精度類了。還有許多設備沒有或不提供訪問一個文件系統的功能或權限。不過請放心,對於那些能夠支持更多特征的設備,它們所需要的這些功能或者超出標准J2SE要求的功能,都可以由針對此類設備的Profile來補充。
  
  CLDC中唯一新增的javax.microedition包定義了一個通用連接框架(Generic Connection Framework,GCF)。通用連接框架把J2SE中的文件,sockets,HTTP請求和其他輸入/輸出機制的概念抽象為更簡單的一套類。可以說,它提供了java.io和java.net的同樣功能,卻不需要設備的非凡能力。與底層操作系統無關是Configuration的基本要求。通用連接框架可以看成是構造通訊驅動的框架,這一點類似於J2SE中的JDBC,後者是一個構造數據庫驅動的框架。通用連接框架並沒有定義對任何特定協議的支持,但是在Sun的一個CLDC參考實現中確實包括了對一些通訊協議的支持,這點使許多人感到困惑。那些協議只是一些例子,協議的支持應該在Profile層或者專門針對某設備的擴展中定義。
  
  由於虛擬機處於Configuration中定義平台的核心,Configuration和虛擬機是緊密相關的。既然CLDC的硬件要求如此苛刻,對其虛擬機也就有著非常高的要求。Sun提供的參考實現是KVM(K Virtual Machine)。KVM是完全從頭開始編寫的,其設計目標包括:
  虛擬機的大小和類庫為50到80KB左右
  內存占用為幾十K
  在具有 16 位和 32 位處理器的設備上,有相當的性能
  高度可移植和可擴展,特定於機器和/或平台的代碼的總量很少
  多線程和垃圾回收是獨立於系統的
  可以對虛擬機的組件進行配置,以適合於特定設備,從而增強了靈活性
  
  KVM的實現是相當成功的。最早在1999年JavaOne大會的時候,作為Sun的Spotless計劃派生結果,Sun分發了許多Palm V,提供了Palm OS上的第一個KVM版本和一個實驗性的類庫com.sun.kjava。這一KVM非常小而緊湊,只需要幾十K內存。而com.sun.kjava類庫提供了Palm的圖形用戶接口,Palm數據庫訪問,簡單的集合類等等。將兩者結合,開發者就可以開發Palm上的Java應用,因此它受到了開發者的廣泛歡迎,網上也有了許多教程和示例代碼。事實上,到目前為止,這都是在Palm上開發Java程序的唯一合理途徑。CLDC沒有定義用戶界面等API,MIDP並不適合PDA,對應的最合適J2ME標准是PDA Profile,但是尚未完成。許多開發者強烈要求Sun在正式的J2ME標准中繼續支持它,但是Sun已經放棄了這一技術,而且並不保證正式的PDA Profile與之的兼容性,因此不建議讀者過多研究。
  
  由於這一歷史原因,造成了很多名詞上的困擾。許多早期的文章把這一KVM與com.sun.kjava包合稱為KVM,表示這一技術,而現在所說的KVM應該是單單指Sun的CLDC虛擬機參考實現。甚至還有人用K Java作為J2ME的代稱,表示基於KVM的Java,這很輕易和正式的J2ME標准以及早期的com.sun.kjava包相混淆,讀者在看這類文章時需要注重文章的時間和背景,並采用嚴格的正式名稱。
  
  目前Sun還正在開發KVM的一個高性能版本--Project Monty虛擬機以用於下一代的移動信息處理設備。它采用了Hot Spot的技術,性能將比現有的KVM將近高一個數量級。
  
  雖然KVM作為Sun的參考實現最經常被提到,不過並不等於一定要用KVM。其它公司的虛擬機只要滿足相應的Configuration裡的定義,通過兼容性測試,一樣可以作為Configuration的虛擬機。目前IBM WebSphere Micro Environment,已經通過了"Java PoweredTM"認證,其J9虛擬機在相當多的平台上通過了J2ME兼容性測試:
  
 

  MIDP
  MIDP(Mobile Information Device Profile)定義了針對移動信息處理設備(主要指智能手機和一部分具有無線通信功能的PDA)的圖形界面,輸入和時間處理,持久性存儲,無線電話網絡連接之上的一些消息處理(例如短消息),安全等等API,並且考慮到了移動信息設備的屏幕和內存限制。類似於J2SE中的Applet框架,MIDP提供了基於javax.microedition.midlet 包的MIDlet應用程序框架
  
  PDA Profile
  PDA Profile將在CLDC的基礎上,提供針對PDA的用戶界面,數據存儲等擴展API。用戶界面部分適用於有限大小和色彩的顯示,為了支持開發者已有的經驗基礎,將是AWT的一個子集,也有可能在AWT子集之上加入MIDP用戶界面組件。而存儲機制將是簡單的,平台無關的,類似於MIDP中的存儲,為應用程序、數據、配置/環境信息提供簡單的數據存儲。
  
  CDC
  CDC(Connected Device Configuration)針對有固定的不間斷網絡連接的共享連接信息設備,如置頂盒(set-top boxes),Web-TV,支持Internet的有屏幕電話,汽車娛樂/導航系統等。
  
  CDC要求為Java提供至少2M的內存,這可以是ROM加上RAM,也就是說,Java虛擬機和核心類庫很有可能放在ROM或者Flash裡。事實上,下一代無線手持設備完全可以滿足CDC的需求。
  
  CDC是CLDC的完整超集,包含了所有的CLDC規范。另外,在相對充裕的條件下,它支持J2SE的標准 Java 虛擬機和一部分核心類庫。
  

  其次,CDC支持標准的J2SE虛擬機,這只是Java平台的基礎,並不包括建築於平台基礎之上的各種類庫。特定設備需要的特定類庫由相應的Profile來定義。還是那個要害:Configuration定義的是一類設備的與設備無關的最小平台,因此,諸如用戶界面之類的類都被分離,留在Profile中定義。
  
  雖然CDC支持標准的J2SE虛擬機,但是標准的Java虛擬機顯然無法適應有限的資源環境。為此需要專門定義一個虛擬機,稱為CVM(開始的時候,CVM代表Compact Virtual Machine,但是後來Sun的工程師認為這有可能與KVM相混淆,因此現在C並不代表特定的含義)。CVM除了支持標准J2SE虛擬機的所有特性外,還支持許多嵌入系統需要的特性,更適合於在資源限制條件下運行,移植性很強。目前Sun提供了Linux和VxWorks之上的CVM參考實現(reference implementation)。
  
  Foundation Profile
  Foundation Profile提供除了用戶界面以外CDC所缺少的幾乎所有標准J2SE核心類庫,作為其他所有Profiles的基礎(我們看到,多個Profile可以共存,也可以疊加)。
  
  Personal Profile
  Personal Profile針對那些資源相對有限,但是需要高度的Internet和WEB連接支持的設備,例如Web-TV,汽車導航系統等等。它在Foundation Profile的基礎上提供了網絡特性以及支持Java applets的 GUI。
  
  Personal Profile的前身是Personal Java,Personal Java是Sun為資源限制設備創建 Java 平台版本的早期嘗試。Personal Profile將與Personal Java 1.1和1.2向後兼容。
  
  RMI Profile
  RMI Profile在Foundation Profile的基礎上提供RMI支持,將答應網絡設備與其它系統應用程序(不一定是J2ME的)交互操作。(
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved