RIA开发权威指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1章 JavaFX与RIA概述

1.1 JavaFX简介

2007年5月,在一年一次的JavaOne大会上,Sun公司发布了一个名叫JavaFX的产品系列。随后2008年12月Sun公司便正式发布了基于Java语言的平台JavaFX 1.0,2009年2月又正式发布了JavaFX 1.1。这个平台建立在其广泛应用的Java编程语言的基础上,旨在建立大量可在电脑和手机上运行的网络程序。其目的是在移动电话、电视、车载系统和浏览器等家用设备上开发和部署富互联网应用程序。

Sun公司这样描述JavaFX产品家族的前景:“能够在台式电脑、移动设备上创建强大的交互式应用和服务。”,如图1.1所示。

最初,JavaFX是为了解决Java Swing应用开发过于复杂和Java GUI的界面过于呆板的问题而出现的。而当JavaFX在2007年的JavaOne大会上首次对外公布时,JavaFX技术则主要应用于创建Rich Internet application (RIAs)。当前的JavaFX 1.1版本包括JavaFX script和JavaFX Mobile,今后JavaFX可能将包括更多的产品。

图1.1 JavaFX产品的应用前景

1.1.1 JavaFX Script

JavaFX Script语言适合任何开发者,不论开发者们具备怎样的编程背景!只要使用简单的声明语句,开发者就能够创建出非常丰富的用户界面。

JavaFX Script不仅是声明式语言,还是纯面向对象的语言,拥有方法和属性(在JavaFX中我们称方法为操作(operations)和函数(functions))。JavaFX Script和Java一样,属于静态语言类型。如Open JavaFX网站所述,JavaFX技术有着良好的前景,包括可以直接调用Java API的能力。因为JavaFX Script是静态类型,它同样具有结构化代码、重用性和封装性,如包、类、继承和单独编译和发布单元,这些特性使得使用Java技术创建和管理大型程序变为可能。

1.1.2 JavaFX Script与Java的关系

如果你有丰富的Java开发经验,尤其是Java Swing的开发经历,你一定深刻体会到Java和Java Swing有着多到令人惊叹的功能,而且这些功能十分复杂。

JavaFX具有和Java一样强大功能,因为JavaFX代码能够调用任何Java库的API,例如能够调用方法、实例化Java类对象。JavaFX的很多用户接口(UI)在后台其实是利用了Java Swing的技术。JavaFX语言集成了Java和Java Swing的强大技术,但是开发者却可以简单而优雅地使用JavaFX语言。我可以兴奋地告诉大家:JavaFX优雅地体现出了“复杂中的简单性”。

1.1.3 JavaFX Script的特性和优势

下面列出了一些JavaFX Script的特性。

· JavaFX Script使用简单的声明语法来实现用户接口(UI)的描述,包括了非常多的面板组件(layout widgets),可以轻易地在没有限制的平台上创建各种用户接口。

· JavaFX Script拥有强大的封装能力,与生俱来就支持MVC设计模式(model –view-controller),可以用声明式编程语法,使用户界面类对象的属性与模型类的属性值进行双向绑定。

· 触发机制能够在一些条件变化时候自动完成更新调用,例如在变量的值发生改变的时候。触发机制能使用声明式语法,可以使得与接口相关的开发变得简单。因为触发机制取代了原有的setters和getters,故能够在变量值发生改变的时候自动完成更新调用。

· JavaFX Script程序运行在Java虚拟机环境中,所以能够在任何能够运行Java程序的地方运行。现在有一个处于起步阶段的项目,叫做OpenJFX Compiler Incubator Project,其目的是把JavaFX代码转换为JVM的二进制代码。当项目全部完成以后, JavaFX Script将会具有和Java程序一样的执行速度。

· JavaFX Script提供强大的定义语法、修改语法、查询语法(比如JavaFX Script中的数组)。· JavaFX Script一方面能够用于快速的开发应用程序,另一方面也可以用于在学校中教授程序设计课程。

1.1.4 JavaFX平台构架

JavaFX平台结合了一种易懂的声明式语言JavaFX Script,开发工具集、图形、媒体和音频支持库,以及运行时环境。这一特性确保了RIA能够在具有不同外形规格和功能的设备之间提供一个一致的界面外观。

JavaFX平台架构如图1.2所示。

图1.2 JavaFX平台架构

1.1.5 JavaFX技术组成

使用JavaFX开发应用程序所需的功能将可用的下载有机地组织起来,Java FX的技术组成如图1.3所示。

图1.3 JavaFX技术组成

1.开发人员程序包

开发人员程序包包含以下工具。

· NetBeans IDE 6.5 for JavaFX

JavaFX技术集成了NetBeans IDE这一成熟、功能强大的开发环境,使JavaFX应用程序的构建、预览和调试变得非常轻松。

NetBeans IDE for JavaFX易于学习,并且附带了JavaFX SDK以及许多示例应用程序。

NetBeans编辑器的特色在于有一个拖放组件面板,能快速添加带有转换、效果和动画的JavaFX语句。

如果您用过NetBeans IDE 6.5,您可以添加JavaFX插件以便包括对JavaFX应用程序开发的支持。

2.设计人员程序包

设计人员程序包由一个称作JavaFX Production Suite的单独下载组成,该下载内容包含以下能使设计人员与开发人员交换可视化资源的工具:

· Adobe Photoshop环境下的JavaFX插件;

· Adobe Illustrator环境下的JavaFX插件;

· Adobe Photoshop CS3和Adobe Illustrator CS3将图形资源从创新设计工具中导出到JavaFX格式所使用的插件。

开发人员可以根据设计人员所创建的各种模型开始构建自己的应用程序。随着可视化设计的发展,开发人员可以很轻松地将作品中的变化融合到应用程序的最终版本中。

3.独立的SDK

如果您喜欢使用其他工具或者直接通过命令行开发,您可以下载独立的SDK。

SDK包括以下组件(当您下载NetBeans IDE 6.5 for JavaFX 1.1时,其中也包括这些组件):

· JavaFX 1.1桌面运行;

· JavaFX Mobile运行时发行版;

· JavaFX 1.1 API;

· JavaFX 1.1编译器;

· JavaFX 1.1 Mobile Emulator发行版;

· JavaFX API文档。

1.1.6 部署JavaFX程序

全球有亿万台设备部署了Java,它有着600多万开发人员。与其他技术相比,Java使JavaFX内容设计人员和开发人员能够影响更多的观众。JavaFX应用程序能够在大多数台式机和膝上型电脑上无缝而又一致地运行,将来会在手机(从最低端到最高端)以及电视和其他设备上运行。

JavaFX 1.1应用程序可以使用两个标准的Java部署技术或者使用移动仿真来进行部署,如下所述:

· Java插件:一个用于部署在Web浏览器内运行的Java applet的工具;

· Java Web Start:一个使用JNLP(Java Network Launching Protocol)部署桌面上独立Java应用程序的工具;

· JavaFX 1.1 Mobile Emulator发行版:JavaFX 1.1 SDK提供的一个工具。JavaFX 1.1 SDK能够将应用程序像在典型移动设备上显示的那样显示。

JavaFX File Packager实用程序以特定于桌面或者移动设备目标配置文件的形式创建应用程序。JavaFX 1.1 SDK包含这一实用程序。NetBeans IDE结合了这个实用程序并在用户选择一个执行模型时可以使用它。

1.1.7 JavaFX Script目前的地位

正如你在本书中看到的,JavaFX Script是Java库有效且可靠的补充完善。

目前JavaFX语法正在不断的改善,JavaFX的类库正在不断充实。OpenJFX是一个开源项目,JavaFX社区正在不断为JavaFX Script贡献创意和技术。社区会继续改进JavaFX Script开发工具,增加新的功能(例如重构代码)。

1.1.8 为什么选择JavaFX平台

开发人员正在寻求跨多个界面创建RIA的最有效方式。他们需要构建在多个Web浏览器、操作系统和设备上无缝操作的高保真GUI而不必针对每个界面接入或者重写应用程序。为了实现这一目标,开发人员需要与团队成员高效工作,例如与图形设计人员和媒体创作者交换音频、视频和其他富媒体资源。我们可以利用JavaFX1.1的强大功能做出各种效果的案例,例如视频媒体播放器,三维效果的显示机框,各种动画和游戏以及可以从浏览器中拖曳到桌面的物件等。这些神奇的案例都可以通过JavaFX1.1简单实现。

JavaFX 1.1平台引入了基本的工具和技术,使开发人员和设计人员能够协作、创建RIA并将其部署到浏览器和桌面上。此外,移动应用程序开发人员可以在JavaFX平台上使用JavaFX 1.1 Mobile Emulator发行版来预览移动RIA的开发,如图1.4所示。

图1.4 预览移动RIA的开发