基于Windows CE的嵌入式Java解决方案 【转载】
0赞基于Windows CE的嵌入式Java解决方案 【转载自 中国JAVA手机网】
[摘要]
本文介绍了一系列基于Windows CE的Java虚拟机以及集成开发环境,其中包括IBM公司的Visual Age Micro Edition, Sun公司的Personal Java, WabaSoft 发起的Waba,Insignia公司的Jeode,Nsicom公司的CrEme以及New Monics公司的PERC。
在Java虚拟机的支持下,一个嵌入式应用程序不但可以运行在不同硬件平台不同版本的Windows CE操作系统上,还可以轻易的移植到其他嵌入式操作系统上。因此,在嵌入式应用程序开发方面,嵌入式Java比嵌入式VC或者是嵌入式VB具有不可替代的优势。
[介绍]
Windows CE,根据微软公司在Windows CE and Pocket PC: FAQ 中的定义,是操作系统开发商用以构建专有操作系统的一系列组件。原始设备制造商(OEM) 可以向微软公司购买一个称为“Windows CE平台开发系统”的集成开发环境并利用该系统组装和编译基于Windows CE的操作系统,该操作系统包括一系列基于Windows CE的组件以及开发商自行开发的应用软件或者是设备驱动程序。由于基于Windows CE的操作系统具有与微软Windows 系列操作系统相类似的用户界面,因此受到众多最终用户以及开发商的青睐。目前Windows CE已经被广泛应用在手机,掌上型电脑,个人数字助理,快译通以及电子字典等便携式设备上。
虽然Windows CE的原义是指一系列操作系统组件,通常意义上的Windows CE,则是指一切基于Windows CE的操作系统,例如采用了Windows CE 2.x技术的掌上型电脑Palm-Size PC操作系统(譬如CASIO的Cassiopeia) 和采用了Windows CE 3.0技术的Pocket PC操作系统(譬如Compaq的iPad H3650)。 通常意义上的Windows CE应用程序开发,基本上也是针对这两个操作系统的应用程序开发。
就象微软的Visual Studio系列产品是Windows平台上最有效率的集成开发环境一样,目前最为流行的针对Windows CE的两个集成开发环境也是由微软开发的,分别称为嵌入式VC (Embedded VC 3.0)和嵌入式VB (Embedded VB 3.0)。可以想象,这两个集成开发环境与Windows 平台上的VC和VB具有异曲同工之妙。但是,即使是使用微软自己的集成开发环境为微软自己的操作系统开发应用程序,开发人员仍然需要时时忍受不兼容的痛苦,例如为Pocket PC 编写的应用程序不能够在Palm-SizePC上运行,即使是完全一模一样的应用程序也要为不同版本的Windows CE不同的硬件平台分别建立一个项目分别编译发布,等等。
自从Java语言问世以后,其“一次编译,到处运行”的强大特性立即吸引了众多的嵌入式系统开发商。在短短的几年时间内,大量基于Linux, QNX, VxWorks 等嵌入式操作系统的Java虚拟机在业界不断的涌现出来,同时也产生了大量针对不同设备的嵌入式Java应用程序。虽然微软公司由于控制Java的努力失败而对Java采取了抵制措施,但是嵌入式Java仍然顽强的在微软一统天下的Windows CE市场中占据了一席之地。在Java虚拟机的支持下,一个应用程序不但可以运行在不同硬件平台不同版本的Windows CE操作系上,还可以轻易的移植到其他嵌入式操作系统上。因此,在嵌入式应用程序开发方面,嵌入式Java比嵌入式VC或者是嵌入式VB具有不可替代的优势。
本文介绍了一系列基于Windows CE的Java虚拟机以及集成开发环境,其中包括IBM公司的Visual Age Micro Edition, Sun公司的Personal Java, WabaSoft 发起的Waba,Insignia公司的Jeode,Nsicom公司的CrEme以及Newmonics公司的PERC。
[Visual Age Micro Edition]
Visual Age for Java,这个由IBM公司开发的集成开发环境,想来任何一个经常使用Java的开发人员都不应该感到陌生。在2001年9月,Visual Age for Java被Java开发人员杂志(Java Developer's Journal)评选为本年度最佳Java集成开发环境,最佳团队开发工具,以及最有新意的Java产品。
Visual Age Micro Edition则是IBM 公司开发的嵌入式Java解决方案,包括一个完备的集成开发环境和一系列针对不同平台的虚拟机。 在2001年7 月, VisualAge Micro Edition被Java专家杂志(Java Pro)以及Sun公司共同评选为本年度最佳嵌入式Java开发工具。
使用Embedded VC或者是Embedded VB的开发人员有福了。为Pocket PC 编写的应用程序不能够在Palm-Size PC上运行?即使是完全一模一样的应用程序也要为不同版本的Windows CE不同的硬件平台分别建立一个项目分别编译发布?这些微软专有缺陷(Microsoft Proprietary Bug) 在Java语言“一次编译,到处运行”的强大特性面前已经不复存在。利用Visual Age Embedded Edition 编写的应用程序不仅仅可以不加修改的顺利运行在各种硬件平台各种版本的Windows CE上,还可以不加修改的顺利运行在AIX, Linux, ITRON, OSE, PalmOS, QNX, Solaris, Windows 等其他平台上。
Visual Age Micro Edition包括如下强大特性:
(1) 一个可靠的可裁剪的J9虚拟机。该虚拟机提供了对Java本地方法(JNI) 的支持和可靠的递增式垃圾回收机制。该虚拟机支持扩展的Java实时标准和TCP/IP协议,并且支持动态类库加载。更为重要的是,该虚拟机能够从文件加载事先编译好的软件与程序,从而减少了应用程序的启动时间,提高了整个应用程序的速度。该虚拟机包括四个不同版本的标准配置,开发人员可以根据应用程序的需要选择合适的配置,例如jclXtr比较适合资源十分紧张运行环境,而jclMax需要占用更多的系统资源但是能够提供更多的功能和特性。此外,开发人员还可以根据应用程序的需要对这些配置进行裁剪,从而为自己的应用程序设计一个最佳的配置。
(2) 支持多个硬件平台多种操作系统。目前Visual Age Micro Edition支持的硬件平台(微处理器)包括:386, 68K, MIPS, PowerPC, SH3, SH4, Sparc, StrongArm和x86。目前Visual Age Micro Edition支持的操作系统包括:AIX, Hard Hat Linux, ITRON, OSE, PalmOS, Pocket PC, QNX, Solaris, Windows和Windows CE。
(3) 功能完备的集成开发环境。除了其他集成开发环境都会提供的界面设计、代码编译和程序编译功能之外,Visual Age Micro Edition能够制作ROM 镜象文件并且将应用程序上栽到目标平台进行调试,能够对应用程序的资源使用状况进行分析和评估。此外,Visual Age Micro Edition还提供了一系了的工具,使得开发人员能够很容易的实现代码重用、团队合作、以及版本控制。
Visual Age Micro Edition的网站地址为:http://www.embedded.oti.com/。感兴趣的读者可以访问该网站以获得更多的信息。
[Personal Java]
Personal Java是Sun公司专门为Windows CE 2.11设计的Java 运行环境,该运行环境的目标硬件平台是MIPS和SH3,并且要求目标平台至少具备16 MB的存储空间和16色或者是灰度显示设备。经测试Personal Java运行环境还可以在Windows CE2.12, IBM Workpad Z50, Compaq Aero 2100以及HP Jornada 430 SE等便携式设备上运行。由于Windows CE 2.11中使用了一些与Windows CE 2.0不同的I/O函数,因此Personal Java不能够很好的在Windows CE 2.0上运行,并且Sun公司也没有计划继续完善对Windows CE 2.0的支持。根据Sun 公司网站所提供的消息,目前有一个团队正在开发基于Windows CE 3.0 (Pocket PC 3.0) 的Personal Java,并且计划于2000年10月发布一个测试版本。但是知道作者撰稿之日为止,我们还是没有能够从Sun 公司的网站下载到支持Pocket PC 3.0的Personal Java。
Personal Java支持标准Java语言1.1.6版本的一个子集,此外又增加了一些专门为Windows CE设计的API 。熟悉Java的开发人员能够在自己熟悉的Java开发平台上进行应用程序开发,唯一需要注意的就是不能够使用Personal Java 所不支持的
类库与特性。
在Personal Java中完全支持的标准Java类库包如下:
java.applet java.awt.datatransfer java.awt.event
java.awt.image java.beans java.lang
java.lang.reflect java.net java.net
java.text java.util
此外,在Personal Java中还包括了一些不完全支持的标准Java类库包(例如java.awt和java.io)和一些可支持可不支持的标准Java类库包(例如java.math,和java.rmi)。开发人员使用这些类库时必须注意这些类库是否被Personal Java支持或者是其特性是否与标准Java类库有所不同。
Personal Java虽然没有能够提供一个集成开发环境,但是它为开发人员提供了一个模拟运行环境(Personal Java Emulation Environment, PJEE),使得开发人员能够在开发平台(桌面计算机)上模拟运行专门为Windows CE设计的应用程序。PJEE有点类似于标准的Java运行环境(Java Runtime Environment, JRE),用户需要将其安装在自己的开发平台上并且设置PATH, JAVA_HOME, CLASSPATH 等环境变量才能够使用。与标准JRE相类似,在PJEE中开发人员通过命令行来启动PersonalJava应用程序,例如命令pjava MyApp可以启动一个名为MyApp 的应用程序。目前版本的PJEE仅仅支持Windows和UNIX两个平台。
Personal Java的网站地址为:http://java.sun.com/products/personaljava/。感兴趣的读者可以访问该网站以获得更多的信息。
[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。 为了保持与Java平台的兼容,Waba还提供了一系列过渡类库使得Waba应用程序也能够在仅仅任何安装了Java运行环境的平台上运行。它既可以是 Windows或者UNIX下面的普通应用程序(Application),也可以是内嵌在浏览器中的一个小应用程序(Applet)。
WabaSoft提供了一个软件开发工具包(Software Development Kit),称为WabaSDK 。这个工具包提供了所有的Waba基本类库,开发人员可以将这些基本类库添加到自己熟悉Java开发环境中去,然后在自己熟悉的Java开发环境中进行 Waba应用程序开发。一个最基本的Waba开发环境是Java SDK + Waba SDK,开发人员需要利用Java SDK中提供的javac来编译Waba应用程序。外,Waba SDK 还提供了针对一个针对Windows CE的代码转换工具ExeGen和Warp,利用这两个工具开发人员能够将编译以后的Waba类库文件转换成Windows CE平台上的可执行文件。
随着Waba平台在嵌入式系统中的广泛应用,专门为Waba设计的集成开发环境也不断的涌现出来,VisualWaba和UIGen 可以说是这些第三方集成开发环境中的佼佼者。VisualWaba和UIGen 本身都是利用Java开发的应用程序,用来进行应用程序开发似乎有点反应迟钝,但是如果综合考虑一下Borland JBuilder和IBM Visual Age for Java的性能,VisualWaba和UIGen 的速度还是可以容忍的。相对来说UIGen 的功能还比较弱,只能够根据用户设计的界面生成相对应源代码。VisualWaba更类似于微软的Visual Basic,开发人员不但能够在其中进行界面设计和程序设计并生成源代码,还能够对程序进行编译,最后生成Windows CE平台上的可执行文件。
关于Waba平台的更多情况,感兴趣的读者可以访问如下网站:
(1) WabaSoft: http://www.wabasoft.com
(2) Waba Workbench: http://www.wabaworkbench.com
(3) Visual Waba: http://www.dmic.fr/palm/prg2.htm
[Jeode]
Jeode是Insignia 公司开发的针对多个平台的嵌入式Java运行环境。目前版本的Jeode虚拟机支持如下硬件平台和操作系统:
基于SH或者是MIPS芯片的Windows CE 2.12/3.0;
基于ARM芯片的Linux;
基于Intel x86芯片的Windows NT; 以及基于PowerPC芯片的VxWorks。
Jeode虚拟机支持Personal Java标准中的所有内容,因此基于Personal Java的应用程序基本上可以不加修改的在Jeode虚拟机上运行,基于Jeode 的应用程序也可以不加修改的在Personal Java上运行。这些共同的标准Java类库包括如下内容:
java.awt java.applet java.beans
java.io java.lang java.lang.reflect
java.math java.net java.rmi
java.security java.sql java.text
java.util java.util.zip
由于Jeode 虚拟机使用了Insignia公司的动态适应性编译技术,并且实现了精确的同步垃圾回收,因此能够大大的提高Java应用程序的效率和反应速度。根据一些用户以及第三方测试人员所提供的数据,动态适应性编译技术使得应用程序的执行效率比标准的解释执行方式提高6 倍,而对内存的要求基本上与标准的解释执行方式相同;动态适应性编译技术使得应用程序的执行效率与及时编译技术(JIT) 相类似,但是对内存的要求仅仅是即使编译技术的1/4。
Jeode 的网站地址为:http://www.insignia.com/products/default.asp。感兴趣的读者可以访问该网站以获得更多的信息。
[其他]
(1) CrEme
CrEme是由Nsicom公司专门为Windows CE设计的Java虚拟机,该虚拟机符合Sun公司所制定的Personal Java标准,因此能够运行基于Personal Java的应用程序。在Personal Java标准的基础上,CrEme虚拟机提供了对Swing的支持。但是,需要注意的是,在应用程序中使用Swing往往意味着更大的内存开销,因此Swing 可以说是CrEme的一个特色,但却不一定是CrEme的一个优点。
目前版本的CrEme虚拟机支持MIPS, Power PC, SH3, Strong Arm以及Intel x86芯片上的Windows CE 2.x的所有版本。
参考站点:http://www.nsicom.com/products/creme.asp
(2) PERC
PERC是目前唯一的一个与Java 1.3相兼容的嵌入式Java虚拟机。该虚拟机目前支持68K, Intel x86, MIPS以及Power PC芯片上的Linux, Windows CE以及VxWorks等一系列操作系统。
参考站点:http://www.newmonics.com/
[结论]
本文介绍了一系列基于Windows CE的Java虚拟机以及集成开发环境,其中包括IBM公司的Visual Age Micro Edition, Sun公司的Personal Java, WabaSoft 发起的Waba,Insignia公司的Jeode,Nsicom公司的CrEme以及New Monics公司的PERC。众多厂家纷纷开发Windows CE的Java虚拟机以及集成开发环境表明:虽然微软公司由于控制Java的努力失败而对Java采取了抵制措施,但是嵌入式Java仍然顽强的在微软一统天下的Windows CE市场中占据了一席之地。
在Java虚拟机的支持下,一个嵌入式应用程序不但可以运行在不同硬件平台不同版本的Windows CE操作系统上,还可以轻易的移植到其他嵌入式操作系统上。因此,在嵌入式应用程序开发方面,嵌入式Java比嵌入式VC或者是嵌入式VB具有不可替代的优势。