在去年十月份,InfoQ.com发布了一篇名为“JavaFX概览”的文章。Sun Microsystem的Chet Haase 接着又向InfoQ.com分享了一些JavaFX为Java平台带来的其他方面影响的细节。
Haase通过一些可能在将来构建RIA应用时有用的范例,向InfoQ.com的读者简要介绍了JavaFX:
JavaFX脚本是一门基于Java平台的新语言。它提供一些新的能力以及新的语法来使得实现某些功能更加容易,比如构建图形和GUI应用程序。
很 明显,现在是可以使用Java的Swing和Java 2D库来编写丰富、动态的GUI应用程序,但并不是那么容易做到。JavaFX脚本让这样的应用程序更加容易地实现。对于Java开发者,这意味着让他们 的工作更加简单,仍然可以借助于他们已经具备的Java平台开发的知识和技能。而对于其他那些不使用Java平台的开发者而言,意味着他们现在可以充分利 用平台的丰富特性和强大之处,并且使用一门他们更容易学习和使用的语言。
关于OpenJFX项目的当前状态:
OpenJFX 是一个站点,在它上面,JavaFX的不同部分正在以开放的形式进行开发。比如说,用于JavaFX脚本的编译器正在OpenJFX站点上进行开发,因此有兴趣试试早期版本的开发者可以获得最新的拷贝,甚至能为开发小组提出自己的建议和反馈。
OpenJFX上还寄宿或关联着其他一些正在进行或即将成立的项目。比如Scene Graph项目 ,一个使能JavaFX脚本的图形、GUI和动画功能的运行时库。
最后,OpenJFX也是项目当前文档的来源;指南、参考资料和一些指向blog及其他资源的链接都可以在OpenJFX站点上找到。
Haase这样描述JavaFX的组件模型:
我把JavaFX脚本组件模型看作是Swing++--,如果这条语句能编译通过的话:)。也就是说,JavaFX脚本的许多组件,比如button,直接依赖底层的Swing平台的功能。因此,JavaFX脚本的button其实就是个Swing的JButton。
但有一些不同之处非常重要。比如:
如果没有必要传播某个Swing组件中恰巧是public的方法和域时,这个对象的JavaFX版本就可以选择不再拥有那些域,从而更易于理解和编程。
JavaFX脚本组件层功能建立于底层的组件之上,从而能够为FX运行时提供可以利用的底层组件的功能。比如,JavaFX脚本语言的 一个新的很酷的功能就是能够触发任意对象的域值的变化。这就确保像button这样任意底层组件的FX包装类都能把变化正确地传播到JavaFX脚本层。
JavaFX脚本也提供了一些Swing中并不包含的组件和其他GUI对象。比如,当前的JavaFX脚本版本提供了VBox和HBox容器对象,用以在它们的子对象上施以简单的垂直(VBox)或水平(HBox)布局约束。
Hasse还被问及对于JSF的普遍批评(无论公平与否)中的一个——它提供了一个构建UI组件的框架,但没有直接提供所有用于简单构建高质量UI的组件。他被问到JavaFX是怎样以不同的方式解决这个问题的:
我无法解决关于JSF的问题(就我个人而言不是很了解JSF),但JavaFX会很乐意能够利用Java平台组件模型的强大力 量。Swing的优势之一是它丰富的GUI组件,以及添加自定义组件的灵活性。既然JavaFX脚本层是在Swing之上,这项优势自然就被继承了下来。
Haase谈到部署JavaFX应用程序:
JavaFX脚本应用程序使用和Java应用程序相同的部署方式:作为独立运行的应用程序,或者运行在浏览器中的applet,或者是Java Web Start应用程序(这样可以通过网络来部署,但本质上是在一个安全的沙箱环境中独立运行在桌面上)。
Haase还被问到关于开发一个类似于Silverlight或Flash播放器的浏览器插件的计划问题:
我们已经拥有一个Java的浏览器插件,也就是我们所说的“Java插件”。JavaFX脚本应用程序可以像Java程序那样使 用这个插件。但是,我们现在正在通过一些非常重要的方式来修改对这个插件的支持,尤其在向着支持更多面向消费者的JavaFX应用程序的方向去努力。比 如,对于Java和JavaFX应用程序的启动时间方面的改善,将会使启动时间比现在有显著的提高。而且,我们也正在重写插件代码,以使其更加健壮和灵 活。这两个改进会出现在“Java SE 6,Update 10”的发布版中,你可以在下面这个站点获得早期的版本:对于JavaFX和Adobe Flex/AIR,Silverlight及其他富因特网平台在特性、部署和成熟度方面的比较:
我觉得我现在宁愿不要直接对它们作出比较,因为我们现在还处于JavaFX的开发中期,所以任何相对于已经发布的产品的比较都是不成熟的。我能说的是JavaFX在RIA领域真正的优势之一在于它的强大功能和它所基于的底层Java平台的高成熟度。
在最后:
我们对来自于社区的帮助很感兴趣。欢迎登录OpenJFX站点,获取最新的版本,体验它的功能,编写一些JavaFX脚本应用程序,并把反馈发送给我们!
衷心希望OpenJFX项目能够达到它所有的目标,并给构建RIA应用的Java开发者一个强有力的选择。