关于JavaFX已经有非常多的舆论报道、讨论和手册指南,对我们这些普通的Java开发者而言,JavaFX从技术角度来讲并不难掌握,更难的是我们要搞清楚它对我们而言到底是否有用,也即它到底意味着什么呢?James Sugrue在Javalobby的博客中阐述了他对此的看法。
简述历史
JavaFX是一个富客户端平台,可以创建出在多种设备上都可以运行的应用,这些设备包括电脑桌面和移动设备。JavaFX其中的一个主要优点是你为其中一个设备写出的代码可以运行在任何其他设备上,因为JavaFX集成了Java runtime,只要桌面安装了Java或者手持设备支持JavaME,那么这些代码就可以运行。
JavaFX首次公布在Sun在2007年的JavaONE大会上,Version 1.0发布在2008年12月,当时的主要对象是桌面平台尽管近期发布的1.1又瞄准了移动设备。简而言之,JavaFX是Sun推出的竞争产品,针对现有的两个主要的RIA应用:微软的SilverLight和Adobe的Flex/AIR。
JavaFX最大的优势来自于它跟Java代码、Swing组件的交互性,有人对Sun投资JavaFX持有怀疑态度,他们认为Sun应当更好地来关注Swing,但无论怎样JavaFX的开发为Java开发者开启了更多的门。而且JavaFX已经有了很高的下载数量,在version 1.1发布之前,下载量接近80,000,000。
有什么JavaFX可以做而Swing做不到?
JavaFX的优点之一是它能够将JavaFX应用从web浏览器中抽取到桌面,因而这将创建像WidgetFX这样的应用变得非常简单,从而提供桌面型的小程序。富视频内容(Rich video content)通过JavaFX提供的On2 视频编码器变得可能,而且更妙的是这些视频编码器可以工作于Swing应用中。
JavaFX应用是由JavaFX Script编写的。JavaFX Script充分利用了一款场景图形模型(scene graph model),它可以在你的UI中生成、转变和卡通制作。使用JavaFX Script你可以快速地将用户界面放置在一起,因为这个语言是专门为用户界面的创建而编写的,因而生成的应用比Swing应用感觉上更加丰富、流畅。
JavaFX在技术层面的定位
“富互联网应用”可以被定义为一种表现桌面应用特征的web应用,有人会因此而想起RIA,有人会想起Flash。也许除此之外,人们就不再认为其他的也是富互联网应用,但Java Applets曾提供给我们第一个真正意义上的饿RIA。10年来,Sun继往开来,为Java开发者提供了一种新的方法。
那么用JavaFX编写应用意味着什么呢?如果我们需要的应用跟其他Java组件和库有很强的交互性,对UI层来说JavaFX就是一个好的解决方案;如果你想费最少的力气写出一个应用工作在桌面和移动设备上,JavaFX就是你所需要的技术。单一原文件维护(single-sourcing)是JavaFX的主要优点。
但如果考虑到现在的应用,JavaFX就有些别扭。因为现在还没有官方的方法将JavaFX植入到Swing(或者SWT)应用中,尽管有可用的工作区(http://blogs.sun.com/javafx/entry/how_to_use_javafx_in),但我可能还是不会将JavaFX应用于产品级别的应用中。从我跟JavaFX团队的交流中获悉,这些问题将在以后的版本中解决。如果有好的架构、UI层的清晰分离,将UI代码移动到JavaFX中是有可能的。
在编写移动设备方面,JavaFX比JavaME提供了更为丰富的图形和UI。用JavaFX编写移动设备的代码很简单,而且易于测试,因为桌面和移动端使用的是相同的编程模式。
总而言之,如果你想尝尝鲜,想有一个比Swing更浮华闪光的用户界面,JavaFX是不错的选择。
哪些组件
JavaFX的下载有三种不同的组件。SDK包括JavaFX编译器、runtime工具和针对视频、图形和网络设备的各种库,这些均会在创建桌面或者移动平台的应用时用到。
还有JavaFX的Netbeans插件。下载网址中提供了一个可以下载整个JavaFX的Netbeans IDE (6.5)的链接。这有助于更快地创建JavaFX应用,而且提供了移动仿真器,从而可以为移动设备预览所编写的应用。
最后,JavaFX 1.1 Production Suite是一套工具和插件,设计者可以将图形数据输出到JavaFX应用中。这对Java开发者而言可能是兴趣最小的一个组件,但图形设计人员会更喜欢它。
当然了,那些倾向于使用Eclipse的开发者,也有一个可用的插件,可以将JavaFX特性添加到Eclipse项目中。
结束语
JavaFX入手的最好方式是去Netbeans中看看那里已有的示例项目。
JavaFX还很年轻,未来的路很长。如果你想寻找Flash的替代者,如果你很熟悉Java,那么JavaFX绝对值得一用。在未来的版本中,我确定我们会找到更多喜欢JavaFX作为Java应用UI技术的原因。
【编辑推荐】