JAVAFX2.0书:第二章 体系结构及框架-1

至所有的读者:

     各位亲,大家好,当您看到本留言时,相信你对JavaFx2已产生浓厚的兴趣。和您一样,我也很喜欢JAVAFX。当我开始学习它时,我一直在反思,有没有更好的方式来学习,并且和大家分享呢?在某个早晨6点多起来慢跑时,我下了一个决定,我可否试着写一本关于JavaFx的书,可能是脑冲血的原因吧,每天6点起床写文章。这几天终于整完了前面两章,大部份都是来自于Oracle官网的英文资料。对于英文不好的我来说,确实是一个不小的挑站。即然决定了,还是得坚持。作者水平有限,文章然免有错,欢迎大家拍砖。同时,作者更希望得到大家的肯定,如果您支持作者,请给作者留言。您的鼓励和肯定是最好的蜜糖,让作者象蜜蜂一样无私的贡献!!  QQ:573696849 小卓   备注:javafx2

 

     最好的祝福
                                                                                                 小卓

                                                                                            2011-07-15

     

第二章 体系结构及框架

一、JavaFX的体系结构和框架

    JavaFX 2.0平台是一个使用Java技术构建和设计富客户端平台,使应用程序开发人员能够轻松地创建和部署富互联网应用(RIA,同时,在多个平台上保持一致的行为。 1所示的JavaFX 2.0平台的体系结构组件。 图1中的部分描述了每个组件和部件间的互连JavaFX公共API引擎和场景图(Scene Graph)在于运行您的JavaFX代码。 它是由子组件组成,其中包括新的JavaFX高性能图形引擎,称为Prism新的小型,高效的窗口系统,被称为Glass媒体引擎以及Web引擎。虽然不公开这些组件,它们的描述可以帮助您更好地了解怎么运行JavaFX应用程序。

1 JavaFX的体系结构图


JAVAFX2.0书:第二章 体系结构及框架-1
 

1 JavaFX的体系结构图说明

二、Scene Graph场景图

JavaFX的场景图,图 1所示红层的一部分,是构建JavaFX应用程序的起点。它是一个层次结构树中的节点,代表所有的应用程序的用户界面的视觉元素。它可以处理输入,可以呈现。一个场景图中的单个元素都称为一个节点每个节点都有一个编号,样式类和边界量。场景图中的每个节点有一个相临的节点和零个或更多的子节点。 它也可以有以下几种:

模糊和阴影

透明度

转换

事件处理(如鼠标,键和输入法)

特定于应用程序的状态

Swing抽象窗口工具包(AWT)不同,JavaFX场景图除了基本图形(如矩形和文本)外,还具有控制布局容器图像和媒体。对于大多数使用者,场景图可以简化它们创建丰富UI的工作,动画在场景图中可以迅速完成

javafx.scene API允许建立以下几种类型的内容:

节点 :形状(2 - D3 - D),图像,媒体,嵌入式Web浏览器,文本,UI控件,图表,布局及容器

状态 :变换(节点的定位和方向),视觉效果,和其他内容的视觉状态

动画 :随着时间的推移场景图对象的属性发生改变

效果 :改变场景图节点,如模糊,阴影,并调整颜色的外观的简单对象

三、JavaFX功能的Java API

    使用JavaFX 2.0平台包括一套完整的公共API,在红层1所示。 这些API提供了前所未有的自由和灵活性,以构建丰富的客户端应用程序(RIA JavaFX平台全面身临其境的媒体功能结合到一个直观和全面的一站式的发展环境使用最好的Java平台的能力。 

这些新的Java API JavaFX的功能,包含如下

允许使用功能强大的Java功能,例如泛型,注释和多线程。

更容易使Web开发人员可以使用从其他流行的动态语言包括JRubyGroovyJavaScript,如JavaFX的。

允许Java开发人员编写大型或复杂的的JavaFX应用程序中使用其他的系统语言,比如Groovy

允许使用JavaFX脚本语言类似的约束型的语言。 包括支持高性能的延迟绑定,绑定表达式,序列表达式的约束,并结合进行重新评估。 替代语言(如Groovy)可以使用此绑定库引入类似JavaFX脚本绑定语法。

扩展Java集合库,包括观察者模式列表(map)作为应用程序用户界面的数据模型,观察这些数据模型的变化,并更新相应的UI控制JavaFX 2.0API编程模型JavaFX 1.x的产品线的延续。 JavaFX API的大部分都被直接移植到Java如布局和介质的API,以及许多其他细节,已经根据JavaFX 1.x版本用户收到的反馈意见进行改进和简化。 JavaFX 2.0依赖于Web标准如CSS样式控制和ARIA的规范使用其他Web标准也正在审查中。

四、Graphics System图形系统

JavaFX的图形系统如图1所示,蓝色部份是一个JavaFX场景图层之下实现细节。 它支持2 - D3 - D场景图。 它提供软件渲染,当系统上的图形硬件是满足要求的情况下,支持硬件加速渲染。

两个图形加速管道的JavaFX 2.0平台上实现:

Prism提供绘制处理。 

它可以运行在硬件和软件渲染器之上,包括3 - D。 

负责光栅和JavaFX的场景渲染。 

以下多重渲染路径的基础所支持的设备:

Windows XPWindows VistaDirectX 9

Windows 7DirectX 11

MacLinux,嵌入式系统下的OpenGL

硬件加速时不可用使用Java2D

完全硬件加速时使用的路径是可能的,但它不可用时,使用Java2D进行路径渲染,是因为Java2D的渲染路径已包含在所有的Java运行时环境(JRE的)。 处理的3 - D场景时,这一点尤为重要。 当然,硬件渲染路径时性能更好。

Quantum工具包关联的Prism Glass 窗口工具它们为JavaFx提供堆栈支持,负责管理相关的渲染与事件处理的线程规则。

五、Glass 窗口工具包

Glass 窗口工具包,米色所示, 在图 1的中间部分,是最低JavaFX 2.0图形堆栈框架其主要职责是提供本地的支持服务,如管理窗口,定时器和外观。它作为JavaFX平台连接到本机操作系统平台相关的层。

玻璃工具包还负责管理事件队列。 不同于抽象窗口工具包(AWT),管理自己的事件队列,Glass工具包使用本机操作系统的事件队列调度线程。 也不像AWT的,Glass具包上运行JavaFX应用程序相同的线程AWT的原生的一半运行在一个线程,并在另一个线程上运行的Java水平这引入了很多问题,其中有许多是在JavaFX使用单一的JavaFX应用程序线程的方法已经解决

六、主题(Threads)

在任何特定时间该系统运行两个或多个线程,如下:

应用程序线程 :这是JavaFX应用程序开发人员所使用的主线程。 任何激活的场景,是一个场景,是一个窗口的一部分,必须从这个线程访问。 然而,场景可以在后台线程创建。 这使开发人员能够创建一个后台线程上的复杂的场景,同时保持平稳和快速的激活场面的动画。 JavaFX应用程序的线程SwingAWT事件调度线程(EDT)不同,因此JavaFX代码嵌入到Swing应用程序时,必须小心。

Prism 渲染线程 :线程处理事件调度单独的渲染。 它允许正在处理帧的N +1 N帧被渲染。 这种执行并行处理的能力是一个很大的优势,特别是在现代系统有多个处理器的情况下。 Prism渲染线程也可能有多个光栅线程,帮助需要渲染负荷的工作。

媒体线程 :线程在后台运行,并通过场景图中使用JavaFX应用程序的线程同步的最新帧。

七、脉冲(Pulse)

一个脉冲是一个事件,它是JavaFX场景图时间同步与Prism 场景图中元素的状态。 场景图运行的动画一个脉冲被限制60帧每秒(fps 即使动画没有运行一个脉冲在场景图中的东西变化的。 例如,如果一个按钮的位置发生变化时,脉冲被重置

    当一个脉冲触发场景图中的元素状态是同步的渲染层一个脉冲允许应用程序开发一种方法来处理异步事件这个重要的功能允许系统批量执行脉冲的事件布局和CSS是有脉冲事件的, 在场景图中的许多变化,可能导致多个布局或CSS的更新,这可能会严重降低性能。 系统自动执行每脉冲的CSS布局传递一次,以避免性能降低。 应用程序开发人员也可以手动触发布局或CSS传递需要进行测量前一个脉冲。

    Glass 窗口工具包是负责执行的脉冲事件它采用的高分辨率的本地定时器执行。

八、媒体和图像

    JavaFX媒体的功能,允许通过javafx.scene.media  API 让JavaFX支持视觉和听觉媒体。 MP3AIFFWAV音频文件和FLV视频文件提供支持。 JavaFX媒体的功能是提供三个独立的部分组成:Media object代表一个媒体文件,MediaPlayer用于播放媒体文件,MediaView是一个节点,用于显示媒体。

媒体引擎的组成部分,在绿色在图 1所示,JavaFX 2.0完全重新设计以增稳定性,提高性能,并提供跨平台一致的行为。 

欲了解更多信息,请阅读JavaFx应该程序文档。

九、嵌入式浏览器

JavaFX的嵌入式浏览器是一个新的JavaFX用户界面的组件,它提供通过一个Web浏览器和全浏览功能的API。 1所示橙色Web引擎组件,是基于WebKit的,是一个开放源码的Web浏览器引擎,支持HTML5CSSJAVASCRIPTDOMSVG 允许开发人员在他们的Java应用程序实现以下功能:

从本地或远程URL渲染HTML内容

支持历史记录和提供的后退和前进导航

刷新的内容

Web组件应用效果

编辑HTML内容

执行JavaScript命令

处理事件

这种嵌入式的浏览器组件以下对象

WebEngine提供了基本的网页浏览功能。

封装WebView一个WebEngine对象,HTML内容集成到一个应用程序的场景,并提供应用效果和转换字段和方法的。它是一个扩展节点类。

更多的JavaFX的嵌入式浏览器的详细介绍, 请参阅JavaFX应用程序

十、CSS

JavaFX的层叠样式表(CSS)提供了改变外观的能力,在不改变任何该应用程序的源代码的情况下,允许定制JavaFX应用程序的用户界面。CSS允许改变任何在JavaFX场景图的节点,并应用于异步节点。 JavaFXCSS样式也可以很容易改变动运行中的场景。

2展示了相同的一组UI控件两个不同的CSS样式的应用程序从位于右上角的菜单中选择风格。


JAVAFX2.0书:第二章 体系结构及框架-1
 

2 CSS样式表样本说明

JavaFXCSS是基于W3CCSS 2.1版本规格,3版上进行一些补充。 JavaFXCSS支持被扩展和设计成允许解析任何兼容的CSS解析器这使得JavaFX其他的(如HTML页面)的CSS样式可以混合使用。 所有的JavaFX属性名称的前缀都有"-fx- "看上去和标准的HTML CSS兼容有所不同其实只是JavaFX值的语义略有不同。

详细的关于JavaFX CSS信息,请参阅JavaFX应用程序外观文章。

 

 

欢迎访问原创地址:http://weedria.iteye.com/

你可能感兴趣的:(UI,Web,swing,html5,JavaFX)