Waba -- 嵌入式Java程序开发的另类选择

SuperWaba -JVM虚拟机 著名的JVM,Java虚拟机.在手持设备,PALM上有广泛应用 立即下载
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

蒋清野 (qjiang@tsinghua.edu)
美国导航与控制公司
2001 年 10 月

本文介绍了一个目前在国内尚未广为人知的嵌入式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/
    http://www.cn-java.com/www1/news://news.massena.com/pilot.programmer.waba
    http://www.cn-java.com/www1/news://news.falch.net/pilot.programmer.waba

结论
本文全面介绍了专门为嵌入式系统设计的Waba平台、开发工具以及Waba相关资 源。该平台支持包括AmigaOS, BeOS, Linux, MacOS, MS-DOS, Newton, PalmOS 和 Windows CE等一系列嵌入式操作系统,能够在手机、个人数字助理、掌上型电脑、 多功能计算器等多种便携式设备上运行。现有的Waba开发工具使得开发人员能够在 一般开发平台上设计、编译和调试针对便携式设备等目标平台的应用程序,能够大 大缩短嵌入式应用程序的开发周期。目前Waba平台已经在嵌入式应用程序设计领域 得到了广泛的应用,是一个优秀的嵌入式应用程序平台。

关于作者
蒋清野,软件工程专家。1999年7月获得清华大学学士学位,2001年1月获得伊里诺大学(Univ. of Illinois at Urbana-Champaign)硕士学位,目前是美国导航与控制公司(American GNC Corporation)工程专家。主要研究领域包括遥感图像信息处理,GPS应用,惯性导航,无线通讯和高速网络技术。电子邮件:qjiang@tsinghua.edu。
【Qt实战项目】记事本完整项目 效果图如下所示: 全部代码如下: #include “notepad.h” #include int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.showMaximized(); return a.exec(); } 阅读详情

相关推荐

Stata极简生存分析

1. 导入数据 webuse drugtr,clear *webuse -- Use dataset from Stata website stset,clear *上一行命令导入进来的数据是“生存时间数据”,会比最原始的数据多四列,这一行命令的目的是重置为原始数据,之所以这样做,是为了显示数据处理的全部过程 codebook drug codebook studytime codebook died codebook age *codebook -- Describe data contents 2.

TOP生物信息 2336

cnetos7上 docker容器运行“oracle”镜像数据库,并修改基础设置,导入数据,完成基础数据备份。

orlace数据库非常的繁琐,在linux上的安装也是非常反人类。步骤非常多且麻烦,容易出错。不信邪的,在linux上的安装详情可以参见oracle官方文档:https://docs.oracle.com/cd/E11882_01/install.112/e24326/toc.htm然后,如果不手动在linux上安装oracle,或者因为服务器上还有很多别的应用,不想由于安装oracle影响到别的...

夏冬丶王阳旭 4878

1553B通信项目开发笔记(一)协议概述

最近接了个项目,需要用1553B协议通信,仅作为RT端口进行通信,控制器采用ARM 使用芯片为国产的BU61580芯片,功能和引脚和DDC的61580完全一致。

u010396127的博客 2万+

[转载]Java嵌入式开发讲座(第一讲)

Java嵌入式开发讲座(第一讲)简介使用Java编写Palm OS程序的解决方案??现在,使用Java语言为 Palm OS编写程序的领域还没有完全统一,并且也有许多程度上的差异,目前,市面上有好几种不同的可用的应用程序接口,每...

congji3817的博客 332

GO与KEGG富集分析实战:从差异基因到功能注释

本文详细介绍了GO与KEGG富集分析的完整实战流程,从差异基因列表出发,通过基因ID转换、核心分析到结果可视化,系统阐述了如何将基因数据转化为生物学洞察。文章重点讲解了使用R语言clusterProfiler包进行GO和KEGG富集分析的具体步骤、参数设置及常见问题解决方案,并强调了结果解读与生物学故事构建的方法,帮助研究者深入理解差异基因的集体功能倾向。

weixin_29291863的博客 920

SigmaStar(星宸科技)SSC33X系列

目前,SSC33X系列已经量产了接近两年,SDK成熟稳定,功耗表现良好,图像效果出色,广泛应用在AI枪机、AI球机、AI云台机、多目摄像机、停车场闸机、人脸门禁、人脸锁、门铃猫眼等产品上。

Comake Online的博客 1万+

[转载]Java嵌入式开发之一-简介使用Java编写Palm OS程序的解决方案

Java嵌入式开发之一-简介使用Java编写Palm OS程序的解决方案现在,使用Java语言为 Palm OS编写程序的领域还没有完全统一,并且也有许多程度上的差异,目前,市面上有好几种不同的可用的应用程序接口,每种应用程序接...

congji3817的博客 364

浙大数值分析lab2

最可怕的一道题,题目是这样的 Root of a Polynomial A polynomial of degree nnn has the common form as p(x)=cnxn+cn−1xn−1+⋯+c1x+c0p(x)=c_n x^n + c_{n-1} x^{n-1} + \cdots + c_1 x + c_0p(x)=c​n​​x​n​​+c​n−1​​x​

yao_zou的博客 4797

基于Windows CE的嵌入式Java解决方案(转载)

基于Windows CE的嵌入式Java解决方案                                qyjohn@SMTH[摘要]   本文介绍了一系列基于Windows CE的Java虚拟机以及集成开发环境,其中包括IBM公司的Visual Age Micro Edition, Sun公司的Personal Java, WabaSoft 发起的Waba,Insignia公司的Jeod...

临涧小屋 247

伯德图逆向工程:用MATLAB从扫频数据中提取系统特性的5个关键步骤

本文详细介绍了使用MATLAB从扫频数据中提取系统特性的5个关键步骤,包括数据预处理、频响特性提取、相位解缠绕、系统特性反演和结果验证。通过伯德图逆向工程技术,工程师可以有效分析黑箱系统的频率响应特性,解决噪声干扰和相位跳变等实际问题,提升控制系统调试效率。

weixin_29081163的博客 199

PCL 区域生长分割【2026最新版】

区域生长算法原理介绍、代码实现以及一个具体实验场景的应用案例进一步实现将分割结果的分类保存至本地文件夹。最近一次更新时间为:2026年5月4日。

点云侠的博客 40万+

基于Windows CE的嵌入式Java解决方案

[摘要] 本文介绍了一系列基于Windows CE的Java虚拟机以及集成开发环境,其中包括 IBM公司的Visual Age Micro Edition (就是现在的WebSphere Studio Device Developer), Sun公司的Personal Java, WabaSoft 发起的Waba,Insignia公司的Jeode (就是现在Esmertec的Jeode),Ns

91program 的流水空间 5106

高通camx进程ExtensionModule::TeardownOverrideSession类型crash问题分析之一:【死锁导致】

摘要:本文分析了一个在相机老化测试中出现的pthread_cond_wait持锁超时导致的ExtensionModule::TeardownOverrideSession崩溃问题。通过crash堆栈和日志分析,发现close阶段存在近1分钟的无响应期。进一步分析trace文件发现存在多线程死锁:ChiFeature2Graph::GenerateSmartErrorCode和ChiFeature2RequestObject::SetCurRequestState两个线程分别持有不同锁并互相等待对方释放。最终

1111

[转]国内有关嵌入式开发的论坛

国内有关嵌入式开发的论坛电子产品世界的论坛[2004年09月30日]http://bbs.edw.com.cn/index.asp恒颐高科论坛[2004年09月30日]http://www.hyesco.com/forum/index.asp国内站点华恒公司的主页,里面有很多的相关资料,有待大家去发现http://www.hhcn.com/chinese/embedlinux-res.htmlSk

实业兴国 实干报国 2099

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Java设计Palm OS程序解决方案

<!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"

zgqtxwd的专栏 523

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

使用Java编写Palm OS程序的解决方案

现在,使用Java语言为PalmOS编写程序的领域还没有完全统一,并且也有许多程度上的差异,目前,市面上有好几种不同的可用的应用程序接口,每种应用程序接口都给出了一个到当前的PalmOS应用程序不同程度的访问权限。也许这其中大家最熟悉的是Sun微系统出品的产品;但是能够为PalmOS写程序的绝不只有这一种产品。本文这一部分并不是介绍使用Java编写Palm程序的教程--因为每种我们将要讨论...

weixin_30664539的博客 136

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

J2ME应用程序开发指南

J2ME应用程序开发指南  本文并不是介绍使用Java编写Palm程序的教程--因为每种我们将要讨论的解决方案都有自己的要求和值得注意的地方--这是一篇向开发者概括介绍Palm OS应用程序开发工具的的文章,我们将纵观这一领域,找出在使用Java语言开发Palm OS应用程序时,你应该使用什么工具以及你又能够得到什么 ⊙简介  慨括介绍目前比较流行的各种Palm OS应用程序解决方案⊙J2ME之谜

Pinocchio 的专栏 945

开发Foxmail与Pocket PC的同步软件系列之一--FreeMail

一、前记     本人是mail-list和news-group狂,买了台HP-1940的PDA想在上面处理邮件。    由于在PC端上用了四年foxmail,对M$的庞大且多bug的outlook并不感冒,而Pocket PC只有outlook的同步。于是突发狂想也来玩下PDA编程,我联系了博大,希望他们提供foxmail的所有邮件格式(如索引文件、account文件等)。估不到张小龙对

rickyzhang198264学习笔记 6444

Java task类需要自己销毁_java-循环AsyncTask类必须声明为抽象或实现抽...

我试图遍历表中的一些记录,并为每个记录使用一个值作为参数;>获取网页以解析一些html>获取一些要解析的JSON数据并从中获取几个值这些都靠自己完美地工作,但是我不能让它们都在AsyncTask中工作.我在这里有代码.我知道我可能还很遥远,但是如果有人可以轻推我的想法如何,我将非常感激.在第一行private class FetchWebsiteData extends AsyncTa...

weixin_34270668的博客 176

Java学习笔记14(接口+工厂模式)

文章目录接口接口的特点:**为什么要接口** 接口 Java不支持多重继承。有了接口,就可以得到多重继承的效果。 接口(interface)是抽象方法和常量值的定义的集合。 从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。 接口的特点: 用interface来定义。 接口中的所有成员变量都默认是由public static final修饰的。 接口中...

佛系研究生8的博客 431
上一篇: 免费数据库清单
下一篇: JDBC 文档页
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值