【IT168 评论】Oracle面向Java?的富客户端平台JavaFX 2.0?的第一个公测版已经可以下载,同时提供了NetBeans 7的测试版插件。
发布的内容包括:
用于JavaFX的Java API,是JavaFX 1.0产品线的延续。
新的图形功能,包含图形引擎(Prism,译为棱镜),结合新的窗口工具包,被称为Glass(玻璃),连接JavaFX平台的独立平台层与本地操作系统。Prism支持多种显卡硬件加速,包括NVIDIA、ATI、Intel,基于不同平台使用的不同渲染方法(Windows的DirectX,Mac、Linux还有嵌入式的OpenGL)。当硬件加速不支持时,Prism会使用旧的Java 2D渲染器。
多媒体引擎,支持基于GStreamer框架的web多媒体内容回放。这个媒体引擎支持MP3、AIFF和WAV的音频文件,以及回放采用VP6视频编码和MP3音频编码的Flash(FLV)视频文件。
web组件,使用WebKit渲染HTML,使用Prism进行硬件加速渲染。
浏览器插件更新,允许加载基于Prism的JavaFX应用程序。
新的UI系列组件,例如Charts(图表)、Tables(表格)、Menus(菜单)和Panes(窗格),所有都这些可以使用CSS设置皮肤。
测试版包含一个选择器的示例,Ensemble(合集)是JavaFX主要的取样器。
JavaFX 2.0第一版仅支持Windows,虽然系统体系结构设计为跨平台,Oracle也明确将多平台支持JavaFX:
我们绝对会促使不同平台的目标达成,不仅仅是最大的三个(Mac、Linux、Windows)。实际上Java平台的价值就是你可以编写跨操作系统和设备的应用。
虽然Flex和Silverlight都是用XML做为其声明语言(具体是MXML和XAML),JavaFX最初却包含一个新的DSL,JavaFX脚本。JavaFX脚本虽然有趣,但是却成为开发者进入的障碍,Oracle去年宣布虽然继续投资JavaFX平台,但不会再支持它。一个基于XML声明语言(目前命名为FXML)正在酝酿中,但是它还没有在测试版中使用。
缺乏JavaFX脚本让API看起来更详细,但是变化并没有预期的明显。一方面,javafx.builders包提供了257个构建,涵盖了所有API。另外,在Java 8中支持Lambda将会有很大差异。Oracle富客户端软件架构师Richard Bair曾经告诉InfoQ:
JavaFX设计适合于Java SE 8中"lambda"语言特性计划。目前的计划和目标是lambdas有助于"单一抽象方法"接口。我们在JavaFX中设计新的Java API也遵循这个模式,这样当lambdas可用时,它们可以自然迁移使用JavaFX 2.0的API。
还有Java的支持,API设计为友好地支持替代JVM语言,例如JRuby(示例)、Scala和Groovy,还有DSLs像基于Visage的JavaFX脚本。
JavaFX 2.0代表客户端Java产品族最重要的更新,提供了JavaSE平台整个客户端层的替代品。Osvaldo Pinali Doederlein很早就说过:
我们知道JavaSE已经过时。我不知道有多少人没有认识到这点,如果你不知道,请再检查一些Cindy Castillo的JavaFX架构的伟大概述。它不仅仅是一个新的组件库、动画和富媒体。它完全替代AWT[Abstract Window Toolkit,抽象窗口工具集]、Java2D、Swing、Java Sound、Applets、ImageIO、Accessibility——简而言之,JavaSE平台的整个客户端层。(不,一个JavaFX应用不再使用java.applet API。)Oracle摆脱大量AWT和基于AWT的一切事物,主要的原因是新浏览器插件更好。
Sun Microsystems高级工程师、Java Swing GUI工具集的创始成员之一Amy Fowler建议,(要使Java成为可行客户端平台)这样的改变是必要的:
用户界面技术是一个与图形碰撞的过程。要使Java在长期战略中成为可行的客户端平台,它必须天生能有你所看到的iPhone/iPad应用那种视觉盛宴。正如我多次指出,使用Swing中Java2D有可能实现一些>(例如Kirill非常好的Trident库),但是这需要非常复杂的操作,这不是天作之合。问题症结在于,Swing植根于传统AWT,而不是集成到2D坐标系中。要解决这个问题需要很多不兼容性改变,一旦你朝这条路走下去,那么,你开始问自己还有哪些不兼容性需要改变...很快新的模型被重新构建,你认识到非常需要新基石。
虽然RIA方面,Adobe的Flash已经占据很久,看起来也会向HTML5和相关技术转移,扩展应用在智能机目前一代和表格中的广泛使用表明,基于Web的应用仍然扮演很重要的角色。当然,Oracle看重Java和Swing在其桌面应用的使用,投资JavaFX 2.0最终也会与Swing 2.0平台一起开发。