根据Oracle官方的定义JavaFX是“The next step in the evolution of Java as a rich client platform. It is designed to provide a lightweight, hardware-accelerated Java UI platform for enterprise business applications. With JavaFX, developers can preserve existing investments by reusing Java libraries in their applications. They can even access native system capabilities, or seamlessly connect to server-based middleware applications.”大意是“JavaFX是Java在富客户端(虽然很多地方这样翻译,我觉得叫‘炫客户端’更贴切)平台又一大创举。它的定位是为商用企业应用提供轻量级和通过硬件加速的界面平台。使用JavaFX,开发者可以重用其应用中现有的Java类库,从而避免重复技术投入,甚至可以访问系统级别的本地资源或无缝连接到部署在中间件服务器上的企业服务应用。”
乍一看不容易明白是吧?其实,大家可以从以下几方面理解:
- 首先,JavaFX是一个炫客户端平台,并不是我们之前热炒的RIA(Rich Internet Application, 炫互联网应用),所以它需要用户安装有JavaFX的运行时(JRE6 + JavaFX或者JRE7+)。
- 其次,JavaFX运行时通过使用硬件加速(GPU渲染)可以非常流畅地运行动画和3D应用。更值得一提的是,使用JavaFX提供的轻量级的API创建这些应用的过程本身并不复杂。
- 最后,因为JavaFX的定位是商业应用所以访问部署在中间件服务器上的EJB或者Web Service等都是非常简便的。
如果大家还是觉得以上的解释还是有点空洞的话,现在请看一下以下这个视频。这是一个我基于JavaFX开发的演示应用的运行效果。
看完以上视频,有Java AWT\Swing或者其它GUI开发经验的朋友应该可以想象开发这样一个具有动画过渡、交互性极强的界面是不容易的。对我本人而言,第一次接触简直不敢相信这是一个使用Java创建的应用。不过,在此我可以肯定的告诉大家这千真万确是一个Java应用,而且它的创建过程根本算不上困难,全部的界面代码加起来不超过600行。下面分别给大家介绍一下JavaFX的特性,看看它是如何做到的。
- 通过JavaFX Scene Builder软件,我们可以使用所见即所得的方式编辑界面文件(FXML一种用于定义JavaFX界面的XML文件)。更为厉害的是,通过JavaFX扩展的CSS,我们可以随意地更改JavaFX控件的样式和外观。像我这样具有一点Web开发经验的朋友可以很快上手。另外,Netbeans 7.3还也提供可视化的方式编辑JavaFX CSS。如果大家对自己的Java能力相当有信心的话,也完全可以使用JavaFX提供Fluent API快速添加和修改控件。至于采用哪种方式,完全取决于个人喜好,过程其实同样简单。由于本人比较笨,我偏好用所见即所得的FXML+CSS的方式构建应用界面。
- 通过属性(Property)、事件(Event)和绑定(Binding),我们可以在业务对象改变之后及时更新界面,又或者在业务对象中即时获取用户控件上的输入。甚至,我们可以直接将不同控件的属性绑定在一起实现一些界面上的逻辑,类似在用户点击某些控件后隐藏\显示或禁用\启用其它控件。
- 在JavaFX里实现类似阴影、倒影和模糊等特效,还有放大、缩小或旋转等2D\3D变换是非常简单的。
- 结合上述几点和JavaFX的动画框架,创建渐变或逐帧动画同样也是小菜一碟。
- 通过内嵌基于Webkit引擎的浏览器控件,我们可以在JavaFX应用里显示Web页面。甚至,我们能够使用Java控制页面上的Javascript脚本和元素。如此一来,我们就可以创建一些本地(Native)和Web优劣互补的混合(Hybrid)应用。
- JavaFX还包括了一些多媒体播放的API。在JavaFX中播放流媒体形式的音频和视频自然也不在话下。
我在上面一口气给大家简要地介绍了JavaFX这些激动人心的特性是想让大家对JavaFX有一个初步的了解。至于具体每个特性的如何使用,我会结合创建演示应用的过程,更为详细地逐一讲解。请大家继续关注我的博客或微博。
posted on 2013-05-09 23:45
Max 阅读(5175)
评论(2) 编辑 收藏 所属分类:
JavaFX 2.x实战系列