1 JavaFX 综述

本章将介绍那些可以用JavaFX APIs 构建的应用程序,如何下载JavaFX库,和JavaFX 的一些关键信息。

JavaFX提供一系列的图形、媒体包,使开发者可以依此设计、创建、测试、调试和部署丰富的客户端跨平台应用程序。

  • JavaFX 应用程序
  • 可用性
  • 关键特性
  • 我们可以通过JavaFX做什么
  • 如何运行示例应用?
  • 资源
Java 应用

JavaFX库是由Java API编写,JavaFX 应用程序可以调用任意的Java库。比如我们可以再JavaFX应用程序中调用Java API 获取操作系统的信息或者连接远程服务器等。

JavaFX应用程序的外观和样式可以定制。叠层样式表(CSS)将代码和外观进行分离,让程序员可以专注于自己的逻辑代码,设计师们可以更加容易的定制应用程序的外观。如果你由web开发背景或者你像分离UI与后端逻辑,将UI写进FXML脚本是一个很不错的选择。如果你不想通过代码创建界面,那JavaFX 提供的Scene Builder 肯定可以帮上你。

实用性

JavaFX APIs 是一个可以用于JRE 和JDK中完整的功能模块。因为JDK在主流的桌面平台的跨平台特性(Windows, Mac OS X, and Linux),JavaFX 应用程序编译到JDK7以上的运行平台后可以运行于各个主流的桌面平台。ARM平台同样在JavaFX8 得到支持。ARM版本的JDK包含了JavaFX的基础组件,图形和控制组件。

跨平台兼容性为JavaFX应用程序的开发者和用户提供了一致的体验。Oracle 确保在所有平台同步发布和更新,并且为运行关键任务的公司提供广泛支持计划。

在JDK下载页面,你可以获取到包含JavaFX 示例代码的zip文件。这些示例代码提供了丰富的代码例子和片段供学习。

关键特性

下列的也行包含在JavaFX8 以及后续版本:

  • JavaAPIs:JavaFX是一个由Java 编写的类和接口的Java库。APIs的设计旨在为Java虚拟机语言提供良好的替换选择。
  • FXML and Scene Builde:FXML是一种基于XML的声明性标记语言,用于构建JavaFX应用程序的用户接口。设计师可以在FXML文件里面写相关代码或者用JavaFX Scene Builder工具交互设计图形用户接口。JavaFX Scene Builder生成的FXML标记可以轻松的移植到开发者编写逻辑代码的IDE中。
  • WebView:基于WebKitHTML 技术的web组件使JavaFX应用程序拥有内嵌网页的能力。Java APIs与运行在WebView中的JavaScript 脚本可以互相调用。HTML5中所支持的特性包括Web Sockets, Web Workers, and Web Fonts和打印能力也添加到了JavaFX8中。
  • Swing interoperability:Swing 应用程序可以更新到JavaFX的特性,比如丰富的图形媒体播放和嵌入网页内容。JavaFX8中新增的SwingNode类可以使JavaFX应用程序嵌入Swing 组件。
  • 内建UI控件和CSS:JavaFX提供主流应用程序所需的全部控件。组件可以由标准的web技术比如CSS进行美化。 DatePicker 和TreeTableView控件也在JavaFX 8 中发布。更多信息请看JavaFX UI 控件
  • Modena 主题:Modena主题将Caspian主题替换为JavaFX 8应用程序的默认主题。不过Caspian主题依然可以通过在start()方法里面添加setUserAgentStylesheet(STYLESHEET_CASPIAN)实现。
  • 3D图形支持:JavaFX 8的3D图形库添加了新的 API :Shape3D (Box, Cylinder, MeshView, 和Sphere 的子类), SubScene, Material, PickResult, LightBase (AmbientLight 和PointLight 的子类), 和SceneAntialiasing。Camera API类也在该版本中更新。点击开始使用JavaFX 3D 获取更多信息,参照API Javadoc中的javafx.scene.shape.Shape3D, javafx.scene.SubScene, javafx.scene.paint.Material, javafx.scene.input.PickResult, 和javafx.scene.SceneAntialiasing,进行学习。
  • 画布API: 该API可以使用户在JavaFX 的scene中的一块图形节点(node)区域直接进行绘制图形
  • 打印API:JavaSE8中新增的javafx.print 包提供公共的JavaFX Printing API.
  • 富文本支持:JavaFX 8 给JavaFX 带来了更强大的文本支持,包括双向文本和复杂文字脚本,例如控件中的Thai和Hindu,以及文本节点中的多行,多样式文本。
  • 多点触控支持:JavaFX根据基础平台的能力提供多点操作的支持。
  • Hi-DPI支持:JavaFX 8 已经支持视网膜屏。
  • 图形管道硬件加速:JavaFX 图形基于图形渲染管道(Prism)。JavaFX 通过使用收到Prism支持的图形卡或者图形显示单元可以快速渲染出平滑的图形。如果系统不具备JavaFX支持的推荐GPU之一,则Prism默认采用软件渲染堆栈。
  • 高性能的媒体引擎:媒体管道支持网页多媒体内容的播放。它提供一个基于GStreamer 多媒体框架的稳定、抵延迟的媒体框架。
  • 独立的应用程序部署模型:独立的应用程序包具有所有应用程序资源以及Java和JavaFX运行时的私有副本。 它们作为本机可安装软件包分发,并提供与该操作系统的本机应用程序相同的安装和启动体验。
我们可以通过JavaFX做什么

通过JavaFX你可以构建多种应用程序。通常,它们是网络应用程序,可跨多个平台部署,并在具有音频,视频,图形和动画功能的高性能现代用户界面中显示信息。
表1-1列出了一些典型的由JavaFX 8构建的应用程序
表1-1 JavaFX 应用程序

示例应用

描述

Alfresco上传提示java.lang.OutOfMemoryError: Java heap space javafx api_应用程序

JavaFX Ensemble8

Ensemble8 是一个集合了JavaFX特性的示例程序,包括动画,图表以及控件。你可以在所有平台上运行以及阅读他的文档。在桌面平台你可以任意复制示例代码,调整里面的参数以及通过它的链接在联网的时候阅读相关API文档。Ensemble8 同样可以运行与ARM环境。


Alfresco上传提示java.lang.OutOfMemoryError: Java heap space javafx api_Java_02

Modena

Modena示例展示了Modena 主题下面的UI组件


Alfresco上传提示java.lang.OutOfMemoryError: Java heap space javafx api_Java_03

3D视图

3DViewer是一个示例应用程序,允许你使用鼠标或触控板导航和运行3D场景
3DViewer同时可以导出一个java scene 或者FXML文件


如何运行示例应用

本节会展示如何下载以及运行基于Java平台(JDK8)中的示例程序

注:
  在阅读下面内容前需要先安装好JDK8 或者JRE

下载和运行示例

  1. 进入下载页面:http://www.oracle.com/technetwork/java/javase/downloads/
  2. 找到JDK8 和JavaFX Demos 部分。
  3. 点击下载
  4. 下载得到对应操作系统的zip文件后解压
  5. 双击可执行文件
    比如想要运行Ensemble8 预编译的例子可以双击Ensemble8.jar文件