Java对于服务器,个人电脑和移动设备来说是一项伟大的技术.由于需要java的跨平台的特性,因此java在服务器和移动设备方面的应用是非常成功的。但java在个人电脑应用方面的情况和在服务器及移动设备方面的应用有所不同,但是这很快就会有所改变,至少比你想象得要快。在这篇文章中,我会分析一下java在桌面环境中的应用将怎样得到提升,然后具体说一下java GUI(用户图形接口)的三个主要的工具:AWT, Swing, 和SWT.。在下文中,我将会开发一个完整的java桌面应用程序.
Java与桌面端
现在,流行的桌面平台要数Windows、Mac、and Linux了。但它们不是十全十美的,Windows主宰着桌面操作系统的市场,其上有巨大的应用和开发群体,但它昂贵且有许多安全漏洞。Linux有着稳固的基础,它是开源的软件,比Windows更可靠。Macs非常容易操作且不是黑客的目标,但与Windows和Linux比起来,Mac的硬件和软件可选的余地非常的有限。公司和个人选择他们的操作系统基于许多因素。花费少且安全性高是首选的因素,这导致一些组织从Windows 系统转而选择Linux。对许多用户来说,可用性及对原有应用程序的支持是非常重要的因素,这意味着Windows 将继续享有巨大的市场。Mac有其自己忠诚的用户,这使得苹果机仍然可以存活,Linux 在桌面的流行及Mac的成功创造了多样性,这种多样性正是Java需要的,这种多样性使得Java在桌面有举足轻重的地位。
跨平台的支持
Java 运行于所有相关的操作系统,包括Windows、 Mac和Linux。对于任何组织,他想把现有的应用从一个操作系统移植到另一个操作系统而不用做太多的改动,那么Java正是他们首选的桌面开发平台。或许用微软的可视化工具很容易构建.NET应用,但是这将使你被绑定在了Windows平台上了。 很多人也许想立刻用Linux 代替Windows 从而避免由微软件操作系统的漏洞带来的问题。用户不能容忍的问题之一是当从Windows移植到Linux带来的巨大的费用。如果你的应用程序用Java构建,你就没有了这些问题,Java的图形用户界面看上去会跟你用的操作系统一样,而并不需要做什么改动。 假如有一天又有一种桌面操作系统出现的话,java 是个安全的赌注,因为它现在能够运行在Windows和Linux 上,那么可以推测它也可以运行在将来可能出现的操作系统上,这些操作系统可能或迟或早地由微软,或是开源社区,或是其它的人开发出来。
丰富的特征
最初,Java只有非常有限的一些特征去构建图形用户界面。思想就是用平台无关的Java应用程序接口打包不同的操作系统的本地图形用户界面,称之为抽象的窗口工具。仅有普通的部件如文件域、文本区、选择框、单选按钮、列表框和按钮被AWT支持,图形和图像的特性支持非常有限,也就是说,只足够构建简单的applet程序。 认识到需要更高级的图形用户界面组件和图形能力,Sun公司开发了Swing,Java 2D,Java 3D,图像的输入/输出,Java高级图像(JAI)和很多其它的。这些中的一些窗体组件现在已经是Java 2标准版(J2SE)里的一部分,并且其它的一些扩展必须和你的应用程序打包在一起。例如Swing、Java 2D、图像的输入/输出都是Java的核心API,随着Java开发工具包(JDK)和Java运行环境一起提供。让我们不要忘了J2EE平台。如果你开发服务器端的应用程序并且需要丰富的图形用户界面,那么你毫无疑问应该选择Java。这允许你把服务器端的一些代码移到客户端,反之亦然。例如:一个项目可能开始是基于WEB和图形界面,在某些时候,用户可能要求图形元素不能在HTML中实现,如果你选择java做客户端应用,那么你可以重用这些当初用来做服务器端的代码。如果你用远程调用,一些类会真正地实现服务器和客户端的共享。通过页面服务器,Java桌面应用也能够和其它的Java 或非Java应用程序通信,如CORBA, TCP/IP,或是 HTTP。
Java图形界面工具
Java有三个主要的图形界面工具:AWT,Swing和SWT。Swing 是构建java图形界面标准的API(应用程序接口),一些AWT类由Swing基础而来。SWT是一个非常有前途的新的窗体工具,由IBM资助。但是事实上,这三者相互补充,他们满足不同的需求。
AWT
抽象窗口工具集为简单的applet程序设计,它不适宜用来构建丰富的桌面图形界面。但是从开始被介绍,它至少有一个好的思想就是布局管理,它负责为组件找到一个放置的位置,这种机制是必需的,因为GUI组件在不同的操作系统中有不同的尺寸。 现在, AWT扩展了组件模型和事件处理机制(由JavaBeans说明定义),新的图形API(称为Java 2D),支持剪贴板和拖拉操作,打印,准入,和新的GUI工具Swing,所有这些都归到Java基础类中(JFC)。 Swing Swing是曾经开发的最复杂的GUI之一。它有一套完全的组件从按钮到文件域到表格,树型和文件编辑器。这些组件不依赖于操作系统本地的部件,而是用原始的图形像直线、矩形、文字画出。这种画代表感观插件,它能够模仿本地的感观。 Swing也有平台无关的外观称为"Metal"。 Swing的结构由MVC模式得到启发,这里在屏幕上的视觉GUI组件和支持数据的模型对象之间有一个明显的分隔,在GUI和数据层之间的通讯基于事件。在最初的Swing版本中有许多错误并且有执行问题,这减慢了接受它的速度。Swing最大的问题是被从事于并且许多人相信它是为开发桌面应用而准备的。今天,有许多基于Swing开发的商业产品,包括大多数的Java集成开发工具,我所喜欢的集成开发工具是Jbuilder,它的速度相当的快。
SWT
SWT是IBM为它的Eclipse集成开发环境而开发的图形用户界面工具。SWT可以在Eclipse环境外使用,而且提供对操作系统本地图形用户界面的直接访问。因此,基于SWT的Java应用程序拥有本地的图形用户界面并且可以和本地别的应用程序和部件集成在一起。 假如你的桌面应用程序产生HTML报表,你想把它显示给用户看。你可以使用Swing去浏览简单的HTML文档,但这不是一个理想的的解决方案。最好是在你的应用程序里提供IE或者Mozilla浏览器引擎。SWT社区现在正在设计浏览器API,这些API可以让你产生基于IE或者Mozilla的HTML窗口。 SWT现在可以在AIX, HPUX, Linux, QNX, Solaris, and Windows下面运行。Mac OS X is 也在进行之中