JavaFX:当前的状态和不久的将来

阅读数:331 2008 年 1 月 19 日

话题:Java架构语言 & 开发

在去年十月份,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”的发布版中,你可以在下面这个站点获得早期的版本:https://jdk6.dev.java.net/6uNea.html
对于 JavaFX 和 Adobe Flex/AIR,Silverlight 及其他富因特网平台在特性、部署和成熟度方面的比较:



我觉得我现在宁愿不要直接对它们作出比较,因为我们现在还处于 JavaFX 的开发中期,所以任何相对于已经发布的产品的比较都是不成熟的。我能说的是 JavaFX 在 RIA 领域真正的优势之一在于它的强大功能和它所基于的底层 Java 平台的高成熟度。

在最后:

我们对来自于社区的帮助很感兴趣。欢迎登录 OpenJFX 站点,获取最新的版本,体验它的功能,编写一些 JavaFX 脚本应用程序,并把反馈发送给我们!

衷心希望 OpenJFX 项目能够达到它所有的目标,并给构建 RIA 应用的 Java 开发者一个强有力的选择。

查看英文原文:JavaFX: Current Status and What’s Upcoming