近來,手機總是伴隨著一大堆專有名詞,出現在各大傳播媒體:一會兒是WAP;一會兒是藍芽;一會兒是GPRS,最近又出現了一個讓手機「活起來」的東西─ 「JAVA」!JAVA真的有這麽厲害,可以讓Motorola最新的A6288手機「活起來」?這個JAVA和我們平常在電腦上用的JAVA語言是一樣的東西嗎?還是有什麽關聯性?「活起來」的手機到底和一般的手機、還有WAP手機有什麽不同之處?現在,就讓我們帶著一窺究竟的好奇,一起去探訪JAVA 手機的靈魂─「J2ME」。
J2ME是英文JAVA 2 Micro Edition的縮寫,從字面上就可以解譯出J2ME是JAVA家族的一員,它在JAVA家族的角色是定位在「嵌入式系統」的應用上。
我們用一個簡單的圖示來介紹這個家族:
用過C語言寫過程式的人,都會用到C語言的標準函式庫,JAVA也有函式庫,而且JAVA將其所使用的函式庫更有系統的予以類別化,稱之為「類別函式庫」。 JAVA的「類別函式庫」又可以區隔出「核心類別函式庫」(Core Class)及「擴充類別函式庫」(Extended Class)。為了對應不同效能的裝置環境(如企業用電腦、個人電腦、手機、資訊家電、PDA等),JAVA被分隔出幾個不同的版本。於是,依照計算能力強弱、電源供應的狀態,區隔出支援所有標準核心類別函式庫,還增加許多公司專屬應用程式面的擴充類別函式庫,應用於企業及伺服器定位的J2EE(JAVA 2 Enterprise Edition);支援標準核心類別函式庫,定位於使用者端應用的J2SE(JAVA 2 Standard Edition) ;以及應用在相對計算能力較弱,僅支援一部份的標準核心愿別函式庫,及支援嵌入式系統的擴充類別函式庫的J2ME。
即然J2ME是定位在嵌入式系統的應用上,那什麽又是嵌入式系統呢?如果,我們換一個名詞,J2ME是專為撰寫消費性電子產品應用程式所發展出來的JAVA版本,這樣或許大家就比較容易瞭解。消費性電子產品大可以到冰箱、電視,小可以到手機、PDA;它們的共通點在於使用嵌入式系統,讓它們擁有邏輯處理和運算的能力;而它們的差異則在於體積大小及電源供應方式。針對這樣的差異,J2ME將嵌入式裝置分為「可以放在手掌上的裝置」的CLDC(Connected Limited Device Configuration)及「可以插在牆上的裝置」的CDC(Connected Device Configuration) 兩種不同的版本。
目前CDC的規格尚未底定,正式對外發表的是CLDC版本。從「可以放在手掌上的裝置」的字面上就可以理解,CLDC版本面對的是電力供應及運算能力限制較大的行動載具,如手機、PDA。又因為手機及PDA的差異,CLDC又衍生出兩種 Profile,分別是PDA Profile以及針對行動通訊裝置的Mobile Information Device Profile(簡稱MIDP)。所以,用來撰寫在行動通訊裝置的JAVA版本的全名應當是J2ME.CLDC.MIDP。
JAVA 為了達成「Write once , run anywhere」的跨平台能力,每一個版本都有專屬的Virtual Machine(虛擬機器,簡稱VM)。J2ME的Virtual Machine叫KVM(K是Kilobytes)。現在我們對J2ME有個大概的瞭解,接下來我們就來說說J2ME是如何讓手機「活起來」!
上面這個圖是由兩個立體的圓圈所組成,上面較小的圓圈代表的是一支WAP手機的功能,它可以提供通話的Voice Messaging Service,有著制式的電話簿的附加應用功能。它上面還有WAP瀏覽器,可以讓使用者上WAP網站。這樣的手機雖然很霹靂,但是,總覺得少了什麽。如果,手機能像PDA一樣,可以隨心所欲下載不同的應用軟體,或是不要透過WAP瀏覽器,直接應用TCP/IP上網,享受如電腦系統主從結構的應用,那不是更勁爆嗎?而這樣的需求,就必須由JAVA手機來達成。在上面這個圖,便是代表JAVA手機的功能。因此,相對於不能依照自已需求的傳統手機,JAVA手機更有彈性,應用功能也可隨著使用者的需要增減。從這個層面來看,說JAVA讓手機活了起來,似乎不無道理吧!
看到這裡,是不是有些心動,也想開始牛刀小試,自己動手寫一個手機上應用的JAVA程式呢?不要急!我們將在往後的篇章中,向大家逐一介紹。如果您己經等不及了,可以先到摩托羅拉的網站上看一看,那裡有一個專屬的開發人員論壇和一些技術檔案。
至於有關J2ME的中文書籍,大多是for Palm的,筆者認為「知城」出版的「深入淺出KJAVA」以及「峰」出版的「Palm應用程式設計─使用JAVA語言」都寫得很不錯,想瞭解J2ME的人,可以買來看一看。