|
■ 程式外觀 |
請大家先預覽一個能在Palm上執行的簡單Java程式,程式如下:
|
■ 編 譯 |
為了編譯方便,請讀者先行新增一個批次檔,名為palmjavac.bat,其內容如下:
|
javac -g:none -classpath c:\j2me_cldc\bin\api\classes;. -bootclasspath c:\j2me_cldc\bin\api\classes %1 |
請注意,實際上在批次檔中這兩行要連在一起,所以會發生javac.exe無法編譯的情形。
|
當palmjavac.bat完成之後,我們只要在命令列下打入:
|
palmjavac HelloWorld.java |
之後您就會在目錄底下看到編譯過後的HelloWorld.class。 |
■ 預先審核 |
為了預先審核方便,請讀者再先行新增一個批次檔,名為palmver.bat,其內容如下:
|
c:\j2me_cldc\bin\preverify -classpath c:\j2me_cldc\bin\api\classes;. %1 |
請注意,因為排版的關係,所以把指令分成兩行,實際上在批次檔中這兩行要連在一起,所以會發生preverify.exe無法正確執行的情形。 當palmver.bat完成之後,我們只要在命令列下打入: 之後您就會在目錄底下發現新產生了一個名為output的目錄,裡頭存放的正是經過預先審核的HelloWorld.class。 |
■ 測試 |
為了測試方便,請讀者再新增一個批次檔,名為palmtest.bat,其內容如下:
|
c:\j2me_cldc\bin\kvm -classpath c:\j2me_cldc\bin\api\classes;.\output %1 |
請注意,因為排版的關係,所以把指令分成兩行,實際上在批次檔中這兩行要連在一起,否則會發生kvm.exe無法正確執行的情形。 當palmtest.bat完成之後,我們只要在命令列下打入:
|
就會叫出CLDC內附的Palm模擬器(比起正式的模擬器來說,這個內附的模擬器比較陽春)接著您會在螢幕上看到如下畫面:
使用滑鼠在 Goodbye World 這個按鈕上按下滑鼠左鍵,此程式就會關閉。
其實這個CLDC內附的模擬器可以幫我們輸出一些程式執行時期的相關資料。如果您想要觀看,請將palmtest.bat的內容修改如下:
|
c:\j2me_cldc\bin\kvm -verbose -classpath c:\j2me_cldc\bin\api\classes;.\output %1 >> result.txt |
請注意,因為排版的關係,所以把指令分成兩行,實際上在批次檔中這兩行要連在一起,否則會發生kvm.exe無法正確執行的情形。
這樣您就能夠在程式執行之後,打開result.txt觀看KVM所輸出的一些訊息,如果您要直接讓這些訊息輸出到螢幕上,請將palmtest.bat裡頭的">>result.txt"拿掉即可。下面是HelloWorld執行時螢幕上所輸出的資訊: |
|
GC heap size: 150000 bytes Loading version information Loading constant pool Loading class info Class info ok Loading interfaces Loading fields Loading extra attributes Extra attributes loaded Fields loaded ok Loading methods Method ’main’ Method ’< init >’ Method ’paint’ Method ’penDown’ Method ’< clinit >’ Methods loaded ok Loading extra attributes Extra attributes loaded Closing classfile Class loaded ok Invoking static initializer Invoking static initializer Invoking static initializer Invoking static initializer Invoking static initializer Invoking static initializer Invoking static initializer |
這些訊息對於程式設計師在對程式除錯的時候會發揮相當的作用。 |
■ 程式散佈 |
在測試階段,kvm.exe所使用的是經過預先審核的class檔。但是實際上Palm上所執行的程式都是.prc檔,為了要讓我們的程式可以在別人的Palm上執行,所以最後一個步驟就是要把我們的class檔轉換成prc檔。 |
要執行最後這個步驟,我們必須借助在之前我們所編譯出來的相關工具,這個工具名為 MakePalmApp.class。 |
為了轉換方便,請讀者新增一個批次檔,名為palmapp.bat,其內容如下:
|
java -cp c:\j2me_cldc\bin\api\classes palm.database.MakePalmApp -v -bootclasspath c:\j2me_cldc\bin\api\classes %1 |
請注意,因為排版的關係,所以把指令分成三行,實際上在批次檔中這三行要連在一起,否則會發生palm.database.MakePalmApp無法正確執行的情形。
|
當palmapp.bat完成之後,我們只要在命令列下打入: 螢幕上會出現下列訊息:
|
HelloWorld HelloWorld" Small icon Generating output file "HelloWorld.prc". |
表示轉換過程成功 (請注意,預先審核過的HelloWorld.class要和palmapp.bat放在相同目錄下,否則螢幕上會出現ERROR: java.io.IOException: Cannot find file HelloWorld.class的錯誤訊息。)
|
這個時候您就會看到output目錄下產生了一個名為HelloWorld.prc的檔案,這就是我們所需要能在Palm上執行的程式了。請將這個檔案下載到您的Palm上,您會在Palm的螢幕上看到如下: |
用觸控筆在上面輕點一下,就會看到下面畫面: |
今後如果讀者們要將您使用CLDC所撰寫的Java程式分享給大家時,只要提醒使用者在他們的Palm上裝上KVM.prc,至於KVMutil.prc因為是用來協助程式設計師除錯用的工具,所以使用者可裝可不裝。之後程式設計師只要將您自己做好的的.prc檔給使用者即可。如果使用者的電腦上沒有裝上KVM.prc,則會出現下面畫面:
請諸位讀者在散佈您的程式時務必注意。 |
■ 除錯 |
寫程式的人都知道,程式很容易寫,但是bug卻很難除,在我們開發PC用的應用程式時,已經有非常優秀的除錯工具可以幫助我們除錯,但是在Palm上,以目前來說似乎沒有什麼比較有效的除錯工具。於是想起過去在螢幕上列印出一些訊息以協助除錯的日子。當我們在PC上Java Application的時候,我們可以利用System.out.println()這個函式幫我們在螢幕上輸出資料。 那麼在Palm上也可以這樣做嗎? 答案是肯定的。 如果可以,那資料都輸出到哪裡了呢? 嘿嘿!! KVMutil派上用場的時機到了。 請在您的Palm執行KVMutil這隻程式,並設定Screen Output的值,也就是說最多可以輸出13行 一旦這樣設定之後,您就可以在程式裡頭使用System.out.println()函式來輸出資料。 我們把之前的HelloWorld.java改寫成下面的樣子: |
|
import com.sun.kjava.*; public
class HelloWorld extends Spotlet { //用來關閉程式的按鈕 Button exitButton; // 取得Grpahic物件,以便繪圖之用 static Graphics g = Graphics.getGraphics();
//動態產生一個Spotlet, 並註冊事件處理函式. public static void main(String[] args) {
System.out.println("HelloWorld Start") ; HelloWorld hw = new HelloWorld() ; hw.register(NO_EVENT_OPTIONS); }
public HelloWorld() { exitButton = new Button("Goodbye World",70,120); paint(); }
private void paint() { g.clearScreen(); g.drawString("Hello World",60, 80); exitButton.paint(); }
/* 當觸控筆觸碰液晶螢幕,就會引發pen down事件, 接著叫用以下事件處理函式 */
public void penDown(int x, int y) { System.out.println("Pen Down") ; // 確認筆按下的位置在按鈕的邊界之內 if (exitButton.pressed(x,y)) { System.exit(0); } } } |
|
程式執行之後,重新執行KVMutil,並按下 < View output >,就可以看到 HelloWorld所輸出的訊息,如下圖:
如果您是使用POSE(請參考附錄,對POSE會有詳盡的說明)執行KVM的話,您會在POSE所在的路徑之下發現兩個檔案,分別是STDOUT.txt與STDERR.txt,裡頭存放的內容正是前面這兩張圖裡頭所看到的文字內容。
眼尖的讀者會發現,KVMutil裡有個選項叫做Show heap stats,如下圖: |
當您點選了這個選項之後,每當您的程式執行之前,KVM都會對Heap的情形做出回報,底下是HelloWorld執行前KVM出現的訊息視窗: |
如果一開始設定了Save Output,而後來卻砍掉KVMutil.prc,那您的KVM.prc在執行時結果將會如下圖:
相信有了KVMutil的協助,一定可以幫助大家在程式寫作的路上更順手。 |
相关推荐
MIDlet是Java在移动设备上运行的应用程序,类似于PC上的Java Applet或Palm OS上的Spotlet。 在2000年代初期,随着3G和无线宽带技术的发展,手机不仅仅用于通信,还逐渐整合了PDA的功能,如Nokia 9000、Motorola ...
【Palm OS应用程序设计指南】是一本面向编程者,无论是新手还是专家的指南,旨在教授如何在Palm OS平台上创建应用程序。Palm OS的应用程序设计不仅涉及到编程技术,还涵盖了一个有效的开发环境的构建,这对于高效...
4. **Palm Application Structure**: 每个Palm应用程序都由一系列的数据库、资源和代码文件组成,理解这些文件的结构和交互方式是编写Palm OS程序的关键。 5. **事件驱动编程**: Palm OS采用事件驱动模型,应用程序...
Java游戏部署在Palm OS平台仿真器(Access)是一个针对移动设备开发的专题,主要讲解如何将Java游戏适配并运行在Palm OS系统上,利用Access公司的Palm OS模拟器进行测试和调试。这个过程涉及到Java ME(Mobile Edition...
《Palm OS程序设计》是一本深入探讨Palm操作系统应用程序开发的专业指南,旨在帮助开发者熟练掌握在Palm设备上创建高效、用户友好的应用程序的技术。Palm OS是一种经典的掌上电脑操作系统,它以其简洁的界面和强大的...
PalmOS 4.0采用了一种轻量级的多任务处理机制,它允许多个应用程序同时运行,并确保了资源的公平分配。通过源代码,我们可以学习到如何实现优先级调度,以及如何处理中断和上下文切换,这对于优化系统性能和响应速度...
通过本书的学习,你不仅能掌握Palm OS的基本原理和开发技巧,还能了解如何利用这些知识来构建实用的应用程序。此外,书中提供的案例研究和实践指导将进一步加深你对Palm OS开发的理解和应用能力。对于任何对Palm OS...
PalmOS 是一种专为掌上电脑设计的操作系统,自1996年发布以来,经历了多个版本的迭代,每个版本都在原有基础上进行了功能增强和性能优化。以下是对Palm OS各版本及其特性的详细说明: 1. **版本 1.0** - 发布于...
Palm OS programming from the ground up作为一本Palm开发的入门书籍较为全面的向读者介绍了使用Code Warrior开发工具开发一个完整Palm OS应用程序的全过程。 本书面向各个层次的C程序员读者和PDA爱好者。对于...
- **CodeWarrior**:一种集成开发环境(IDE),广泛用于Palm OS的应用程序开发。 - **IDE特性**:包括代码编辑、编译、链接和调试等功能,是Palm OS开发不可或缺的工具之一。 - **Palm编程简介**:本章介绍Palm OS的...
本书面向各个层次的C程序员读者和PDA爱好者。对于初学者来说,这是一本很好的入门...通过本书的学习,不仅可以快速学会开发基本的Palm OS应用程序,还可以学到调试程序、使用数据库,优化用户界面等高级PDA开发技术。
### Java手机程序设计入门8 —— ...综上所述,《Java 手机程序设计入门 8》这一章节通过详细介绍 MIDP for Palm OS 的使用方法,为 J2ME 新手提供了宝贵的学习资料,同时也对 Java 移动应用开发领域产生了深远的影响。
本文这一部分并不是介绍使用Java编写Palm程序的教程--因为每种我们将要讨论的解决方案都有自己的要求和值得注意的地方--而是一篇向开发者概括介绍开发工具的的文章,我们将纵观这一领域,找出在使用 Java语言开发 ...
Palm OS SDK是一套用于开发基于Palm OS应用程序的工具集合,包括编译器、调试器、模拟器以及一系列APIs(应用程序编程接口)等。 ### 二、Palm OS SDK的组成与功能 #### 1. **文档编号与日期** - **文档编号**:...
PocketC是一种轻量级的编程语言,设计用于在Palm OS设备上开发应用程序,它使得这些早期的移动设备具备了编写和运行简单程序的能力。 描述 "palm手机实现编程功能,简单一维的数组,指针等" 表明用户可以利用...
Java for Palm(Treo 650)是一款专为Palm OS设备设计的Java应用程序环境,使得用户能够在Treo 650智能手机上运行基于Java的软件应用。Java平台的引入,极大地扩展了Palm设备的功能,使其能够支持更多种类的应用程序,...
《KJava深入浅出——Java在PDA上的程序设计》一书主要涵盖了Java技术在掌上设备(PDA)上的应用开发,旨在帮助开发者理解和掌握KJava编程的基础知识和实战技巧。KJava是Java Micro Edition (Java ME)的一个分支,...
本文这一部分并不是介绍使用Java编写Palm程序的教程--因为每种我们将要讨论的解决方案都有自己的要求和值得注意的地方--而是一篇向开发者概括介绍开发工具的的文章,我们将纵观这一领域,找出在使用 Java语言开发 ...