J9C 编译器的使用- -| 回首页 | 2006年索引 | - -在QNX平台上开发Java应用程序 4

在QNX平台上开发Java应用程序 1

                                      

1.1 QNX 实时操作系统介绍

QNX 实时操作系统(QNX Real Time Operating System)是由位于加拿大渥太华的QNX软件系统公司开发的一个针对嵌入式应用的微内核操作系统。QNX软件系统公司成立于1981年,在过去的20 多年中一直致力于微内核实时操作系统的研究与开发。目前的QNX 实时操作系统已经发展成一个可以使用在严实时应用中的高可靠性实时操作系统,能够运行在x86/Pentium, PowerPC, ARM, StrongARM, XScale, MIPS, SH-4等一系列硬件平台上,是在关键任务应用中首选的两个实时操作系统之一(另外一个是VxWorks)。

QNX 是一个与电气工程师协会(Institute of Electrical and Electronics Engineers,IEEE)发表的便携式操作系统界面标准(Portable Operating System Interface, POSIX) 相兼容的实时操作系统。该操作系统提供了一系列可裁剪的功能全面的高可靠性高性能组件,包括分布式计算,资源管理,网络应用,图形窗口系统,文件系统,以 及对Java的支持等等。此外,QNX还是一个与Linux高度兼容的操作系统,由于gcc和gmake等Linux 平台上常用的应用程序开发工具已经被移植到QNX 平台上,很多为Linux平台编写的应用程序可以直接拿到QNX平台上编译运行。此外,QNX还提供了一个类似于Visual C++的应用程序集成开发环境,称为Photon Applicatioin Buider (PHAB)。在这个集成开发环境里程序开发人员能够很方便的开发和调试基于图形用户界面的QNX 应用程序。

更 为重要的是,对于应用程序开发人员来说,QNX是一个完全免费的实时操作系统。根据QNX软件系统公司发布的使用授权协议,在一个产品商业化之前应用程序 开发人员可以自由的使用QNX实时操作系统系统而无须向QNX 公司交付任何软件使用费用。同样,QNX的应用程序集成开发环境PHAB对于软件开发人员来说也是免费的。QNX 实时操作系统以及QNX应用程序集成开发环境均可以从QNX公司的主页www.qnx.com下载。

1.2 QNX 实时操作系统对Java语言的支持

QNX Neutrino使用IBM公司开发的业界领先的J9虚拟机为Java应用程序以及小应用程序提供了支持。目前可供选择的方案有两个,一个是与J2ME标 准完全兼容的WebSphere嵌入式环境,另外一个是WebSphere客户环境,提供了一个可裁剪的Java 2语言标准的子集。由于QNX 是一个多任务操作系统,因此可以同时运行多个虚拟机为不同的应用程序提供服务。基于微内核的microGUI窗口界面系统为AWT提供了全面的支持,在其 它平台上开发的基于AWT的图形用户界面可以不加修改的在QNX平台上运行。此外,QNX还通过使用本地线程保证了正确的线程调度。

IBM 公司开发的J9虚拟机通过了Modena JT++以及Plum Hall JVS 等一系列严格的业界测试,是一个与J2ME标准完全兼容Java虚拟机。由于J9是一个专门为实时的嵌入是应用开发的虚拟机,因此在其设计中对速度优化, 内存管理,线程管理,本地方法,垃圾回收,及时编译,可移植性以及可裁剪性能方面做了很大的努力。根据多个公开发表的测试结果,J9虚拟机是目前运行速度 最快的嵌入式Java虚拟机。对本地方法的支持,使得应用程序开发人员能够直接控制外围设备,调用实时操作系统的功能。J9虚拟机本身对内存的要求极少, 用户更可以通过一个配置工具使得应用程序在特定的嵌入式系统中对内存的要求降低到最小。就象一般的Java应用程序一样,内存的分配和回收都是通过虚拟机 来自动管理的,因此在一般情况下不会产生内存泄露。此外,J9虚拟机还提供了一个垃圾回收机制管理工具,使得用户能够在运行时刻控制和改变所使用的垃圾回 收机制。在线程管理方面,J9虚拟机直接使用底层实时操作系统所提供的线程调度机制,从而保证了正确的代码能够在正确的时间被执行。高度可裁剪的类库使得 用户能够将应用程序所不需要的类和方法排除在嵌入式系统之外,从而进一步节省了对系统存储空间的要求,也间接地提高了嵌入式应用程序的执行速度。目前版本 的J9虚拟机支持大多数流行的嵌入式软硬件平台,包括运行在x86, MIPS, PowerPC, SH-4, 68K, SPARC平台上的Windows, Linux, QNX, Solaris, AIX, Pocket PC, Palm OS等操作系统。由于J9虚拟机卓越不群的表现,它被Java Pro杂志评选为2002年度最佳嵌入式Java平台。同时,使用J9作为Java平台的WebSphere Studio Device Developer (也就是以前的Visual Age for Java Micro Edition) 也被Java Pro杂志评选为2002年度最佳嵌入式开发工具,又被Java World杂志评选为最佳Java设备应用程序开发工具。

值 得一提的是,QNX 软件系统公司是Eclipse Consortium的发起者和最早的成员之一。Eclipse 是由IBM 公司牵头开发的开放源代码的Java应用程序开发平台,其目的是为应用程序开发人员提供一套完备的高度可裁剪的高性能软件开发组件。Eclipse Consortium成立于2001年11月,目前已经拥有Borland, IBM, QNX, Red Hat, SuSE, Sybase, Rational等18个成员。由Eclipse Consortium 发布的Java应用程序集成开发环境Eclipse是完全免费的,可以运行在Windows, Red Hat Linux, SuSE Linux, Solaris, QNX和AIX等操作系统上。也就是说,在QNX平台上也是可以使用集成开发环境Eclipse来开发Java应用程序的。

1.3 QNX 实时操作系统以及集成开发环境的安装和配置

QNX 实时操作系统的安装非常简单。首先你需要从QNX公司的网站下载最新版本的QNX 操作系统,下载的地址是http://www.qnx.com/nc/download.qnx。目前最新的版本是QNX 6.2,下载文件是qnxnc620.iso,这是一个CD-ROM映像文件。将这个映象文件里面的内容刻录到一张光盘上,然后利用该光盘启动计算机即可 开始安装QNX 操作系统。总的来说安装的过程相当的简单,只需要选择启动方式以及指定QNX 文件系统所在的位置即可。系统文件拷贝完成后将自动的重新启动机器,然后需要用root登录进入系统并且自动安装其它应用程序。在一台500 MHz + 128 MB的计算机上,安装过程通常都小于15分钟,相对来说还是非常快的。系统安装完成后,即可直接使用PHAB以及gcc等程序开发工具, 但是要使用Java还需要进行一点小小的配置。

J9虚拟 机的缺省安装位置是/usr/eclipse/ive。在这个目录下有bin和lib两个子目录,bin目录包含了J9虚拟机的可执行文件和所需要的库文 件,lib目录则包含了各种版本的Java类库。未来在QNX 系统上使用J9虚拟机,我们需要将合适的目录包括在PATH和LD_LIBRARY_PATH 这两个环境变量中。我们需要修改用户家目录(~)下面的.profile文件,使之包含如下语句:

export J9_HOME=/usr/eclipse/ive
export PATH=$PATH:$J9_HOME/bin:.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$J9_HOME/bin

应 用程序集成开发环境Eclipse SDK for QNX可以从Eclipse Consortium的主页下载,下载地址是http://www.eclipse.org/downloads/。将所下载的zip 文件拷贝到/usr目录中,然后使用unzip命令解压缩。然后你还需要下载针对 J9虚拟机的插件,下载地址是http://dev.eclipse.org/viewcvs/index.cgi/ %7Echeckout%7E/jdt-debug-home/plugins/org.eclipse.jdt.launching.j9/ index.html。你需要根据你所下载的Eclipse SDK for QNX的版本好选择一个合适的插件,然后将下载的zip文件解压缩到/usr/eclipse/plugins目录中。同样,我们需要修改用户家目录 (~)下面的.profile文件从而将Eclipse 所需要的路径和库路径包含在环境变量PATH和LD_LIBRARY_PATH中。

export ECLIPSE_HOME=/usr/eclipse
export ECLIPSE_PLUGIN=/usr/eclipse/plugins/org.eclipse.swt/os/qnx/x86
export PATH=$PATH:$ECLIPSE_HOME
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ECLIPSE_PLUGIN

到此为止我们以及成功的安装与配置了QNX 实时操作系统以及相关的Java应用程序开发工具。下面我们简单的介绍几个常用的命令:

j9c -- 类似于Java SDK中的javac命令,是用来编译Java源代码的。
j9 -- 类似于Java SDK中的java命令,是用来运行Java应用程序的。
eclipse -- 这个命令启动Eclipse for QNX应用程序集成开发环境。

1.4 一个简单的Hello World程序

在没有开始写Hello World之前,我们首先介绍一下QNX 上的文本编辑器。很多熟悉类UNIX操作系统的朋友也许会对vi比较熟悉,但是从Windows操作系统过来的朋友也许不太喜欢。我们这里使用的是QNX 操作系统自带的图形化编辑软件ped。

利用下面命令启动ped:

#ped &

下面是HelloWorld.java的源代码:


public class HelloWorld
{
public static void main(String args[])
{
System.out.println("Hello World!");
}
}

使用j9c命令编译Java源代码:

#j9c HelloWorld.java

使用j9命令运行Java应用程序:

#j9 HelloWorld

需 要注意的是,QNX 操作系统和Java语言都是大小写敏感的,所以一定要把大小写都写对了。另外,对源代码进行编译的时候需要加上文件扩展名,在运行一个Java应用程序的 时候则不需要加上文件扩展名。如果排除了这几种错误之后你仍然无法正确的编译或者是运行你的Hello World程序,请参考 1.3正确配置你的PATH和LD_LIBRARY_PATH。

【作者: bom】【访问统计:】【2006年12月28日 星期四 11:05】【 加入博采】【打印

Trackback

你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=5995562

回复

验证码:   
评论内容: