欢迎来到天天文库
浏览记录
ID:52243532
大小:86.35 KB
页数:1页
时间:2020-03-25
《创建本机、跨平台 GUI 应用程序.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、创建本机、跨平台GUI应用程序Java语言在服务器端和applet领域已经大行其道,但是对于最终用户应用程序,通常它不是主角。其实不一定会是这种情况。使用Linux、用于Java的GNU编译器(GNUCompilerforJava)和标准窗口构件工具箱(StandardWidgetToolkit),您可以创建用Java语言编写的快速、本机GUI应用程序。(Windows版本的也不远了。)经验丰富的Java开发人员KirkVogen说明了如何做到这一步。通过单击本文顶部或底部的讨论在论坛中将您对本文的
2、想法与作者和其他读者一起分享。众所周知,Java语言在服务器上以及applet领域已经非常成功了,但是它在最终用户应用程序领域为什么没有大行其道呢?有几个原因。首先,即使很小的应用程序的内存占用通常也有好几兆字节。第二,与Java语言一起提供的GUI库产生的应用程序通常看起来与其本机同类应用程序不同。因此,无论您的应用程序多么健壮或稳定,与本机应用程序相比,它都显得非常笨拙。用于Java的GNU编译器让我们从内存占用问题开始。Java应用程序要使用额外的内存,因为运行Java字节码时,虚拟机必须完成
3、许多“工作”。在当今高级编译器中,编译即时(just-in-time)发生并且编译器必须对这一信息立即(on-the-fly)进行高速缓存以供以后使用。当然,现在内存是便宜,但是当有几个Java应用程序同时在一台机器上运行时,即使是大机器也可能由于持续的内存页面调度而放慢速度。进入用于Java的GNU编译器(GCJ)。GCJ获得Java源代码或字节码,然后将它们编译成本机机器代码。然后,可以将来自几个Java类的机器代码链接在一起成为单个本机应用程序。一月份,MartynHoneyford为我们提供
4、了本机编译和GCJ的简介(请参阅参考资料以获取到Martyn文章的链接)。正如他通过示例向我们展示的那样,本机编译的应用程序使用的内存通常要比在虚拟机中运行的应用程序要少得多。标准窗口构件工具箱这很棒,但是正如Martyn指出的,GCJ尚不支持AWT或Swing。因此,我们现在将如何建立本机编译的GUI应用程序呢?进入标准窗口构件工具箱(SWT)。这一API是开放源码Eclipse工具平台的一部分。为了避免引起Swing与SWT的对抗(请参阅参考资料以获取关于这场争论的更多详细信息),让我说明一些S
5、WT的优势。SWT试图弥补AWT和Swing的缺点。使用AWT,我们将受到“最小公分母”限制:仅支持存在于所有平台上的窗口构件。因为Motif没有提供本机树型窗口构件而Windows提供了该功能,AWT就没有包含树型窗口构件。Windows上的GCJWindows上的GCJ还未实现。由于GCJ中存在一个涉及与场合无关的文件系统(例如,FAT和NTFS)的错误,GCJ目前还不能在Windows上运行。但是,在GCJ3.1中接下来最好的一件事应该出现。使用Linux,您将能把GCJ设置成交叉编译器,它将
6、允许您在Linux上编译代码而生成Windows二进制文件。GCJ3.1是针对2002年4月15日的发行版。请参阅GCJ主页和邮件列表(在参考资料中提及的)以获取最新的发展。Swing走向了另一个极端。虽然带有一个很出色的API进行优雅地设计,Swing还是自己实现窗口构件。因此Swing不依赖于操作系统提供窗口构件。无论本机是否支持,这都为Swing提供了不可思议的灵活性。但是,因为Swing自己绘制这些窗口构件,所以最终的外观看起来与本机应用程序有明显的不同。SWT试图弥合这两个GUI工具箱之间
7、的差距。它的行军命令是:“如果有本机窗口构件就使用它。如果没有,就模拟它。”前面提到的树型窗口构件就是这样一个示例。因为Windows支持本机树型窗口构件,所以在Windows上运行时,SWT就使用它。但是,Motif不支持树型窗口构件,因此SWT在Motif下运行时绘制其自己的窗口构件版本。使用SWT,结果应用程序看起来与其本机的同类应用程序很相似,因为尽可能地使用了本机窗口构件。设置开发环境因此,如何在本机编译所有这些应用程序呢?首先,您需要一个使用GCJ设置的开发环境。目前,在Linux和其它
8、UNIX变体(请参阅“Windows上的GCJ”侧栏以了解GCJ在Windows上的情况)上支持GCJ。设置开发环境的最简便方法是安装一种Linux分发版的新近版本。Mandrake8.1和RedHat7.2都带有需另外安装的GCJ3.0.1。因为GCJ仍然在发展,所以可能想考虑使用最新和最好的版本。我选择在版本3.0.3和3.0.4上进行测试。手工安装GCJ相对容易;GCJ页面提供了相当好的文档(请参阅参考资料)。一旦有了一个具有GCJ的环境,则下载EclipseS
此文档下载收益归作者所有