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

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

J2ME(CLDC/MIDP)簡介

2019-11-18 12:45:00
字體:
來源:轉載
供稿:網友

  名詞梳理
  在正式開始介紹J2ME之前,這里我列出一些常見名詞,方便與下文參照:
  
  J2ME(java2 Platform, Micro Edition) Java2平臺微型版
  
  CLDC(Connected, Limited Device Configuration) 連接受限設備配置
  
  CDC(Connected Device Configuration)連接設備配置
  
  MIDP(Mobile Information Device PRofile) 移動信息設備描述
  
  KVM(The K Virtual Machine) K虛擬機
  
  背景
  隨著無線應用與嵌入式系統的愈來愈受到人們的重視,SUN也推出了J2ME(Java2 Platform, Micro Edition)來迎合這一未來的發展趨勢。
  
  實際上這道也不能算是最新推出,熟悉Java歷史的人都知道,Java原先本是為了開發消費性電子產品而研制的。誰知,無心插柳柳成蔭,因在網絡應用上的出色表現而流行,以至到現在的在serverside上的應用,如J2EE、EJB等等,發展的越來越龐大。這次sun又推出了J2ME,這實質是殺了個回馬槍。至于實際表現如何,我們還得拭目以待。
  
  sun認為,未來的信息設備將比我們今天的更為customizable 和 personal。這一點我們已經可以從手機和pda的流行程度看出。所以為了開發面向這些設備的applications。sun推出了J2ME。于是現有的Java版本變為了三個:J2EE ,J2SE和J2ME,分別對應與不同的目標設備,如下圖所示。
  
 J2ME(CLDC/MIDP)簡介(圖一)

  
圖1 Java版本的劃分和針對的設備

  
  CLDC/MIDP的基本結構
  粗略的說j2me把設備分為兩類,一種是聯接設備( connected device),一種是有限聯接設備(Connected, Limited Device)。前一種對應于那些有電源的,電力充裕,較大的設備。例如:電視機,冰箱等,后一種對應于主要使用電池,小型的設備,例如:手機,pda等。
  
  這里我主要只涉及第二種,有限聯接設備(Connected, Limited Device)。
  
  sun把J2me的實現分為兩層:configuration 和 profile。
  
  configuration包括虛擬機(virtual machine),核心的類庫與API。configuration層定義一個java虛擬機的特性與java類庫的最小子集。也就是說,configuration層提供了開發人員一個最基礎,最核心的Java平臺。因為j2me把設備分為兩類:聯接設備(connected device)和有限聯接設備(Connected, Limited Device)。對應這兩種設備就有了兩種J2ME configuration。分別為CDC(Connected Device Configuration)和CLDC(Connected, Limited Device Configuration)。這里請注重,CDC使用經典的javaVM,而CLDC使用的是KVM(The K Virtual Machine)。KVM是sun專門為使用16/32位RISC/CISC微處理器或控制器,并其可用內存為160kb~512kb的的設備而開發的。KVM比較小,通常只有128K或更少。
  
  Profile層也包含一組API,主要針對于特定的某一族系的設備而定義。profile層在特定的
  configuration層上實現,而我們程序員則負責在特定的profile上編寫應用程序。對于手機,pda等Connected, Limited Device。它們的profile層稱為MIDP(Mobile Information Device Profile)。于是MIDP與CLDC合在一起就構成了一個完整的J2ME架構。順便說一句,對于MIDP上的應用程序sun也有獨特的叫法,它們被稱為MIDlet。你是不是覺得有點眼。想想java中的applet。下圖顯示了開發手機應用的結構。
  
 J2ME(CLDC/MIDP)簡介(圖二)

  
圖2 CLDC/MIDP的結構

  
  深入理解CLDC/MIDP
  CLDC的目的
  
  為小型的,且資源有限,Connected Limited的設備定義一個標準的Java平臺。
  答應動態的向這些設備發布內容與應用程序。
  方便第三方軟件廠商與開發者向這些設備移植內容與應用程序。
  CLDC的范圍
  
  Java語言與虛擬機的特性
  核心Java類庫(如java.lang.*, java.util.*)
  輸入/輸出
  對網絡的支持
  對安全性的支持
  對國際化的支持
  CLDC不包括的范圍(即由MIDP解決的)
  
  對應用程序life-cycle的治理(就是指一個應用程序是如何安裝,運行,刪除的)
  UI界面(User Interface)
  Event處理
  高級應用程序模式(這里指用戶與應用程序的交互)。
  CLDC的安全性
  
  低端的基于虛擬機的安全性由下載時對class文件的審核(verification)步驟來保證。(假如你寫過并編譯過MIDlet程序,就會知道這一步是必須的。這里有一個概念就行了,我會在后面講述如何創建MIDlet程序時,具體介紹具體的步驟)。基于應用程序的安全性通過使每個應用程序分別運行在相對獨立的封閉環境中來保證并且處于被保護的系統package中的類不能被應用程序重載(overridded)。
  
  對于Java語言支持的非凡方面
  CLDC總的來說是與Java語言完全兼容的,但需注重以下幾點:
  
  不支持浮點數據類型(即沒有float和double)(這實際上主要是由于CLDC所面向的設備,其硬件因其內存限制或是基于安全性的考慮不支持浮點運算)
  
  不支持類實例(class instance)的終結(finalization),即不存Object.finalize()方法。(注:finalization指的是java中提供的有別與garbage collection的另外的一種對象清理方法。具體可參看侯捷老師譯的BrUCe Eckel的《Thinking in Java 第二版》,可以在www.jjhou.com中下載)
  
  有限的錯誤處理,即大部分Java.lang.Error的子類都未被支持。與此相反,CLDC包括了相當完備的異常(exception)類。
  
  對于Java虛擬機(Java Virtual Machine)支持的非凡的方面
  
  實質上CLDC在其嚴格的內存限制下達到了對Java虛擬機相當程度的兼容性。不過還是有下列不同點:
  
  不支持浮點數據類型(沒有float和double)
  不支持JNI (the Java Native Interface )不支持用戶自定義的Java級的類載入器(class loaders )
  沒有反射(reflection)特性(注:reflection指java通過java.lang.reflect提供的,可以對類的能力進行分析的功能。常用來對類的結構進行檢查,在JavaBeans上有廣泛運用可參見Gary Cornell的Core Java2 volumeI,II,機工有出中譯本)
  不支持線程組(thread groups)或守護線程(daemon threads)
  不支持類實例(class instance)的終結(finalization)
  沒有弱參考(weak references)(注:weak reference提供了一種解決指向已經被garbage collector清除的對象的方法。在Java2中被介紹。具體請參考java.lang.ref API 文檔,和sun網站上關于Reference Objects和Garbage Collection的文章。)
  有限的錯誤處理(error handling)
  類文件審核過程(classfiles Verification)
  
  CLDC要求其下層的虛擬機能夠辨別并拒絕非法的class文件。但由于CLDC本身面向小內存消耗的小型設備這一前提。其類文件檢測機制與J2SE中定義的標準類文件審核機制還有所不同。請注重看下圖:
  
 J2ME(CLDC/MIDP)簡介(圖三)

  
圖3 CLDC的類審核機制

  請注重上圖所示CLDC中的預審核(preverification)過程。這是CLDC區別于通常的類文件審核過程的要害。如上圖所示,當源程序被編譯后,必須被預審核器預審核,然后才能被下載到目標設備上去。之所以有這一步驟,主要是為了減輕KVM中審核器的負擔,加快審核速度。就像我前文提到的,這是出于對CLDC支持的硬件的考慮(究竟手機和PDA并沒有我們PC機那樣奔騰的“芯”呀!^-^)。這里記住這個概念就行了。具體的操作方法我會在以后講述編寫MIDlet程序時介紹。
  
  CLDC的類庫API
  假如不嚴格的說,CLDC的類庫是J2SE的一個小的子集,有以下這種近似關系成立,即J2SE包含CDC包含CLDC。但要注重CLDC并未完全包含于J2SE,它還包括一些專門針對無線設施的類。所以可以把CLDC的類庫簡要劃分為兩部分:從J2SE繼續的類和CLDC專有的類。
  
  1. 從J2SE繼續的類
  
  這部分包括三個package,即java.lang,java.util和java.io。注重即使這些從J2SE繼續的的類,也是大大“縮了水”的。例如java.util的類與接口由J2SE的47個縮減到10個。另外兩個也有相應縮減。
  
  系統類
  
  From java.lang:
  Object, Class, Runtime, System, Thread, Runnable,
  String, StringBuffer, Throwable
  
  數據類型類
  
  From java.lang:
  Boolean, Byte, Short, Integer, Long, Character
  
  容器類(container class)
  
  From java.util:
  Vector, Stack, Hashtable, Enumeration
  
  I/O 類
  
  From java.io:
  InputStream, OutputStream, ByteArrayInputStream,
  ByteArrayOutputStream, DataInput, DataOutput,
  DataInputStream, DataOutputStream, Reader, Writer,
  InputStreamReader, OutputStreamWriter, PrintStream
  
  日期與時間類
  
  From java.util:
  Calendar, Date, TimeZone
  
  附加的實用類
  
  java.util.Random, java.lang.Math
  
  異常類(Exception Classes)
  
  From java.lang:
  Exception, ClassNotFoundException,
  IllegalaccessException, InstantiationException,
  InterruptedException, RuntimeException,
  ArithmeticException, ArrayStoreException,<

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临汾市| 东莞市| 桐梓县| 资中县| 墨玉县| 枣强县| 连城县| 博罗县| 康乐县| 浦东新区| 巴南区| 苏州市| 灵璧县| 武川县| 屯门区| 綦江县| 拜城县| 商城县| 望都县| 鹤庆县| 蛟河市| 秭归县| 嘉义市| 抚远县| 灌阳县| 五家渠市| 铜川市| 泾阳县| 恩施市| 呼玛县| 武邑县| 皮山县| 安庆市| 凤山市| 凉城县| 葫芦岛市| 高台县| 巍山| 高邮市| 兴宁市| 双城市|