平台中立是Java的一个重要特性,正是这个特性使得Java非常适用于以网络为中心的计算环境。因此Java一经推出就受到全世界的欢迎。随着Java语言的迅速发展,Java开发工具也越来越多。本文对四种最流行的Java开发工具进行了比较,介绍了它们在平台中立应用的可视化开发方面的各种表现:Sun Java Workshop 2.0、Borland JBuilder Professional 1.0、IBM Visual Age for Java 1.0 Enterprise Edition和Symantec Visual Cafe for Database Development Edition 2.0。
Java如何进行布局管理
基于Windows的工具往往在可视化开发中一直都使用“所见即所得(WYSIWYG)”的方式。这对众多的Windows开发员来讲当然是一个很熟悉的开发环境。但是这种方法开发的应用放到其他的平台上时几乎总是会出现这样或那样的问题。因此在Java的可视化开发中就不能再继续沿用这种开发方式了。
在对这几种Java开发工具进行比较前,我们先简单介绍一下Java是如何解决布局管理问题的。Java提供了一种叫做布局管理器(Layout Manager)的机制来解决网格布局的问题。布局管理器可以根据应用在当前平台上运行时的用户接口可视化对组件控制进行调整。Java包括许多缺省的布局管理器,其中包括card layout、grid layout、border layout、flow layout和gridbag layout等。每个布局在设计不同类型的接口时都有自己的用处。当然这些布局是非常容易使用的。如果不需要的话用户也可以将布局设为NULL,这样将默认回到所见即所得的坐标设计方式。如果用户愿意的话还可以编写自己的布局管理器。
在Java提供的布局管理器中,gridbag是最有用的也是最灵活的,然而许多程序员却发现它也是掌握起来最困难的。gridbag布局由许多网格单元组成,但是在每个单元内组件的安排必须严格遵从X、Y坐标系统。用户可以将一个组件放到某一个单元里,也可以将组件跨越几个单元放置。然后再确定在一个gridbag布局中的组件的重量以控制可视化组件在哪里进行排队,或者是当用户扩大或缩小窗口时确定这些组件的行为。用户可以挤压组件以便在周围环境变化时它们仍然像是保持在它们当前的位置。在窗口调整时挤压还可以确定组件是否需要占用更多的或更少的水平或垂直空间。在用户需要将一个列表盒扩展到占用所有的可用空间但又希望开关的大小基本保持不变时需要用到这项技术。
对网格的这些设置均称为网格限制,放到网格中的每个组件都具有自己的一套网格限制,这些设置将确定组件在布局中的行为。
比较原则
本文主要从以下四个方面对这四种Java开发工具进行比较:
.基于网格创建结构的难易程度
.结构的可维护性
.可视化编程能力
.缺省组件调色板的强弱
Java Workshop 2.0在基于网格布局创建具有吸引力的用户接口方面功能最强,因为Java Workshop是唯一的围绕网格布局创建可视化设计器的工具。然而正是因为这一点使得Java Workshop 2.0有时在灵活性方面就略显不足。但是总的来看,它还是这几种工具中综合表现最好的。
如果用户既要求易于进行可视化布局,又要求有较大的灵活性,JBuilder就是最好的选择。JBuilder允许程序员使用绝对坐标设计结构,然后再将其很方便地转换成网格,这使得管理网格的问题变得相当容易。
在可视化布局方面Visual Age for Java和Visual Cafe for Java要稍胜一筹。如果要想使用这些产品设计网格布局,需要不断摸索和实践才能设置好网格的限制变量。
在可视化编程方面,Visual Age for Java要比其他几种工具好得多。利用Visual Age Visual Composition Editor编辑器再加上一个鼠标用户几乎就可以完成一切开发工作。这个编辑器功能强大,但是熟练掌握它却不太容易。而Visual Cafe for Java不但能够提供Visual Age for Java在可视化方面的绝大部分功能并且容易学习。Java Workshop在可视化编程方面不如Visual Cafe,因为使用它许多代码还是需要手工编写。而JBuilder在可视化编程方面的表现就更不如人意。
如果不是创建大规模的应用,JBuilder和Visual Cafe for Java提供的缺省组件调色板很难比较出个高低来。Visual Caf调色板提供的计时器控制(用于激发事件)很能引起人们的兴趣。JBuilder也具有一些很好的图表控制。Visual Age在这方面要弱一些,但它包括了很丰富的有用的Java类。Java Workshop在调色板方面的功能最差。
Java Workshop 2.0
●结构易于创建
在创建平台中立的网格结构方面,Java Workshop 2.0比其他任何一种Java开发工具都要方便。但是它的这一点好处却经常被一些复杂的设计选择项给掩盖了,要熟练掌握基于网格布局的可视化设计器需要一些功夫,但是这是很值得的。一旦用户掌握了这些设计方法,工作起来就会相当轻松。
用户可以很容易地拖放组件并调整其所占的网格单元区域。用鼠标点网格外的部分就可以控制网格限制的设置(如挤压和填充物等)。运行过程中不管用户在什么时候想检查结构是个什么样子,都可以立即转换到预览模式。用户还可以对预览结构进行调整和控制以观察这些变化能否立刻反映到自己的设计中。
在开发应用时不一定每一步都必须使用网格布局,但Java Workshop中的每一个可视化对象都迟早会用到网格布局。比如说用户可以创建一个流布局板,但是他不能直接将组件从调色板上放到布局板上,还必须先打开一个流布局板的设置框,然后再插入一些项目。而这些项目当然就是网格布局板了。此时才可以使用具有一个或多个组件的网格布局板。这样最后得到的布局板看上去就成了全是组件组成的了,而这些组件都含有自己的网格。这种方式虽然也可以实现相同的效果,但这种设计方法却是许多人不习惯的。
●结构的可维护性
尽管用户可以在当前使用的网格中添加一行或一列,但是却不能单独删除一行或一列。用鼠标击网格时,会选择行与列交叉的所有区域(包括行和列),因此一旦按了删除键就会将行和列一起删除。如果必须要删除某一行,那么首先要加上一列,然后再选择加上的列与欲删除的行交叉的区域并将二者一起删除。虽然这个办法也不是很困难,但是它毕竟不符合可视化编程的潮流,因此将来肯定会被淘汰。
●可视化编程
Java Workshop 2.0的可视化编程特性是很基本的。比如说,虽然用鼠标单击一个开关就可以列出一系列操作,但除非这些操作是非常基本的(如“隐藏表表盒”),否则的话用户还必须要自己编写代码才能完成这些操作。
Java Workshop允许程序员重新安排这些操作,甚至可以确定触发操作行为的过滤器。如当程序员可视化地定义一个操作时,他可以指定这个操作只有在Shift键和GUI开关同时按下时才能发生。
Java Workshop产生的模板带有许多注释,这对程序员是很有帮助的。
●缺省调色板
Java Workdshop的调色板是最差的,仅仅能满足绝大部分应用的基本要求。
JBuilder 1.0
●结构易于创建
JBuilder提供创建平台独立的GUI工具的方式与众不同。从表面上看,JBuilder就与Visual Cafe或Visual Age for Java一样,它默认使用一种叫做XYLayout的布局结构。这个特性允许程序员以所见即所得的方式将组件放到结构中。
但是JBuilder在创建所见即所得的设计和网格布局之间的连结时与其他的所见即所得设计器是不一样的。
JBuilder允许用户使用XYLayout设计一个带组件的结构,然后再将其转换到网格布局中而仍然保持绝大部分你想要的原有设计。而Visual Cafe和Visual Age for Java就不是这样的。这两种工具在用户从一个NULL布局转换到网格布局时,组件会立刻出现在不同的位置并且其大小也恢复到默认的设置。
●结构的可维护性
在JBuilder中设置网格限制相当容易,对任何给定的组件用户都可以弹出一个网格限制对话框,在对话框中可以设置一些网格限制参数,如垂直或水平挤压和填充等。除此之外,用户也可以直接到网格限制属性对话框中进行设置。尽管JBuilder不能像Java Workshop那样在网格布局结构中直接移动组件或调整其大小那样容易和直观,但还是可以完成的。
如果用户打算使用XYLayout-to-gridbag技术来设计结构,那么就应该提前计划好。一旦调整好某个现有结构的网格布局,再想往其中加入一个控制就并不总是很容易了。不仅要针对新的控制调整网格限制,而且要为所有周围的控制重新调整其网格限制。在有些情况下,转过去使用XYLayout来添加组件还更容易一些。但是每当用户从网格方式转换到XYLayout方式时,JBuilder会“忘掉”用户已经调整好的网格限制,因此这对程序员来讲是很不方便的。
这一点正是Java Workshop只允许使用网格这一种布局方式的所长之处。当使用Java Workshop遇到麻烦时,允许在网格布局中添加任意额外的行和列的功能使人们可以很容易添加新的控制而不会对以前的设置造成严重的影响。
●可视化编程
JBuilder提供了一个交互向导(Interactive Wizard)作为可视化编程工具。其目的是能够自动完成组件之间的一些简单的交互操作。然而它的不足之处是交互向导远不够直观而且缺乏一个高级的程序员所要求的灵活性。比如当用户使用它来产生一组代码以便当按下某个开关时可以将文本从一个编辑控制放到一个选择列表中,但是JBuilder交互向导却不能处理两个以上的控制。即使在按下某个开关时使用交互向导将一个静态的条目添加到选择列表中也不行。因为交互向导对于列表盒只能理解四种方法,而添加一个条目并不包括在其中。
用户可以在自己编写的代码中将光标放到某个类上,单击鼠标右键并且选择“浏览光标处的符号”来跳到类浏览器上。除此之外,JBuilder也像Visual Cafe那样使用了类库参考,而且其类库参考非常丰富,有时甚至比Visual Cafe中包括的参考还要有用。
●缺省调色板
Borland JBuilder提供的缺省组件调色板是这几种工具中最丰富的。
Visual Age for Java Enterprise Version 1.0
●结构易于创建
IBM Visual Age for Java在结构的可视化设计方面存在一些严重的不足。虽然它也允许用户在网格布局中可视化的安排组件。但当用户第一次将一些组件放到一个网格布局中时,布局中就会出现几条临时的网格线。网格的周边一般都可以用来安排组件的秩序,但是Visual Age for Java网格出现与它能够完成的动作之间好像并没有什么固定的联系。
因此用户使用网格对结构进行布局的最好方法就是简单的将组件放到结构中并保持其位置不动,然后再针对每个组件改变网格限制的设置。用户对网格限制所作的变化可以在结构中反映出来,因此在限制对话框中调整设置就能马上看出相应的结果。
同JBuilder一样,Visual Age for Java的可维护性也不是很好。当用户将组件围绕网格结构移动时,该工具不能给出任何网格限制的选择参数,而是给出一个空白的框。要想维护网格结构,用户还必须要自己编辑限制设置。
●可视化编程
Visual Age for Java的Visual Composition编辑器在可视化编程方面非常好用。用户不必编写任何代码就可以创建非常复杂的行为并将其添加到应用中。不足的地方是要想学会Visual Composition编辑器并不是一件太容易的事情。
●缺省调色板
IBM在其Java开发工具中一直不太重视缺省调色板的设计,但是企业版的情况有了一定程度的改进。用户可以很容易地创建自己的控制并将其增加到调色板中,除此之外,Visual Age还提供了许多可选的对用户很有用的Java类。调色板的对象工厂和通用对象也是很有帮助的,这对完成复杂的可视化编程任务是很重要的。
Visual Cafe for Java Database Development Edition 2.0
●结构易于创建
Symantec Visual Cafe for Java,不管是专业版还是数据库开发版,都是功能非常强的产品。它的整体性能并不比任何其他的同类产品差。但可惜的是它的可视化设计和编程能力在本文介绍的几种工具中是最弱的。
同Visual Age for Java一样,Visual Cafe for Java不允许用户通过可视化的拖放组件来安排一个网格结构。不管组件的最初位置在哪里,用户都必须将其拖放到结构中,然后针对每个组件手工的调整它们的网格限制。当然对设置所作的变化会立即反映在结构中,这一点与Visual Age for Java一样。与Visual Age for Java不同的是,Visual Cafe for Java网格限制设置出现在整个组件属性窗口中。
通常这不会成为一个问题,但用户会不难发现一个窗口中的选择项太多往往会给人一种杂乱的感觉。
●结构的可维护性
无论何时想对基于网格的结构进行变化,用户需要针对组件来编辑各种网格限制以适应这种变化。这一点与Visual Age for Java一样不方便。
在使用网格布局时用户不能将组件沿结构进行移动,但是如果改变组件在项目窗口中出现的顺序用户就可以在结构中重新安排它们。同Visual Age for Java一样,当使用边界布局时用户可以直接在结构中安排组件。而Visual Cafe则不是这样,它只能以绝对坐标方式安排组件。
●可视化编程
Visual Cafe具有一个与Borland的JBuilder类似的交互向导,但是它没有JBuilder那么多的限制。Visual Cafe的交互向导没有Visual Age for Java复杂,也不是可扩展的,但是用户仍然会发现使用Visual Cafe不用键盘就可以完成许多功能。而Visual Cafe的可视化编程法学习起来却比Visual Age for Java容易得多。
用户可以通过右击一个组件并且从菜单中进行适当的选择来访问向导。在通过向导创建交互操作时,Visual Cafe会编写相应的代码。
程序员可以为任意给定的组件创建多个交互操作。但是与Visual Age for Java保持每个选择可视化不同的是,用户如果想重新安排各个操作发生的顺序的话就必须手工的编辑它的代码。用户可以从源代码编辑器的下拉式列表盒中选择一个组件,然后再从另一个下拉列表盒中选择一个事件或方法,这样便可以得到该方法或处理该事件的相应的代码。
如果用户在代码中将光标放到一个类关键字上(如像GridBagLayout这样的类定义)并且按下“帮助”键(F1),Visual Cafe在列出方法和特性的同时将显示出类的定义。这样就等于有了一个在线帮助系统,它会告诉用户如何使用类和它的方法。
●缺省调色板
Visual Cafe for Java的组件缺省调色板是最吸引人的。
小结
下面我们用一张表对这四种开发工具在以上四个方面的表现分成A、B、C、D、F五个等级,聪明的读者看了这了表之后便可以很容易确定最适合于自己应用的开发工具。
Java
Workshop 2.0 Builder
Pro 1.0 Visual Age
for Java 1.0
企业版 Visual Cafe
for Java
数据库版2.0
结构易于创建 A+ A C+ C
结构可维护性 B B C C-
可视化编程 D E A+ B-
缺省调色板 C A C A