JavaFX 2.0 发布近况和未来计划

  • Charles Humble
  • 黄玲艳

2011 年 4 月 19 日

话题:Java语言 & 开发架构

在去年的 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

Java语言 & 开发架构