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