Waba -- 嵌入式Java程序开发的另类选择
本文介绍了一个目前在国内尚未广为人知的嵌入式Java程序开发工具--Waba。 Waba是一个专门为嵌入式系统设计的Java语言的子集,利用Waba能够为手机、个人数字助理、掌上型电脑、多功能计算器等多种便携式设备开发应用程序。目前版本的Waba虚拟机支持的平台包括AmigaOS, BeOS, Linux, MacOS, MS-DOS, Newton, OS/2, PalmOS, Windows 和Windows CE。在本文中作者将全面介绍Waba平台、开发工具以及Waba相关资源。
[Waba平台介绍]
Waba是一种专门为微小型设备设计的程序开发平台,在该平台上定义了一种程序设计语言,一个虚拟机,一种类库文件格式以及一组基本类库。由于Waba语言的语法是Java语言的语法的严格子集,Waba平台的类库文件格式也是Java平台类库文件格式的严格子集,因此熟悉Java的开发人员能够利用自己已经熟悉的Java开发平台进行Waba程序开发。
Waba平台所针对的是例如手机、个人数字助理、掌上型电脑、多功能计算器等硬件资源非常紧张的微小型设备。因此,Waba的编程语言、虚拟机和基本类库都针对微小型设备进行了优化处理。在Java语言中需要耗费大量内存或者是被认为与微小型设备无关的特性均被排除在Waba平台之外。同样,Waba平台也对Java平台的基本类库进行了大幅度裁减,从而使得Waba平台只需要占用很少的硬件资源而仍然能够满足微小性设备应用程序设计的需要。
和Java应用程序相类似,Waba应用程序能够在任何安装了Waba平台的操作系统上运行。最早的Waba平台是针对Windows CE操作系统进行开发的,但是目前Waba虚拟机已经被移植到多种平台上,其中包括AmigaOS, BeOS, Linux, MacOS, MS-DOS, Newton, OS/2, PalmOS和Windows。就我所了解的情况,目前支持DOS的Java虚拟机只有KaffePC 和Waba,两者均要求Intel 386以上的中央处理器,但是KaffePC需要 8 MB的内存(推荐配置是16 MB),而Waba仅仅需要4 MB或者是更少的内存。Psion也与前段时间宣布开发支持MS-DOS的Java虚拟机,但是其测试版本至今尚未发布。前段时间Waba又推出了专门为T1计算器设计的虚拟机,这是目前仅有的一个专门为计算器设计的Java虚拟机。
为了保持与Java平台的兼容,Waba提供了一系列过渡类库使得Waba应用程序也能够在仅仅任何安装了Java运行环境的平台上运行。它既可以是Windows或者UNIX 下面的普通应用程序(Application),也可以是内嵌在浏览器中的一个小应用程序 (Applet)。
与其他嵌入式应用程序开发环境相比较,Waba平台具有如下优点:
(1) 由于Waba本身是为硬件资源非常紧张的微小型便携式设备设计的,Waba虚拟机所要求的存储空间通常都小于64 K,其中包括基本类库,基于Waba的应用程序在运行时刻仅仅要求少于10 K的内存。
(2) Waba所提供的基本类库事先封装了大量在嵌入式系统中常见的功能,因此开发人员能够在这些事先经过严格测试的基本类库的基础上迅速开发自己的应用程序。同时,Waba所支持的平台非常广泛,为一个平台所开发的应用程序不需要经过任何修改即可以在另一平台上运行。
(3) 微小型便携式设备通常没有任何外界存储设备,如果应用程序对内存进行了非法操作,用户必须重新启动该设备,从而导致不可挽回的数据丢失。作为Java 的一个严格子集,Waba同样限制用户应用程序直接对内存进行操作,从而避免了由于对内存进行非法操作而导致的系统崩溃和数据丢失。此外,Java语言特有的垃圾回收功能(Garbage Collection)减少了在应用程序中发生内存泄露(Memory Leak) 的可能性。
[Waba开发工具]
在一个Waba应用程序的开发过程中,开发人员需要一个针对目标平台的Waba虚拟机,一套Waba开发环境,以及一个测试环境。
Waba虚拟机:Waba虚拟机已经被移植到多种平台上,其中包括AmigaOS, BeOS, Linux, MacOS, MS-DOS, Newton, OS/2, PalmOS, Windows和Windows CE。Waba虚拟机的源代码是开放的,开发人员可以根据自己的需要对Waba虚拟机进行裁剪或者是修改。
Waba开发环境:WabaSoft提供了一个软件开发工具包(Software Development Kit),称为WabaSDK 。这个工具包提供了所有的Waba基本类库,开发人员可以将这些基本类库添加到自己熟悉Java开发环境中去,然后在自己熟悉的Java开发环境中进行Waba应用程序开发。一个最基本的Waba开发环境是JavaSDK + WabaSDK,开发人员需要利用JavaSDK中提供的javac来编译Waba应用程序。此外,WabaSDK 还提供了针对PalmPilot和Windows CE 的代码转换工具ExeGen和Warp,利用这两个工具开发人员能够将编译以后的Waba类库文件转换成PalmPilot或者是Windows CE 可以识别的可执行文件。WabaSDK 的源代码同样是开放的,开发人员可以根据需要对其进行裁剪和修改,或者是将其移植到自己的开发平台上。
随着Waba平台在嵌入式系统中的广泛应用,专门为Waba设计的集成开发环境也不断的涌现出来,VisualWaba和UIGen 可以说是这些第三方集成开发环境中的佼佼者。VisualWaba和UIGen 本身都是利用Java开发的应用程序,用来进行应用程序开发似乎有点反应迟钝,但是如果综合考虑一下Borland JBuilder和IBM Visual Age for Java的性能,VisualWaba和UIGen 的速度还是可以容忍的。相对来说UIGen 的功能还比较弱,只能够根据用户设计的界面生成相对应源代码。VisualWaba更类似于微软的Visual Basic,开发人员不但能够在其中进行界面设计和程序设计并生成源代码,还能够对程序进行编译和调试,最后生成PalmPilot 或者是Windows CE平台上的可执行代码。
除了VisualWaba和UIGen 以外,还有另外一些由第三方开发的工具。这些工具或者为Waba提供一些专门的类库,或者是增强Waba的图形用户界面。例如MathFP为 Waba提供了高性能的符点运算类库,使得Waba在没有数学协同处理器的情况下也能够进行高性能的符点运算。mWaba AWT Toolkit 为Waba提供了类似于Java AWT的图形用户界面功能。Waba GUI Library为Waba提供了更加强大的串口通讯、图形用户界面以及HTML解析功能。
测试环境:在嵌入式便携式设备应用程序设计中,经常需要将生成的可执行代码上载到目标平台上进行调试和测试。例如开发一个针对Windows CE的应用程序,开发人员通常需要预先在桌面计算机上进行程序开发和编译,然后通过微软的便携式设备服务程序将可执行代码上载到目标平台,最后在目标平台上进行调试,整个过程非常的繁琐。在Waba中提供了一款针对Windows CE的模拟器,使得开发人员能够在桌面计算机上直接调试应用程序,从而大大的减轻了开发人员的负担。
[相关资源]
(1) WabaSoft (http://www.wabasoft.com)
WabaSoft是Waba的大本营,从该网站可以获得关于Waba平台的最新消息,并且可以下载各种版本的Waba开发工具以及相关文档。
(2) Waba Workbench (http://www.wabaworkbench.com)
Waba Workbench是由Ed Crandell 创办的一个专门用于Waba技术交流的网站,该网站提供了一系列关于Waba开发的技术文章、扩展类库以及虚拟机。在这里也可以找到指向其他Waba技术网站的连接。
(3) Visual Waba (http://www.dmic.fr/palm/prg2.htm)
VisualWaba的主页,从该网站可以获得关于VisualWaba的最新消息,并且可以免费下载VisualWaba的试用版以及相关文档。
(4) UIGen (http://home.c2i.net/badeand/UIGen/)
UIGen的主页,从该网站可以获得关于UIGen的最新消息,并且可以在浏览器上直接利用UIGen 进行图形用户界面并且生成相对应的源代码。如果你需要经常性的使用UIGen的话,你需要将UIGen下载并安装在你的开发平台上。虽然UIGen 的用户界面非常简单,你还是可以在该网站上找到一个比较具体的用户指南。
(5) 其他网络资源
http://www.superwaba.org/
http://www.wabajump.org/
http://www.cygnus.uwa.edu.au/~rnielsen/wextras/
news://news.massena.com/pilot.programmer.waba
news://news.falch.net/pilot.programmer.waba
[结论]
本文全面介绍了专门为嵌入式系统设计的Waba平台、开发工具以及Waba相关资源。该平台支持包括AmigaOS, BeOS, Linux, MacOS, MS-DOS, Newton, PalmOS 和 Windows CE等一系列嵌入式操作系统,能够在手机、个人数字助理、掌上型电脑、多功能计算器等多种便携式设备上运行。现有的Waba开发工具使得开发人员能够在一般开发平台上设计、编译和调试针对便携式设备等目标平台的应用程序,能够大大缩短嵌入式应用程序的开发周期。目前Waba平台已经在嵌入式应用程序设计领域得到了广泛的应用,是一个优秀的嵌入式应用程序平台。