Stephen Chin谈WidgetFX和JFXtras

尽管JavaFX刚刚出来一个多月,由于开发者们踊跃尝试Sun的新RIA平台,已经涌现出了大量项目和例子。Stephen Chin就是其中的先驱,他是两个开源JavaFX项目的主要开发者:WidgetFX和JFXtras,他也是即将出版的Pro JavaFX一书的合著作者。InfoQ采访了他,以了解更多关于他的项目以及他对JavaFX的整体印象方面的信息。

InfoQ:你能给我们一些关于你自己及你的开发经历方面的背景信息吗?

当然。我是从Java 1.0开始做起的,为Carnegie Mellon构建了一个Java IDE,叫做Sheets,后来就一直从事Java方面的相关工作。我有两个兴趣:开源软件和敏捷开发,它们已经成为开发高质量企业软件的一个非常流行的组合。目前我是Inovis的高级管理人员 / ScrumMaster,而在晚上和周末我是WidgetFX和JFXtras开源项目的项目领导。只要我有空,就会骑摩托车到处转转,或者把我可爱的女儿驾到我的头上。


InfoQ
:JFXtras给JavaFX发布增添了什么能力?

JFXtras项目是在于Jim Weaver的一次谈话中诞生的,在JavaFX 1.0发布之前我们就细数着希望JavaFX应该具备的一切:包括动态布局、对话框、更好的异步支持、单元测试、更多的组件!所以JFXtras 0.1版包括如下特性也就不足为奇了:
  • JFXtras Grid —— 一个纯JavaFX 声明式的grid布局,简单情况下非常易于使用,但是对于复杂布局支持强大的配置(包括spans、alignment、以及grow priority)。
  • JFXStage / JFXDialog —— 顺便替代JavaFX Stage类,其给出了真正的Java Dialog,可以访问Swing窗口以及许多像alwaysOnTob、pack等这样的特性。
  • JFXtras Test —— 一个声明式的、流畅的、行为驱动单元测试框架,让你可以用JavaFX语言为JavaFX代码编写测试。一旦你习惯了声明式测试的强大能力,你就很难回到普通的JUnit。
  • JFXWorker —— 一个支持异步JavaFX的临时方案。
  • 还有很多……(查看API文档可以获得完整特性列表)


InfoQ
:JFXtras项目的目标是什么?

我们正在生产0.2版本,我们希望它能早日问世。除了在Grid和单元测试方面的改进外,我们还规划了一些重大的新特性。Groovy GraphicsBuilder的 Andres Almiray已经加入了我们团队并把他的 jSilhouette图形库移植到JFXtras项目,它将提供了很多漂亮的图形基本元素,如十字形、星形、球形以及Reuleaux 三角形(crosses、stars、balloons、Reuleaux triangle)。我们还将拥有JavaFX的首个图表工具,提供由Ben Jone编写的很酷的JavaFX饼图组件,最近在Jim Weaver的blog上提到了这一 特性。

除了这些,我们有一个相当高效的、拔尖的、乐于奉献的全明星团队,在接下来的几个月,你们就等着瞧好吧!


InfoQ
:创建JavaFX Widgets项目的主要原因是什么?你认为它将用在哪里?

WidgetFX项目诞生于企业Java开发者对高质量、开源、跨平台桌面Widget框架的需求。尽管有许多其他框架给消费者提供了桌面widgets,但它们主要还是JavaScript和HTML的,这就意味着它们缺乏完整的桌面集成支持,并且有重大安全隐患。而且,由于非常严格的许可协议,阻止了他们在大企业中的采用,这限制了他们的商业使用。


InfoQ
:社区中有许多关于混合及匹配JavaFX和Swing的评论。在Swing应用程序中使用一个JavaFX Widget很容易吗?

T这是个很好的问题,而且已经经过许多讨论了。把Swing嵌入JavaFX相当容易,已经被用来创建WidgetFX的几个第三方widgets,比如Ludovic Hochet的 世界时钟。

反之,把widget嵌入到Swing应用也是可能的,但是你必须使用一个无支持的组件,叫做JXScene,Josh就此写了个 blog。

InfoQ:你认为JavaFX会对Swing开发者产生什么影响?

JavaFX中的声明式GUI编程非常容易让人上瘾。一旦你习惯了新的绑定、触发器及动画支持,你就很难回到老风格命令式的、事件驱动的UI编程方法。我相信使用Swing构建传统客户端UI仍会有用武之地,特别是在JavaFX成熟之前。可是,从长远看,开发者需要JavaFX提供的高开发效率而企业需要JavaFX提供的丰富用户界面技术。


InfoQ
:JavaFX Widgets已经能与Flash/Flex进行一定程度的交互。你能说说这方面的内容以及怎么做到这一点的吗?

我利用了Alexey Utkin开发的JDICplus类库,在WidgetFX中提供了无缝Flex集成。再现JavaFX相同的用户体验是一种挑战,包括透明和可拖拽widgets,但是在付出心血之后一切都搞定了。

或许目前最大的限制是平台支持。JDICplus只支持Windows,这限制了这一特性的跨平台能力。如果能看到Sun将JavaFX的Flex集成作为优先解决的问题,并创建一个简单的、跨平台的解决方案来嵌入Flash、Flex和其它浏览器技术,那就太好了。


InfoQ
:你认为JavaFX与Adobe的Flex及微软的Silverlight相比,主要优势是什么?

我认为JavaFX的两个主要优势是:Java集成和手机平台。例如,WidgetFX RSS Reader是一个只有250行的代码,包括许可、注释及配置,而它支持人们所知的所有RSS和Atom特性。它之所以如此轻量级,是因为它利用了非常健壮的 ROME项目来提供RSS支持,这是一个开源的Java API,从JavaFX调用它是小事一桩。目前没有其它RIA平台能够像Java这样拥有这么多的开源类库和扩展。

还有,JavaFX手机平台将打破原有格局。过去对大多数开发者和企业来说,手机市场是高不可及的,因为开发能够运行在多种设备上的应用的复杂性大且成本高昂。现在情况不同了,我已经使用JavaFX 1.0附带的手机模拟器做了些原型,尽管还不完善,但却可以把作为桌面widget运行的同一段代码直接移植到电话上执行,这太令人惊奇了!


InfoQ
:你觉得JavaFX在市场上的表现将会如何呢?

我认为现在就此作出任何评论都为时过早,但是JavaFX的确已经以令人惊讶的方式激发起了开发社区的热情。我想业界领先的网站开始在其他技术难以匹敌的方面采用JavaFX,这只是个时间问题。


InfoQ
:你们使用什么样的IDE来进行JavaFX开发?

我主要使用NetBeans进行JavaFX开发,如果是JavaFX1.0,这个IDE提供了比较好的支持。我最近还安装并开始使用Eclipse JavaFX插件。我也乐见包含了许多允诺的IntelliJ JavaFX插件的更新问世。

至于JavaFX获得广泛采纳,我认为所有主要IDE都包含对JavaFX的支持是很重要的,而且支持的力度要和对Java支持力度一样。包括:错误高亮显示、自动代码格式化、搜索使用、跨语言遍历(Java到JavaFX以及反之)、快速JavaFXdoc、条件编译、重构(重命名、提取方法、移动包等等)、模板及代码提示。不同的IDE插件都会支持上述列表的部分特性,但是目前还没有一个完全支持上述特性的IDE。


InfoQ
:你们在开发JFXtras和JavaFX Widgets时都遇到过什么问题没有?如果有,你们是怎么解决的?

在开发WidgetFX和JFXtras我们遇到了许多小问题。例如,尽管 JFXDialog看起来是一个简单的概念,它实际上需要好几个棘手的工作,在经过数小时检查JavaFX反编译代码后这项工作才得以完成。对使用JFXtras的用户来说是幸运的,它被很好的抽象到一个文档齐全的类中,我们将把它作为核心JavaFX类库改进来维护。

另一个例子是 CacheSafeGroup,它用JavaFX节点上的缓存变量修订了多显示器的一个bug。我们把缺陷已经记录在案,而JavaFX团队明确将在下一版本修订这一错误,但是WidgetFX项目不能因此中断,因此我们实现了一个可重用的替代方案,它顺便替代了Group。


InfoQ
:你的项目从Sun那儿获得了多少支持?

Sun的伙计们非常忙,但是很支持我们。Joshua Marinacci是官方WidgetFX PR项目成员,在撰写博客和向JavaFX社区宣传方面做出了杰出贡献。而且在各种场合,只要我逮到他们,他们总是热情地倾听我们的满腹牢骚,并向我们询问更多反馈,以便将JavaFX平台做得更好。


InfoQ
:你对那些考虑在企业应用中采用JavaFX的人们有什么样的建议呢?

有几件事情对于任何商业JavaFX项目的成功都是至关重要的:
  • 与你的图形设计团队紧密合作——JavaFX是一个复杂的新模型,不受传统浏览器限制,因此让设计团队了解他们可以利用的能力是很重要的,包括新的JavaFX产品套件。
  • 从你的客户那儿获得早期反馈——使用JRE1.6.0_10中新的内核安装器,创建一个无缝部署体验将比以往更加容易。可是,如果你预先知道客户机器限制只能使用老的Java版本(比如1.5),那么你就可以针对那个平台来安排JavaFX开发。
  • 不要重复发明轮子——JavaFX 1.0出厂产品并没有提供给你构建企业应用所需的所有东西,但是你可以利用第三方项目如JFXtras(自卖自夸),不至于让自己陷入到维护许多重复的底层架构上。


InfoQ
:来年你最想看到JavaFX什么东西?

我有一个无止境的愿望列表,即便是圣诞老人都无法满足我的需要,但是其中一些比较关键的是:
  • 异步支持——JavaFX没有一个干净的执行模型,以支持长时间后台任务执行。这对编写高性能应用的开发者来说非常重要,最终将会影响该语言的成功。JFXtras JFXWorker是向正确方向迈出的一步,但是仍受限于核心运行时中的一些限制。
  • 在Java中内嵌JavaFX——如果有全面的支持机制能够在Java中嵌入JavaFX,那太好了。除了为现有Swing应用提供移植路径外,这将为JavaFX的进一步高级应用提供众多可能。
  • Web2.0集成——Web上有大量可用的服务及技术, JavaFX的采用将从中受益。正如我先前提到的,对Flash和Flex的内建支持将帮助与地图服务的集成,比方说Google Map。JavaFX桥接当前开发社区所使用技术的能力越强,将来JavaFX平台就越成功。


InfoQ
:你还要补充些什么吗?

我非常高兴能与Jim Weaver和Weiqi Gao合作出书。Jim或许是当前JavaFX社区的最重要的联络人,而Weiqi是个绝对的语言天才,因此我们合力创作,一定会写出令人印象深刻的作品。它将确定在JavaOne之前出版,到时候一定要搞上一本并来参加我们的专题会议(session)!

查看英文原文:Stephen Chin on WidgetFX and JFXtras

你可能感兴趣的:(Stephen Chin谈WidgetFX和JFXtras)