在Color KVM的網站上,您可以抓到測試彩色用的程式ColorTest_prc.zip,解開後請您下載到您的Palm IIIc上,並執行他,結果如下圖:
如果您把這個ColorTest.prc安裝到只支援單色的KVM上,則會看到下面結果:
聰明的讀者一定會發現,同樣的程式,在只能顯示單色的Palm上執行的時候,會用漸層色顯示出來。 |
最後附帶一提的是,Color KVM的網站上您會發現有兩種版本的Color KVM,分別是: - ColorKVM.zip: The ColorKVM (Build 6, multi PDB) without the ROMized kAWT classes.
- ColorKVM_kAWT090ROMized.zip: The ColorKVM (Build 6, multi PDB) with a ROMized version of kAWT v0.90. It is not necessary to add the kawt.pdb file to run the KawtSample or any other kAWT application.
|
| 如果讀者們要減少麻煩,請下載 ColorKVM_kAWT090ROMized.zip,由上面的說明大家可以知道,這兩個檔案的差別在於一個有內附kAWT而另外一個沒有。那麼什麼事kAWT呢? 撰寫過Java程式的人應該都利用過AWT(Abstract Window Tookit)來設計Java程式的圖形使用者介面(GUI),而kAWT就是AWT在Palm上的版本,目的也是讓程式設計師更方便地在Palm上面產生如Button、Combo Box、Edit Box之類的元件。當然,內附kAWT的Color KVM所佔的記憶體容量會大些。 |
| 接下來,我們要開始撰寫撰寫程式囉!相信讀著們已經摩拳擦掌準備一試身手了, Are you ready? Let’s go! |
先期準備工作 |
| 工欲善其事,必先利其器。因此在我們開始寫Palm上的Java程式之前,我們必須先花點時間準備好我們程式的執行環境以及編譯環境。順便我們也討論一下Palm上Java程式的撰寫流程。 | | ■ 準備程式執行環境 | 在前面已經跟大家介紹過如何安裝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面板上發現這兩個程式的蹤影。 | | ■ Palm上Java程式的撰寫步驟 | 撰寫Palm上的Java程式和一般的步驟相同,如圖:- 撰寫程式原始碼
- 編譯
- 預先審核(Preverify)
- 測試與除錯
- 散佈
| 各位讀者比較會感到奇怪的地方在第三個步驟 - 預先審核,這個步驟可能會讓大家覺得有些疑惑。因為在各位撰寫Java Applet或是Java Application的時候從未做過這個步驟。其實,這個步驟很容易就可以完成,不像它的名稱看起來那麼地複雜。 為了讓讀者們更清楚這個動作的用意,請大家看看下面這張圖,這是一張傳統Java Applet或是Java Application由撰寫到執行的細部動作示意圖: |
在傳統的Java程式之中,為了安全上的理由,任何載入JVM 的class檔在進入執行環境執行之前,都必須經過Byte code verifier的驗證,以防止有人在程式散佈途中遭到惡意的修改,而使得程式執行後對系統有不良影響。
這個審核的動作在一般的PC上執行,在速度倒是還能夠接受,可是一旦放到Palm這種使用較慢CPU的機器上面就顯得有點吃力了。為了節省寶貴的CPU運算時間(既能省電又能夠讓使用者早點看到程式畫面),因此,在程式設計師產生能夠讓KVM執行的class檔之前,先在PC上做一些前置的驗證工作(比方說加入一些特殊標記或符號),如此一來就可以大幅減少將來在Palm上做驗證時CPU的負擔,如此一來也可以加速程式的的啟動時間。
請大家回顧一下,在我們執行每一個CLDC所附的demo程式之前,我們都會看到KVM的啟動畫面如下:
從畫面中大家可以清楚的發現,當KVM做好初始化動作之後,接著會讀進我們用Java寫成的.prc檔,再來從.prc檔之中讀進byte code檔,最後就是再做一次審核(verify)的動作,只不過這個審核的動作因為有預先審核的關係,速度變的比傳統的Java程式要來的快。希望到這個地方,讀者們可以對整個程式開發步驟有個概觀的認識。 | | ■ 準備程式編譯環境 | | 首先,請先安裝Java 2 SDK(請用1.2.2以上的版本。目前最新版本為1.3,請至www.javasoft.com下載)。 | | 最後,要開始撰寫程式之前,我們必須還要建立自己的工具和類別,這個地方讓人覺得很奇怪,為什麼Sun不直接提供可用的工具和類別呢? 總之每個人都有自己的答案,在這裡我們就不討論了,但是我們還是要自己動手輸入指令,否則接下來的工作都不能做了。 | | 底下我們接假設您的CLDC裝在c:\j2me_cldc這個目錄之下 | 請在命令模式底輸入指令: | | cd c:\j2me_cldc\tools\palm\src\palm\database | 我們要把這個目錄下的所有java全部編譯成class檔,接著要放到CLDC類別目錄底下。所以請鍵入: | | javac -d c:\j2me_cldc\bin\api\classes\ *.java | 如果您使用的是Java SDK 1.3,則螢幕上會出現一些錯誤,意思大致上是說程式裡頭用了一些不再建議使用的API(deprecation)為了避免這個錯誤,請改用以下指令 | | javac -deprecation -d c:\j2me_cldc\bin\api\classes\ *.java | 額外跟各位一提的是,如果您在Windows 98底下進行CLDC的準備工作,您很可能遇到底下一大串錯誤訊息: | C:\j2me_cldc\tools\palm\src\palm\database>javac -d c:\j2me_cldc\bin\api\classes *.java java.lang.StringIndexOutOfBoundsException: String index out of range: -32
| | at java.lang.String.charAt(String.java, Compiled Code) at sun.io.ByteToCharMS950.getUnicode(ByteToCharMS950.java:39) at sun.io.ByteToCharDoubleByte.convert(ByteToCharDoubleByte.java:115) at java.io.InputStreamReader.convertInto(InputStreamReader.java:127) at java.io.InputStreamReader.fill(InputStreamReader.java:176) at java.io.InputStreamReader.read(InputStreamReader.java:239) at java.io.Reader.read(Reader.java:104) at sun.tools.java.ScannerInputReader.read(ScannerInputReader.java:127) at sun.tools.java.Scanner.useInputStream(Scanner.java:166) at sun.tools.java.Scanner.(Scanner.java:151) at sun.tools.java.Parser.(Parser.java:59) at sun.tools.javac.BatchParser.(BatchParser.java:61) at sun.tools.javac.BatchEnvironment.parseFile(BatchEnvironment.java:465)
at sun.tools.javac.Main.compile(Main.java:489) at sun.tools.javac.Main.main(Main.java:733) | error: An exception has occurred in the compiler; please file a bug report (http ://java.sun.com/cgi-bin/bugreport.cgi). 1 error
|
|
這是因為編碼的問題而導致的錯誤,請大家嘗試改用底下指令即可解決上述問題: | | | javac -deprecation -encoding "ASCII"-d c:\j2me_cldc\bin\api\classes\ *.java |
本文关键:利用Java编写手机应用程序PalmOS基础篇
本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)
|
|