JavaFX 2.0平台是基于Java技术的富客户端平台。它使应用程序开发者更加容易的开发和部署跨平台的富互联网应用(RIA)。JavaFX 2.0文档包含了JavaFX 2.0所提供的功能的概述。
图1描述了JavaFX 2.0平台的架构组件。后面的部分将对每一个组件进行逐一的描述。在JavaFX通用API的下面是用来运行JavaFX代码的引擎。这个引擎包括以下子组件:JavaFX高性能图形引擎(Prism);新的更小但更有效率的窗体系统(Glass);媒体引擎和Web引擎。虽然这些组件不是包括在外的,但是他们的描述能帮助你更好地理解JavaFX应用是如何运行的。
图1 JavaFX 2.0 架构图
场景(Scene Graph)
JavaFX的场景(Scene Graph)是JavaFX应用程序创建的开始点。它是一棵层次树,其每个节点都代表了一个应用程序UI的视觉元素。它可以处理输入并被渲染。
在场景中的一个元素叫做节点(node)。每个节点都有其ID,样式类别和包围盒(不熟悉计算机图形学.....原文为bounding volume,我挺想翻译为基准线或者轮廓线的)。在场景中的每个节点都有一个唯一的双亲节点和零到多个孩子结点。一个节点还可以包含:
◆ 效果(Effect),比如模糊或阴影效果
◆ 透明
◆ 变换
◆ 事件处理(比如鼠标、键盘或其他输入方式)
◆ 应用程序定义的状态
不同于Swing或者AWT,JavaFX的场景除了包含控制、布局管理器、图像和媒体外,也有基本图元,如矩形或者文字。
对于大多数用户来说,场景简化了用户实现UI的工作,特别是用户实现富UI的时候。在场景中绘制各种图形可以被快捷地完成,而且可以使用如XML文档一样的声明式方法。
javafx.scene API允许创建和定义许多种内容,如:
◆ 节点(Nodes):2D或者3D的图形、图像、媒体、嵌入式web浏览器、文字、UI控件、图标、组和容器。
◆ 状态(State):变换(节点的位置和方向),视觉效果和其他内容的视觉状态。
◆ 动画(Animation):场景对象在一段时间中的属性变化
◆ 效果(Effects):可以修改场景节点的外观,如模糊、阴影和颜色调整。
你可以从Working with the JavaFX Scene Graph文档获取更多的信息。
为实现JavaFX特征提供的Java API
如图1中的最顶层显示的那样,JavaFX 2.0平台包括一组完整的公共API。这些API为创建富客户端应用提供无可比拟的自由度和灵活性。JavaFX平台将Java平台的如身临其境般的媒体功能融入直观的一站式综合开发环境之中。这些新的Java API实现了JavaFX的以下特点:
◆ 允许使用强大的Java语言特征,如泛型、注解和多线程技术
◆ 对于Web开发人员,JavaFX提供使用动态语言编写方式,如使用JRuby、Groovy和JavaScript
◆ 允许Java开发人员使用其他的系统语言去编写庞大复杂的JavaFX应用,如Groovy
◆ 允许使用与JavaFX脚本语言类似的绑定机制(binding)。这包括提供高性能的延迟绑定机制,绑定表达式和序列表达式,部分绑定重求值(不理解....)。其他语言(如Groovy)可以使用如JavaFX脚本语言一样的绑定库来实现语法级别的绑定。
◆ JavaFX扩展了Java集合库,加入了observable lists和maps。这允许应用程序将UI和数据模型进行连接,UI可以观测数据模型的改变并进行直接更新。
JavaFX 2.0 API和编程模型是JavaFX 1.x的延续。大部分JavaFX API都与Java直接相连。一些API已经根据JavaFX 1.x使用者的反馈进行了更新(包括性能和易用性的提升),如布局管理(Layout)和媒体(Media)。而且JavaFX 2.0更加支持Web标准,如可以使用CSSS作为样式控制和使用无障碍规范建立ARIA。更多的Web标准也正在审核之中。