专访:看NetBeans平台发展的未来

发表于:2007-06-11来源:作者:点击数: 标签:
NetBeans对于国内的任何一个 开发 者都不会陌生,大家都是从NetBeans的爱恨交加中走过来的,随着Jbuilder的光环渐渐淡去,人们又把目光集中Netbeans身上。随着NetBeans的 开源 IDE 5.5 beta版的发布,Artima与Netbeans宣传官Tim Boudreau谈论了NetBeans 5.5

NetBeans对于国内的任何一个开发者都不会陌生,大家都是从NetBeans的爱恨交加中走过来的,随着Jbuilder的光环渐渐淡去,人们又把目光集中Netbeans身上。随着NetBeans的开源IDE 5.5 beta版的发布,Artima与Netbeans宣传官Tim Boudreau谈论了NetBeans 5.5以及IDE的未来发展方向。在会见内容的结束部分,Boudreau谈论了NetBeans平台,GroupLayout,Matisse GUI构建器,还有NetBeans中除了Java外对其他语言支持。

Frank sommers是Artima网站的高级编辑,Tim Boudreau是Netbeans的高级宣传官,为了能让国人第一时间了解Netbeans发展的未来,我们IT168网站特翻译此文与Java编程爱好者分享,也希望各位网友能就此采访内容发表自已的见解。下面我们就一同来流览对Netbeans高级宣传官的采访内容。

Frank Sommers:在2006 JavaOne,你演示了Matisse,NetBeans 5.5图形用户接口编辑器,说Matisse是与以前所有的UI编辑器真正不同的,是什么让Matisse如此独特呢?

Tim Boudreau:因为要在多平台上工作,Java UI非常有趣,对于每个平台,都有用户接口设计向导。苹果公司的Mac系统上有,微软的Windows上有,同时还有Java Look And Feel向导。UI标准是很伟大的,它们对于用户使事情看上去很熟悉。同时,每个人对待在一个平台上如何去做是正确的,会有些不同,例如,你应当在离窗体边缘多远放置一个标签。

我们试图将所有的复杂性提取出来放入一个新的布局管理器中,GroupLayout。GroupLayout正做为一个Java.net的项目而正在开发,它将成为JDK 6中Swing的核心部分。GroupLayout让你指定在一个窗体上的一定的组件彼此之间有一些关系,例如一个位置关系或对齐关系。

举个例子,考虑将两个组件对齐。一个有文本内容的Jlabel比一个具有文本内容的Jbutton要高一些。如果你希望将它们相邻,就需要公用一个基线,因为已经证明,如果眼睛能沿直线看,人们会读得更快,也容易理解。GroupLayou会很容易做到这点。

对比其它的布局管理器,都需要把这两个组件放入网格中,一个组件占用两个单元,另一个占用一个单元。在其它事情中,GroupLayout处理间隔非常精细,总是考虑执行你的软件的平台。

Matisse通过与GroupLayout的相互作用而工作,当你设计你的UI时,无论你在什么平台下设计,Matisse都会给出你它建议的位置作为指导。当你转移到另一个平台上时,布局管理器将使用此平台下的设计指导,Swing会使用正确的边界与字体。这就在很高的水平上解决了“Java-app-as-alien”的神话说法,使开发在哪里都可以看上去是正确并且变得容易。

地方化是你在做UI时必须考虑的另一个问题,决定于你编写的是什么种类的软件,地方化对于你来说可能是可有可无的东西,几乎没有没有什么利用价值 。举个例子,假如你去了象印度这样的地方,那里说着所有的语言,那么地方化就显得十分重要了。

在Windows的世界里,你编辑了一个资源文件,然后用资源编译器编译。Java通过独立主线应用代码的特性资源绑定,实际给了你一个更动态的选项,资源绑定在提供字符串嵌入于UI的应用中。同时,会给你更多灵活性,同时也给你布局管理器更多的压力,布局管理器必须处理做适当的处理,例如,对于同样的事情,你可能用德语时会显得特别长,而在用其它语言会显得很短。 

Matisse真正地帮助你实现本地化,因为它使本地化更加透明。当你双击一个组件并写入一些文本,文本被写入到一个属性文件中,正确的代码会通过文件属性的本地化来获取值。另外NetBeans还有一个特征,允许你检查你的源代码,将所有的硬编码字符串转化为本地变量。因为本地化特征已经有些人开始使用NetBeansb。这些工作不仅仅用于Swing应用,而且也适用希望使用资源绑定的任何应用,资源绑定是Java中做本地化的标准方式

Frank Sommers:在今年JavaOne大会上你们做的另一个演示是用NetBeans富客户端框架或NetBeans RCP快速建立桌面应用。什么是NetBeans RCP,它与Swing应用框架JSR [JSR 296]?如何联系?

Tim Boudreau:当你建立一个桌面应用时有很多问题需要解决,有时也是相当复杂的应用,那你就需要使用NetBeans平台。对于复杂程度较小的应用,会有一些基本问题可以在Java平台上被很好地解决。例如,你如何存储本地的默认值?或者,你如何提供对可能是颜色或字体的资源的真正访问?这些问题与NetBeans平台要解决的问题相比级别要低一些,尽管还不如用NetBeans RCP处理更好。JSR 296着眼于非常低级的应用问题,就象刚才提到的,或者是简单的写入动作,及类似的事情,这些努力是一个补充。

NetBeans RCP试图解决应用体系结构的问题。当你获得一定大小的应用时,NetBeans平台会使事情变得很容易。如果你编写一个桌面应用,会有一定数量的问题,你恰恰不得不去用生疏的UI工具箱来处理,例如Swing无法处理的。你会有菜单,键盘快捷方式,行为,如果你要显示多组件,你还需要有一些种类的窗体管理。在关闭的时候,你还要保存一些设置,当你重新启动时,要恢复整个或部分应用状态。数据访问也会变得有趣。

NetBeans平台处理那些问题。例如,如果你使用NetBeans RCP访问资源,你能在一个FTP服务器上使用Filesystems API,或者在一些远程服务器上的当地文件,JARs内的资源交互,就好像那些是本地文件一样。NetBeans RCP有一个“generic hierarchy and presentation”库--Nodes API。你拥有节点,每一个节点有子对象。一个节点是一个表达层—节点有行为,显示名称,图标等—所有用于呈现给用户的大部分的任意数据模型的基础。将Filesystems和Nodes放在一起,你就有了很强大的东西—许多复杂的UI,可以用于一个树形控件或一个列表控件,在NetBeans中通过在一个虚拟文件夹中粘贴一个文件,打开那个文件夹的查看就可以简单地做到。Explorer API提供大量的Swing组件,可以通过很多方式展现节点与它的子节点。

最后,NetBeans中的模块系统RCP是关于如何设计一个可维护的应用。模块允许你通过在它们自己的JAR外部,不是公共的类把一个应用的因素分成不同的部分。这个模块能够声明其它模块允许从什么包中调用类,其它包中的类仅在它们所在的JAR中是公共的。遵循这些路线,也许会在Java 7中作为一个语言特征出现,NetBeans RCP已经为桌面应用提供了这些。

Frank Sommers:目前,NetBeans主要还是一个Java IDE,但是它也支持C和C++。你预想它还会支持其它什么语言呢?你看到NetBeans会和Eclipse的目的一样,正成为一个语言无关的IDE平台吗? 

Tim Boudreau:自从1998年以来,NetBeans并没有只为Java而工作。它也是C/C++工具的基础,Sun公司已经将它转用于Solaris很多年了,对它的支持正在进行扩展化和通用化,不再仅限于Solaris。NetBeans也是HP公司用于OpenVMS的IDE,支持COBOL, Fortran, C/C++和其它种语言。例如在今年JavaOne大会上我们演示的对VB的支持—实际上是读取VB代码,编译成字节码,然后运行,有时会比它本应生成的本地代码运行还要快。因此,我们已经开始了这个项目,也会有围绕脚本方面的开发做更多的努力。NetBeans并不一定要局限于Java IDE平台—它对于Java已经有了很大地支持,那是人们首先要考虑的事情。但是就NetBeans目前的发展来看,它已经成为了一个语言无关的平台。 

正象我们早期提到的,重要的东西的寿命总是很长。一些人声称Java会在5或10年里死亡,我们都会迎来下一个大的事物。即使真是那样,NetBeans也一样可能会支持下一个事物的到来,但是对一个语言的寿命做假设的时候,有一件重要事情要考虑,对于期望任何特殊的程序语言或范例的盛行周期日益变得更长是很实际的,这有两方面的原因。首先,我们在绘制人们如何考虑告诉计算机工作的方式上的蓝图方面正越来越好,其次,一个语言统治的时间越长,它的代码就会越多,因此移植的代价也就越大。于是你不得不紧跟一些事情,这些事情会强迫变化中的语言很丰富多彩。

现在有很多有关脚本语言的谈论,但是我期待在主流编程语言中的下一个重大变化是让直觉上类似多核芯片的并行方式成为规范标准。我确信在未来的时间里,这些目标将会成我们考虑的主流。

(责任编辑 火凤凰 sunsj@51cto.com  TEL:(010)68476636-8007)



原文转自:http://www.ltesting.net

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
...