作者:王森
相信大家一定會發現,最近到處都是嵌入式系統(embedded system)的新聞。而目前也已經有不少國內外廠商推出各式各樣的PDA(Personal Digital Assistant,中文叫做個人數位助理)產品。相信大家一走到電腦賣場,只要隨便一看都能發現櫥窗裡所展示的各式各樣造型PDA。而讀者們也會發現周圍越來越多的人隨時隨地使用觸控筆在PDA的螢幕上做他們想做的事情。 為何PDA會成為熱門的話題呢? 根據媒體的說法,由於行動通訊時代的來臨,PDA似乎是能夠造就繼PC之後下一代數位革命的新產品。既然是大家看好前景的產業,當然在一開始市場上就是百家爭銘。從佔有率最高的Palm系列,接著是後來加入的Windows CE,尤其嵌入式Linux(embedded linux)的快速發展更是目前當紅的新聞題材。看來,PDA的戰火將會不停地延長下去。 其實,除了嵌入式Linux之外,很多人可能不知道Java也是另一個嵌入式系統之中很有趣的議題。熟知Java發展歷史的人應該都知道,Java一開始本來就是針對嵌入式系統而設計的,只不過由於因緣機會,遇到了網路蓬勃發展的時代,剛好Java的某些特性又非常適合應用在全球資訊網(WWW)之上。我想很多人大概只聽過Java可以用來撰寫能在瀏覽器上執行的Java Applet、獨立執行的Java應用程式(Java Application)以及專門在伺服器端執行的Java Servlet。而本系列文章所要介紹的主角,則是一種能夠在個人數位助理上執行的Java程式,它的名字就叫做 -- Java Spotlet,是目前大家所能見到Java的第四種應用。
名詞解說
Java在其SDK 1.2之後的版本都統稱叫Java 2,而Java 2的規格裡頭將Java分成三種不同範圍的版本,分別是:
Java 2 Enterprise Edition(J2EE,Java 2企業版)
Java 2 Standard Edition(J2SE,Java 2標準版)
Java 2 Micro Edition(J2ME,Java 2 微小版)
其中,我們一般人常說的Java 2 SDK(以前叫做JDK)就是屬於J2SE的範圍。而J2EE則為企業量身定做的一些額外的標準和服務。J2ME則是Java在嵌入式系統上執行Java程式的解決方案,大家所知道最普遍的應用大概就是在 PDA上了。
本篇文章就是在探討如何利用Java來撰寫可以在PalmOS上執行應用程式,因此本文主題完全鎖定在J2ME上。在底下內容之中,我們一律將Java 2 Micro Edition簡寫成J2ME。
為何要用Java開發PDA上的應用程式 ?
由於預期到今後行動通訊時代的來臨,所以通訊相關行業變的前景可期,而除了達成行動通訊的主要工具 -- 手機月來越精巧之外,有更多的廠商相繼投入PDA的生產與開發。本來PDA主要的平台只有PalmOS以及Windows CE,也不知道曾幾何時,開始一大堆公司投入embedded linux的研發,其中包括國內資策會自己開發的 @ViS作業系統,互慧科技也有自己的嵌入式作業系統,當然更不用說大陸廠商與韓國廠商了。 喔喔!這些作業平台的數量比起PC來說真不知道要複雜上幾倍。對一般使用者來說當然影響比較小,可是對於程式開發者來說,看到這麼多不同的程式發展平台,真是讓人望之卻步。如果每個平台都有自己的程式寫法以及函式庫,那麼光是看上面這些平台至少就要學習五種以上程式的寫法。當然,只專精一種平台當然是很好的事情。可是程式設計師不禁要說:"如果我們寫出來的軟體可以在不經過修改原始碼的情況下就能夠在這些平台上執行,那不是更完美嗎?" 對程式開發者來說,這樣的投資報酬率當然是最大的。
要在那麼多平台上開發程式,對程式設計師來說的確是一個很大的挑戰,如果要把所有的時間和精力放在軟體的可用性上,那麼相對地很多時候我們根本沒有那麼多時間撰寫各種平台的程式。要解決這個問題,一般來說程式設計師會選用一個可以跨平台的Framework來達成至少source code level的跨平台(例入Qt就能做到)。不過在本篇文章中我們要介紹的則是更終極的解決方案 - Java,利用Java的"write once, run anywhere"特性,我們可以真正達到程式只要寫一次,拿到任何平台上都可以執行(當然前提是必須要PDA的廠商也要實作出該平台的Java Virtual Machine才行)。
利用Java來做PDA上的程式當然有其缺點,最廣為人知的可能就是執行效率的問題,Java在執行速度這個議題上一直讓人詬病。不過筆者認為,隨著技術的發達,將會有更快更省電的PDA專用CPU出現,因此效率上的問題其實是可以忽略的。更何況,當Sun在設計J2ME的時候,也用了很多方式企圖加快Java在PDA上的執行速度,這些在底下的文章之中我們都可以清楚地看到。
初見KVM
請各位讀者先到Java Download Center (http://www.sun.com/software/communitysource/j2me/download.html ) 下載 CLDC(CONNECTED LIMITED DEVICE CONFIGURATION v1.0) 這兩個檔案。
j2me_cldc-1_0-src-winsol.zip
j2me_cldc-1_0-src-palm_overlay.zip
在下載之前,如果你已經是會員,直接輸入ID與密碼即可下載,否則請先註冊為會員(完全免費) 抓到這兩個檔案之後,請先解開第一個zip檔於根目錄下,這裡我們假設你把檔案解開至C磁碟機中,於是你會發現C磁碟下多了一個目錄叫做j2me_cldc,接著請解開第二檔案至C磁碟機中的j2me_cldc目錄底下,使用覆蓋的方式即可,揭開後會在j2me_cldc底下新增即覆蓋一些檔案和目錄。 在j2me_cldc目錄下的bin子目錄可以發現兩個Palm的可執行檔(.prc檔)分別是KVM.prc與KVMutil.prc,請將這兩個檔案下載到Palm上,你可以在Palm面板上發現這兩個程式的蹤影。其中,KVM.prc就是Java Virtual Machine在Palm上的版本,而KVMutil.prc而是一個輔助工具,具有許多功能可以幫助程式設計師,這些我們都會在稍後的文章之中提及。
安裝這兩個檔案之後,您可以試著分別執行這兩個檔案,如下圖:
從這裡大家可以發現,這兩個程式的執行結果是相同的,因為KVM在沒有執行任何程式的時候,預設會叫出KVMutil。 值得額外跟大家一提的是,CLDC裡頭附上了許多demo用的應用程式,都已經被編譯成.prc檔,它們都被放置在j2me_cldc目錄下的bin目錄底下,請讀者們如果有興趣一試,可以將他們下載到您的Palm上執行。
底下是這些應用程式的執行畫面介紹:
到這裡,相信大家都覺得十分新鮮有趣。不過使用Palm IIIc的玩家可能就有點失望了,畢竟在能夠顯示彩色畫面的螢幕上竟然只能顯示單色的程式,的確是一件美中不足的事。為了彌補想要在Palm上撰寫彩色Java程式的程式設計師的缺憾,筆者特地為大家介紹彩色版的KVM - Color KVM,您可以到以下網址找到相關訊息:http://www.kawt.de/ColorKVM.html 找到相關資訊,存網站上可以下載Color KVM的可執行檔,解開後讀者同樣可以發現有兩個.prc檔,分別是KVM.prc與KVMutil.prc,請大家將這兩個檔案下載到您的Palm IIIc上。
以下是一些Color KVM在安裝在Palm IIIc上的畫面。