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

J2ME簡介

編輯:J2ME
如果您曾經http://www.javasoft.com ;網站上查詢有關Java 2 Micro
Edition 的資料,十之八九會被一大堆的技術名詞搞的一頭霧水。什麼 K
VM ,什麼CLDC 、CDC 、MIDP ,後面還冒出了Personal Java 、Embedde
d Java以及JES 等名詞。雖然名為Java 的微小版本,可是它的世界可真
是不小,讓我們滿肚子「見山不是山,見水不是水」的疑惑。的確,在我
剛開始接觸 Java 2 Micro Edition 的時候,就感覺到這個玩意兒實在越
看越讓人摸不著頭緒。因此在本章中,我捨棄了技術上的細節,希望帶大
家從巨觀的角度來看待 Java 2 Micro Edition 的世界。希望讀過本章之
後,可以使大家體驗「見山是山,見水是水」,一切豁然開朗的感覺。首
先,我們必須先對Java 2 Micro Edition 在整個Java 技術之中的定位做
Java手機網[www.cnjm.Net]個了解。 
 
 ■各種不同版本之Java 程序的開發
 
如前面所說,各種不同的Java 版本,在其支援的核心類別函式庫之完整
性以及所支援的 Java 基本型別這兩件事情上都有所差異,也就是說,不
管您開發的是企業所使用的Java 程序、嵌入式裝置上執行的Java 程序、
浏覽器上執行的Applet ,或是在PC 上執行的應用程序。您都必須在您的
電腦上先安裝 J2SE ,然後再安裝各種版本的核心類別函式庫以及額外的
Java手機網[www.cnjm.Net]擴充類別函式庫,如此才能成功地開發各種不同目的的Java 程序。J2SE
所提供的Java 編譯器(Javac.exe)可以幫助我們編譯各種不同平台上的Ja
Java手機網[www.cnjm.Net]va 程序,而J2SE 所提供的Java 虛擬機器(Java.exe)則可以幫助我們在P
C 上先行測試這些程序執行結果的正確與否。另外,Java 編譯器並不會
幫您檢查您的程序是否符合各種平台上所支援的核心類別函式庫與 Java
基本型別。舉例來說,雖然我們在前面說過,Smart Card 版本並不支援b
oolean 、byte 以外的Java 基本型別,而且該平台也只支援Java.lang.*
核心類別,可是當我們在撰寫 Smart Card 平台上的程序時,就算在程序
碼裡頭用了boolean 或byte 以外的Java 基本型別,或者使用了Java.lan
g.*之外的其他核心類別,編譯器仍然可以照常幫您編譯出類別檔。這個
時候大家一定開始產生疑惑 --那麼這些程序如果放到Smart Card 上頭執
行的時候,出了問題怎麼辦 ? 難道不會造成Smart Card 上的虛擬機器執
行時發生錯誤嗎 ? 針對這個可能發生的潛在問題,Sun Microsystems 在
各種不同版本的開發套件中,有些會內附檢查器 (checker)或者預先審核
器 (preverifIEr),這兩個工具可以幫助您在將程序放到目標平台之前先
做好檢查和預先審核的工作。檢查器會幫您找出類別檔之中不合目標平台
規格的部分,並提醒你這些地方可能無法在目標平台上執行。因此只要有
檢查器的協助,您大致上可以確定您的程序可以符合目標平台的規定並順
Java手機網[www.cnjm.Net]利執行。 Java Card 的開發套件中就附有檢查器。
 
Java手機網[www.cnjm.Net] 而某些平台的開發套件則附有預先審核器,預先審核器除了做檢查器做
的工作之外,還有一項額外的工作,就是減輕目標平台上虛擬機器的負擔
,要解釋預先審核器這個額外的工作,在傳統的 Java 程序之中,為了安
全上的考量,任何進入執行環境的類別檔 (不管該類別檔是來自本機或是
遠端機器 ),都必須先經過Byte Code 審核器(Byte code verifIEr)的驗
Java手機網[www.cnjm.Net]證,以防止程序在傳送途中遭到惡意的修改,而使得 Java 程序在執行時
對系統有不良影響。經過審核之後,該類別檔才能開始被J 虛擬機器所執
行。如果這個審核的動作在一般的 PC 上執行,速度倒是還能夠接受,可
是一旦放到如 Palm 或是手機這些CPU 較慢、記憶體也比較少的機器上面
就顯得十分吃力了。為了節省寶貴的 CPU 運算時間(既能省電又能夠加速
Java手機網[www.cnjm.Net]程序執行 ),因此,在程序設計師產生能夠讓某些特定平台執行的類別檔
之前,程序設計師必須先在 PC 上使用預先審核器做一些前置的審核工作
,預先審核器會在類別檔之中加入一些特殊標記或符號。如此一來,當這
些程序放到目標平台上執行時,就可以大幅減少在目標平台上做審核時的
時間,藉而加速程序的的啟動及執行速度。因此在J2ME 之下的程序(Spot
let 、MIDlet),其執行步驟變成因為預先審核的關系,執行時Byte Code
 審核器的工作就變少了,也因此從程序載入到開始執行之間的時間因而
縮短。 CLDC標准實作和MIDP 參考實作之中就附有預先審核器。
 
Java手機網[www.cnjm.Net] ■Java 版本的演進
 
 相信熟悉Java 演進歷史的人或多或少都聽說過,Java 技術一開始並非
就叫做 Java ,而是叫做OAK ,而且最早的時候就是為了嵌入式系統而設
計的一項產品。後來因為網際網路的發達,而OAK 的諸多特性剛好又適合
用在網路上(例如可移植性、編譯後程序碼很小),因為商標已被注冊的關
系,因此 OAK 被改名成Java ,從此因緣際會地成了網路上的閃亮巨星,
並隨著時間越來越成熟,也慢慢地產生了許多非原本預期中的相關運用。
雖然 Java 已經被用到許多企業級軟體上,可是其實骨子裡面還是非常適
合用在嵌入式系統之中。 
 
 雖然從Java 1.0 發表之後,Java 就被廣泛地使用在桌上型應用程序以
及Applet 的開發上,但是,從Java 1.1 開始,Java又回到了它一開始的
老路--也就是嵌入式系統方面的應用,在當時Sun Microsystems 發表了E
mbedded Java 與Personal Java(也有人簡稱為PJava)這兩項規格。其中E
mbedded Java 是為了資源十分有限,而且沒有顯示設備的嵌入式裝置而
設計; Personal Java 則是為了在能夠與網際網路連線、並擁有顯示系
統(例如彩色LCD)的消費性電子裝置而設計。接著Java 的版本演進到Java
2 ,這時為了再明顯區分各種Java 的應用,所以分割出了J2EE 、J2SE
、以及 J2ME 三種版本。這三種版本的各種特性我們已經在前面已經詳細
地描述,在此不再贅述。不過請大家記住,由於 Java 2將Java 的應用區
分成三大塊,使得 Java 程序語言的發展不會再像Java 1.1時如樹枝狀般
擴散出去,這麼一來有助於大家對 Java 各種應用的??清,而不會造成今
後越發展下去越不可收拾的混亂局面。額外向大家一提的是,後來Person
al Java 發展到1.2 版的時候,也采用了一些Java 2 平台上與安全性有
關的設計。 
 
Java手機網[www.cnjm.Net] ■Java 2 Micro Edition 概觀
 
Java手機網[www.cnjm.Net]J2ME 在設計其規格的時候,遵循著「對於各種不同的裝置而造出一個單
一的開發系統是沒有意義的事」這個基本原則。於是 J2ME 先將所有的嵌
入式裝置大體上區分為兩種 :一種是運算功能有限、電力供應也有限的嵌
Java手機網[www.cnjm.Net]入式裝置(比方說PDA 、手機);另外一種則是運算能力相對較佳、並請在
電力供應上相對比較充足的嵌入式裝置 (比方說冷氣機、電冰箱、電視機
上盒 (set-top box))。因為這兩種型態的嵌入式裝置,所以Java 引入了
一個叫做Configuration 的概念,然後把上述運算功能有限、電力有限的
嵌入式裝置定義在Connected Limited Device Configuration(CLDC)規格
之中;而另外一種裝置則規范為 Connected Device Configuration(CDC)
規格。也就是說, J2ME 先把所有的嵌入式裝置利用Configuration 的概
念區隔成兩種抽象的型態。 
 
其實在這裡大家可以把Configuration 當作是J2ME 對於兩種類型嵌入式
裝置的規格,而這些規格之中定義了這些裝置至少要符合的運算能力、供
電能力、記憶體大小等規范,同時也定了一組在這些裝置上執行的 Java
程序所能使用的類別函式庫、這些規范之中所定義的類別函式庫為 Java
標准核心類別函式庫的子集合以及與該型態裝置特性相符的擴充類別函式
庫。比方就CLDC 的規范來說,可以支援的核心類別函式庫為Java.lang.*
Java手機網[www.cnjm.Net]、java.io.*、java.util.*,而支援的擴充類別函式庫為Java.microedit
ion.io.*。區分出兩種主要的Configuration 之後,J2ME 接著在定義出P
rofile的概念。Profile 是架構在Configuration 之上的規格。之所以有
Profile的概念,是為了要更明確地區分出各種嵌入式裝置上Java 程序該
如何開發以及它們應該具有哪些功能。因此Profile 之中定義了與特定嵌
入式裝置非常相關的擴充類別函式庫,而 Java 程序在各種嵌入式裝置上
的使用者介面該如何呈現就是定義在Profile 裡頭。Profile 之中所定義
的擴充類別函式庫是根據底層Configuration 內所定義的核心類別函式庫
所建立。 
 
 ■Java 在嵌入式系統上的應用
 
由於Java 本身最初的設計理念即是針對嵌入式系統,因此將他用在嵌入
式系統上真可謂如魚得水。在這個Linux 開始興起的時空交會點,網路上
出現了一篇關於嵌入式 Linux 與Java 互相配合以造就雙贏局面的相關報
導,這是由 LinuxDevices.com 的專欄作家 Randy Rorden 所發表的一篇
白皮書,名為「 Java 與嵌入式 Linux 合作」。 在這篇文章裡頭,作者
對嵌入式Linux與Java 個別的優點提出他的看法,同時也提出了Java-Lin
ux 平台的構想。有興趣的讀者可以到到下列幾個網站參考相關新聞與資
料。 
 
 1. Java 與嵌入式 Linux 合作白皮書
   http://www.ctech.com.tw/d-news/news/Linux/89090208.ASP ;
 2. Java 及嵌入式Linux 合作
   http://www.Linuxdevices.com/news/NS5973673868.Html ;
 3. 即將來臨的Java-Linux 結合
   http://www.Linuxdevices.com/articles/AT7102892618.Html ;
 
 ■為何要用Java 撰寫PDA 上的應用程序?
 
 由於預期到今後行動通訊時代的來臨,所以通訊相關行業變的前景可期
,而除了達成行動通訊的主要工具 -- 手機月來越精巧之外,有更多的廠
商相繼投入PDA 的生產與開發。本來PDA 主要的平台有PalmOS 、Windows
CE 以及EPOC ,也不知道曾幾何時,開始一大堆公司投入embedded linu
x 的研發,其中包括國內資策會自己開發的 @ViS 作業系統,互慧科技也
有自己的嵌入式作業系統,當然更不用說大陸廠商與韓國廠商了。 喔喔!
這些作業平台的數量比起 PC 來說真不知道要復雜上幾倍。對一般使用者
來說當然影響比較小,可是對於程序開發者來說,看到這麼多不同的程序
發展平台,真是讓人望之卻步。如果每個平台都有自己的程序寫法以及函
式庫,那麼光是看上面這些平台至少就要學習五種以上程序的寫法。當然
,只專精一種平台當然是很好的事情。可是程序設計師不禁要說 :”如果
我們寫出來的軟體可以在不經過修改原始碼的情況下就能夠在這些平台上
執行,那不是更完美嗎?” 對程序開發者來說,這樣的投資報酬率當然是
最大的。 
 
Java手機網[www.cnjm.Net] 要在那麼多平台上開發程序,對程序設計師來說的確是一個很大的挑戰
,如果要把所有的時間和精力放在軟體的可用性上,那麼相對地很多時候
Java手機網[www.cnjm.Net]我們根本沒有那麼多時間撰寫各種平台的程序。要解決這個問題,一般來
Java手機網[www.cnjm.Net]說程序設計師會選用一個可以跨平台的Framework 來達成至少source cod
e level 的跨平台(例入Qt 就能做到)。不過在本篇文章中我們要介紹的
則是更終極的解決方案 ?Java ,利用Java 的”write once, run anywh
ere”特性,我們可以真正達到程序只要寫一次,拿到任何平台上都可以
執行(當然前提是必須要PDA 的廠商也要實作出該平台的Java Virtual Ma
chine 才行)。利用Java 來做PDA 上的程序當然有其缺點,最廣為人知的
可能就是執行效率的問題, Java 在執行速度這個議題上一直讓人诟病。
不過筆者認為,隨著技術的發達,將會有更快更省電的PDA 專用CPU 出現
,因此效率上的問題其實是可以忽略的。更何況,當 Sun 在設計J2ME 的
時候,也用了很多方式企圖加快Java 在PDA 上的執行速度(例如預先審核
)。
 
 ■總結
 
看完了本章之後,您對整個Java 2 Micro Edition 有個大致上的了解了
嗎? 再進入下一章之前,請務必弄清楚本章所提到的專有名詞。如果各
位想對各種技術規格做更詳細的了解,請自行參考下表所列出的網頁。 
 
 Consumer & Embedded TechnologIEs
http://Java.sun.com/products/consumer-embedded/ ;
 
 Consumer & Embedded Technology Center
Java手機網[www.cnjm.Net]http://developer.Java.sun.com/developer/products/J2ME/ ;
 
 Java 2 Micro Edition 
http://www.Javasoft.com/J2ME/ ;
 
 JDC J2ME Tech Tips 
http://developer.Java.sun.com/developer/J2METechTips/ ;
 
 CLDC & KVM 
http://www.Javasoft.com/products/cldc/ ;
 
 C & E Center Wireless TechnologIEs
http://developer.Java.sun.com/developer/products/J2ME/wireless.
Java手機網[www.cnjm.Net]Html
 
 MIDP 
http://www.Javasoft.com/products/midp/ ;
 
Java手機網[www.cnjm.Net] Embedded Java 
Java手機網[www.cnjm.Net]http://www.javasoft.com/products/embeddedJava/ ;
 
 Personal Java 
http://java.sun.com/products/personalJava/ ;
 
 JavaPhone 
http://java.sun.com/products/Javaphone/ ;
Java手機網[www.cnjm.Net] 
 Java Embedded Server 
http://www.sun.com/software/embeddedserver/index.Html ;
 
 C & E Center Java Embedded ServerTechnology
http://developer.Java.sun.com/developer/products/J2ME/embedserv
.Html
 
 JavaTV 
http://www.javasoft.com/products/Javatv/ ;
 
 C & E Center Digital Interactive Television
http://developer.Java.sun.com/developer/products/J2ME/tv.Html ;
 
 Java Card 
http://java.sun.com/products/Javacard/ ;
 
 C & E Center JavaCardTechnology
Java手機網[www.cnjm.Net]http://developer.Java.sun.com/developer/products/J2ME/smartcard
.Html
 
 Motorola 官方Java 網站
http://www.motorola.com/Java/ ;
 
 JINI 
http://www.sun.com/jini/ ;
 
 C & E Center Downloads & Specifications
http://developer.Java.sun.com/developer/products/J2ME/downloads
.Html
 
 Spotless System Page 
http://www.sun.com/research/spotless/ ;
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved