在去年的 JavaOne 大会上,Oracle 宣布将继续投资 JavaFX,在今年推出 JavaFX 2.0。但是,它同时也宣布将放弃支持 JavaFX 脚本,取而代之,用新的 Java API 来创建 JavaFX 应用。这个新的 API 也可以用于其他语言,如 JRuby、Clojure、Scala 和 Groovy 等。
JavaFX 2.0的测试已经启动,试用版只开放给 JavaFX的合作伙伴成员。beta 版计划在2011 年上半年结束前发布。参与者可以通过多个渠道反馈,包括调查表,参与核心小组的讨论会议,以及与 JavaFX 产品团队核心成员进行讨论等。
InfoQ 对话 Oracle 的富客户端软件架构师 Richard Bair,探讨更多关于 JavaFX 的发布情况和未来的计划。
InfoQ**:对于发布试用版,你有些什么样的期望?**
对于发布试用版,我们最重要的目标是,在整个发布过程中,尽可能早地获取关于 API 和实现的反馈,这样我们可以在到达 Beta 版这个里程碑之前进行调整。如果我们在试用期间收集到一定数量的反馈,我们的 Beta 版将会为广大的开发者社区提供更好的初次体验。
另外一个目标是给使用 JavaFX 旧版本的公司提供良好的开始,这样他们就可以考虑将应用迁移到 JavaFX 2.0。
同时,通过有节奏地发布版本,我们可以确保版本和发布机制都能够很好地运行,这样有助于以后的平滑发布。
InfoQ**:发布时间表是怎样的?你会多长时间更新版本?**
关于 JavaFX 2.0 的完整时间表可以在 http://javafx.com/roadmap 看到。随着 1 月份首个试用版的发布,我们以后会每周发布新的版本。目前,发布的版本仅仅开放给 JavaFX 合作伙伴成员 ,还有 Java 开发者社区 (如 Java Champions 和 Java User Group 的负责人等) 中活跃的个人开发者。当我们发布 Beta 版里程碑时,将会通过 Oracle Technology Network 开放给更多的用户群体。
InfoQ**:在试用版中什么功能是没有的?**
目前在试用版中只有两个重要的功能没有:在标记中描述一个 GUI 声明,以及基于 JavaFX 的浏览器插件(它完全不需要 Swing 和 AWT 支持,就可以显示小应用程序)。
其他的基本都包含了,包括一个 TableView 的 UI 控件,将 JavaFX 嵌入 Swing 的能力,一个可以在 JavaFX 应用中渲染 HTML 内容的 Web 组件,绑定,可见列表,可观测的地图等。
InfoQ:目前支持哪些平台?
我们已经有支持 Mac OS X 和 Windows(XP、Vista 和 7) 的版本,尽管在我们初次发布时 Windows 将会是唯一官方支持的平台。我们会尽快支持 Mac 和 Linux。
InfoQ**:JavaFX常常因为工具支持不够遭受诟病——尤其是缺乏设计师所需的集成环境。JavaFX 2.0 在这方面有什么改进吗 **?
从现在开始依赖于 Java APIs的一个好处就是,开发者可以使用他们喜欢的 Java IDE 来开发 JavaFX 2.0 应用。比如调试、监测,以及代码自动填充等特性将被默认支持,我们也正与主要的 IDE 提供商合作,为平台提供一个紧密集成。
在 JavaFX 2.0 中,我们初期会集中精力在提供富企业应用的 APIs 和必须功能上,还有富图形应用等。我们也将利用 JavaFX 1.x 中介绍过的设计师 - 开发者工作流概念,致力于互补工具解决方案。
InfoQ**:以前的 Java 程序有两个共同的问题就是启动时间和性能。我相信Prism(图形硬件加速平台)应该有所不同。关于这部分你可以多介绍一些吗?**
启动和运行环境性能涉及到很多因素。Prism 主要关注后者,意在充分利用最新的图形硬件的优势,以加速场景渲染(还有混合 3D 内容的能力)。
通过 Swing 和 AWT,事件调度线程同时负责事件调度和渲染。通过 Prism,这些任务可以分为不同的线程,使我们能够充分利用现代多核系统,以便于在更短的时间内完成更多的工作。当然,针对不同目标设备也可以是单线程的架构,这是必须的,但是多数现代机器单独的线程会提升帧率。
InfoQ:在 Java 7 或者 Java 8 中会有其他有益于 JavaFX 的具体功能吗?
JavaFX的设计符合在 Java SE 8 中会有的“lambda”语言特性。lambdas 目前的计划和目标是支持"单一抽象方法"接口。我们在 JavaFX 中设计新的 Java APIs 遵循这个原则,所以当 lambdas 有效时,他们自然都会使用 JavaFX 2.0 的 APIs。
在 Java SE 8中会有的模块化是另外一个有益于 JavaFX 的功能。模块化有助于部署(也许我们最终可以有一个网络部署的单一部署神器),有助于通过减少加载类的数量以提升启动时间。模块化也能在许多其他方面提升启动问题,例如在“安装时间”执行一些工作,缓存它,而不是每次应用程序启动时都重做工作。
InfoQ**:放弃对JavaFX脚本的支持意味着失去了这种语言的某些好处 ****——如数据流式绑定和文字收集。通过Java API这些方面有多少支持呢?**
JavaFX 脚本最具创新的一个功能是它支持绑定,这是一个特别强大的概念。更有甚者,在强大的表达式范围内,JavaFX 脚本中的绑定支持是唯一的,以及因惰性计算而产生的高性能,这些都是有可能的。
我们将这些重要的功能都带到了 JavaFX 2.0 中,开发者应该很乐于学习这些。它既有低级绑定 APIs(非常有力但很复杂,尽管非常详细),也有高级绑定 APIs,这些都是采用接口模式。另外,我们引入了观察收集(ObservableList 和 ObservableMap)。
InfoQ:在 JavaOne 里提到的一些功能,既支持本地的 Java 2D/OpenGL/HotSpot VM 堆栈,也支持 JavaScript/HTML5/web浏览器堆栈通过相同的 API调用进行渲染。在 JavaFX 2 中也有这样的支持吗?
我们在探寻许多可能的途径,也在继续研究这个项目,这是相辅相成的,但不是 JavaFX 2.0 的一部分。
InfoQ**:JavaFX2 即将发布的开源许可证是怎样的?**
在 JavaOne 我们已经宣布基于开源许可证书,我们会发布 UI 控件。我不能就具体计划发表评论,只是说我们致力于此计划。
InfoQ**:将运行环境作为独立安装的一个部分发布是有可能的吗?**
是的!这是最常被要求的功能之一,我非常高兴的说,展望未来,JavaFX 许可证仍然希望沿袭 JRE 许可证,以允许基于特殊条件的一些发布。
InfoQ:JavaFX 将作为Java 7 的一部分吗?
JavaFX 2.0 最初会提供 Java SE 6 和 Java SE 7 的用户单独下载,但是我们计划在不久以后提供一个 Java SE 7/JavaFX 2.0 的合并版。
JavaFX 网站有更多关于测试发布的计划信息。
JavaFX 脚本也将通过开源项目 Visage 独立于 Oracle 进行维护。去年我们曾经就这个项目采访了Stephen Chin 。Chin 现在正致力于随着发布试用版Visage 的新版本,将全面支持JavaFX 2 APIs。他也致力于Android 版本的支持,希望能够在5 月份发布一个可用测试版本。
查**** 看英文原文: JavaFX 2.0 Will Bring Hardware Accelerated Graphics and Better Licensing Terms to the Platform
评论