`

JavaFX技术预览

阅读更多

Java的成功可以归结于这样一个事实:它在其所面向的领域里是门非常优秀的通用语言。对于现代企业计算中典型的长时间运行的服务器端编程,以及其 它诸如 以支持跨平台、稳定性和安全性为关键的移动开发等方面,Java都是一个不错的选择。但对于一些需要一定程度的专业知识的编程任务,Java和所有通用语 言一样不是非常合适。比方说挑战技术和管理的现代GUI设计。

 

从管理角度来看,一个流畅、复杂的用户界面通常需要一些不同的角色——图像艺术家、信息架构师、动画设计人员和程序员。虽 然某些人可以担当起所有的职责,但这类人绝对是少数。通常来说,整个开发过程需要不同的工作人员的参与,设计人员和开发人员之间资源的来回流动常常是个大 问题。技术方面,现代UI设计需要高层次的技术知识。类似Swing这样的复杂工具包,它为开发人员提供了一套复杂的控件,但在创建UI时,开发人员需要 花很多时间去学习其使用方法。此外,界面的响应能力在很大程度上依赖于并发性。这本身不是什么问题——Java多线程编程很简单——但随之带来的是大量的 管理转换和动画的固定代码。

Sun凭借JavaFX介入富互联网应用领域,向Adobe的Flex和 Microsoft的Silverlight宣战。JavaFX无疑是Sun为Java开发人员解决相关问题的策略之一。它的目标在于为创建横跨桌面、互 联网和移动设备的富互联网应用提供一个基础平台,这也可以看出Sun的Java系列产品的一个重大转变,它不再仅仅专注于底层技术,而是开始创建完整的解 决方案。目前的技术预览版包括两个主要组件:关注于设计人员/开发人员工作流的Nile项目和JavaFX Script——一个编写Java GUI应用的新型说明性语言(declarative language)。

Flex和Silverlight都选用XML作为自己的说明性语言(分别使用MXML和XAML),而 Sun却选择重新开发一门新的脚本语言——JavaFX Script。Sun高级工程师Joshua Marinacci告诉我们,Sun不打算添加对XML语言支持:

“我们发现很多开发人员非常讨厌XML,他们想要的是一个为图形界面优化过的更为简洁的说明性语法。我们相信熟悉JavaScript的开发人员会发现JavaFX Script非常好用。”

JavaFX Script是一个说明性的、静态类型的、编译的、领域特定语言(DSL),它建立在Java标准版和缩微版的基础上,使用来自JavaFX环境的Java包来创建用户界面。它主要针对两类用户组:

  1. 已经熟悉Swing但仍在寻找一种更快更有效的方式来创建富功能界面的Java开发人员。
  2. 熟悉其它脚本语言例如JavaScript或ActionScript的Web开发人员。

JavaFX Script的开发效率很高,拥有一些非常方便的用于插入和删除操作的功能(比如,insert 10 before x[1];)。它还解决了其它很多常见问题,例如,它可以轻松地把UI组件绑定到后台数据库;它通过一个简化的类似监听者的机制(称为事件触发器)在变量 值改变时触发相应的事件。

Sun在语言的可读性上苦下工夫,使它易于掌握,容易读懂。但这样做的一个结果是,他们在 Java和JavaScript中使用了类似BASIC的布尔操作符而不是C风格的操作符。所以,JavaFX Script用“and”替代&&,用“or”替代||。另外,它能够同时支持“not”和“!”。适应这样的用法不需要很多时间,但我 的确发现很多客户都对此感到很惊讶。

JavaFX Script还有其它一些方面也很让人吃惊。比方说,它虽然支持使用保留字来创建函数或者变量,但它却要求用法式引号消除原意——例如,ar <<while>> = 100——而非通过情境分析来判断。再比方说,JavaFX Script选择支持多继承而不采用Java的接口方式。Marinacci解释说:

“GUI环境下,我们发现使用多继承可以简化很多任务。大多数情况下,开发人员没必要用到创建子类,所以这不是什么大问题。子类的应用主要集中在组件开发上。”

JavaFX借鉴并增强了一些源自的Java的思想。值得一提的是JavaFXDoc在Javadoc的基础上对文档工具做了 必要的更新。JavaFXDoc放弃了HTML,选择生成XML格式文档,随后转换成其它输出格式。目前的格式是XHTML1.0。这种两步走的策略为将 来支持其它格式例如PDF或者建立存储知识的数据库的可能性保留了实现的余地。新的输出格式不使用frame,可以很容易地通过CSS对其格式化。它同时 还可以对各个profile做基本的过滤——例如,JavaFX API被分为通用、桌面和移动profile,可以正确过滤文档。这里有一个例子 。另一个能够体现高效开发的功能是JavaFXDoc通过@examples标识生成内部示例。示例代码自动根据语法高亮显示,然后文档工具编译和执行示例把结果截屏贴到文档中,提供了一种自动更新文档截屏的方法。

我们与Marinacci还谈到了这项工具的未来开发计划,他证实Sun正在开发一个搜索解决方案,但1.0版不会提供。对核心Javadoc工具 的更新目 前暂定在Java 7发布,他相信Javadoc未来版本的开发会吸取JavaFXDoc带来的经验教训。JavaFX Script可以访问所有现存Java包,它本身也包含了一些新的API。其中两个关键API是媒体 API(目前提供的是原生库版本,在1.0版中将以On2 TrueMotion video codecs 取 而代之)和场景图形API。场景图形API体现出具有Swing技术背景的开发人员通常思考GUI的方式的转变。这里GUI代表了一系列层次的可视化节 点,这些节点组成场景并与用户交互。场景图像模型支持效果、任意变换(缩放和旋转)和动画。场景图形保留图形对象,每当页面刷新时都会重画图形,这就隐藏 了处理重画的细节、缓存和其它类似于Java2D那样的即时性API问题。这种层次的抽象也允许API进行各种优化,例如预加载纹理和图形卡的原型。场景 图形API与JavaFX紧密关联,但你也可以在普通Java程序中应用。

Sun把API分成3种profile,目前可以用的有 两种:通用profile API在所有设备上都可用,包括场景图形API和媒体组件,而桌面profile则更类似于Swing组件。第三种是移动profile,预计在2009 年发布,对移动设备开发人员可能是一个完整的应用栈,不过目前没有详细的公开的信息。

截至到撰写本文时,通用API尚且存在一两个重大的遗漏——例如,JavaFX预览版中没有和Table、TabbedPane、TextArea或BookPanel相同的对象。1.0版应该会更为完整些。 Marinacci告诉我们:

“我们计划把Swing组件移植到子类节点,然后就可以自由地把Swing组件和图形节点混合在一起,不需要再使用适配器类。目前,高级类(例如树和表格)只在桌面系统上可用。”

开发一个新的语言而不是听从Adobe的领导是一个大胆的尝试,我觉得这个很好的决策。JavaFX Script很好用,而且除了目前的应用外还有其它一些可能的用途——例如,JavaFX数据格式(FXD),这是Nile项目的一个关键部分,采用 JavaFX Script说明性格式的一个子集来表示图形资源。

Microsoft为Silverlight提供了特别的工具箱(Expression工具包),直接转换Adobe的 Creative Suite的输出文件。Sun也正在开发自己的工具(预计明年),他们决定通过Nile项目来支持目前流行的一些工具,这些工具中首当其冲的是Adobe 的Illustrator和Photoshop。

Nile项目支持OS X和Windows,它包含特别针对Adobe Illustrator和Photoshop CS3的插件、一个SVG转换工具以及JavaFX数据格式(FXD)查看器。使用Adobe工具的设计者可以像往常一样创建图形资源,最后以FXD的格 式输出。用户可以通过查看器来浏览图形文件,以确认输出的文件如期望的一样。开发人员还可以通过JavaFX脚本语言来访问和处理组成图形资源文件的各个 图层。这些操作对于图形资源的处理表现地很好,但定制样式到基本组件却仍然是个问题。Sun目前正在研究如何利用CSS包装Swing组件,这是 JavaFX 1.0版中计划实现的目标之一。

所有这些工作都在Java 6 Update 10(正式名称为消费者JRE项目)的基础上完成——对部署、性能、内存使用和内建的感观(Nimbus)的改善更有助于推动Swing高效地开发桌面应 用。可惜的是,目前对开发人员来说,这些改善仍然很有限。尽管Sun公司已经发布了update 10的Windows、Linux和Solaris版本,但这几个版本在applet quickstarter、内核安装文件和Direct3D pipeline(仅限于Windows平台)方面的实现方式完全不同。此外,苹果公司在所有64-bit Intel Mac的OSX 10.5上对Java 6都有所限制。 Marinacci也向我们证实了Sun正在与苹果合作改善Java和JavaFX对OSX的支持的消息,但没有透露任何细节。同时,他还向我们提供了最 新的下载统计数据:

“JRE每月平均有4000-5000万次的下载,有些月份会达到1亿。这些下载95%是JavaSE 6。在JavaSE 6 update 10正式发布数月之后,它会开启自动更新,我们期望能够看到类似的数据。根据Omniture的统计,连接到因特网的计算机有91%都安装了Java。”

Flash 和Silverlight都是完全封闭代码的专有工具,对于某些开发人员来说在使用上是一个巨大的障碍。由于Flash中的很多关键代码例如音频和视频解 码器都由第三方授权使用,Adode因此很难像Sun开放Java那样轻松地开放Flash平台。虽然license还没有最后敲定,但Sun正在努力把 JavaFX作为开源软件发布,目前他们已经在GPL v.2 license下发布了编译器和场景图形API。开源也许能够显著提高JavaFX平台的普及率,然而,若想成为有力的竞争者,JavaFX还有很多重要 的工作要做。

查看英文原文: Java FX Technology Preview

分享到:
评论

相关推荐

    javaFx pdf 阅读软件

    JavaFX PDF阅读软件是一款基于JavaFX技术开发的PDF文档查看应用程序。它利用开源库icepdf来解析和渲染PDF文档,为用户提供一个用户友好的界面来查看和操作PDF文件。下面我们将详细探讨JavaFX、icepdf以及如何使用...

    JavaFx 浏览PDF

    6. 性能优化:考虑到PDF文件可能会很大,可能需要进行一些性能优化,如预加载页面,或者使用虚拟化技术只渲染可视区域的页面。 7. 错误处理:添加适当的错误处理代码,处理如文件不存在、无法解析PDF等异常情况。 ...

    JavaFX 教程 (中文).docx

    无论是从零开始创建项目,还是导入已有的源码进行学习,都能让你快速掌握JavaFX开发的关键技术。记得参考JavaFX官方教程和其他相关API文档,以获得更全面的知识。 一旦你完成了这个教程,你将能够自信地使用JavaFX...

    JavaFX 8 实例教程

    JavaFX 8是JavaFX平台的一个版本,和Java 8同步发布,是构建图形用户界面的官方推荐技术。 2. 开发环境准备:开发者需要安装最新版本的Java JDK 8(包含JavaFX),以及Eclipse IDE 4.3或更高版本,并且需要安装e(fx...

    FxMarkdownEditor-基于JavaFx的Markdown编辑器

    【FxMarkdownEditor】是一款基于JavaFX技术开发的Markdown编辑器,专为喜欢使用Markdown语言进行文本编辑的用户设计。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构...

    javafx-11.0.2-windows.rar

    - **Scene Builder**:这是一个可视化的工具,可以帮助你快速设计和预览JavaFX界面,无需编写任何代码。 在你的博客教程中,可能会涵盖如何配置IDE、创建第一个JavaFX应用、理解和使用基本的UI组件,以及如何处理...

    Learn JavaFX 8

    本章探讨了 JavaFX 中的打印功能,包括页面布局、预览和最终打印过程。 #### 三、总结 通过以上章节的学习,读者不仅可以掌握 JavaFX 8 的基础知识,还能深入了解其高级特性。本书《Learn JavaFX 8》是一本不可多得...

    luke-javafx-7.3.1-luke-release.zip

    总的来说,"luke-javafx-7.3.1-luke-release.zip"是一个结合了JavaFX的最新技术与Lucene的强大搜索功能的工具包,对于Lucene开发者和信息检索领域的专业人士来说,它是一个不可或缺的辅助工具,帮助他们深入理解、...

    sun开发的javafx的eclipse插件

    标签"sun javafx eclipse"强调了这个插件是连接Sun的JavaFX技术与Eclipse IDE的关键桥梁,它帮助开发者在Eclipse中利用JavaFX的强大功能。 压缩包文件"com.sun.javafx.eclipse.feature-win32-win32-x86-1.0.1"可能...

    javafx+canvas+ffmepg+opencv+百度语音,视频编辑工具源码

    标题中的“javafx+canvas+ffmepg+opencv+百度语音,视频编辑工具源码”揭示了这个项目是基于一系列技术实现的桌面视频编辑应用。让我们逐一解析这些技术及其在视频编辑工具中的作用。 1. JavaFX:JavaFX 是一个用于...

    javaFX 入门教程

    **JavaFX** 是由Sun Microsystems(现已被Oracle收购)开发的一种高级编程语言和技术平台,主要用于构建丰富的客户端应用程序。JavaFX的目标是简化开发者的工作,使其能够更加高效地创建美观且功能强大的用户界面。 ...

    java小迷宫 基于JavaFX的迷宫小游戏 Java 、Eclipse 、JavaFX

    通过这个插件,开发者可以在Eclipse中方便地设计和预览JavaFX界面,提升开发效率。 在描述中提到“运行不出来”,这可能是因为缺少必要的环境或者配置错误。运行JavaFX应用需要Java Development Kit(JDK)和JavaFX...

    Everest-使用JavaFX构建的一个漂亮且轻量级的REST客户端

    Everest是一款基于JavaFX技术构建的美观且轻量级的REST客户端工具,它专为开发者设计,便于测试和调试RESTful API。通过使用JavaFX,Everest提供了丰富的用户界面和流畅的交互体验,使得API调用变得直观而高效。 ...

    javafx_javascript

    1. **JavaFX介绍**:JavaFX是Oracle提供的一个开源框架,用于替代早期的Swing技术,提供更现代、更美观的UI设计。它使用Java或Groovy进行编程,同时支持FXML(JavaFX标记语言)用于布局和界面设计。 2. **JavaFX与...

    javaFXDemo:javaFX 停车场监控小例

    【javaFXDemo: JavaFX 停车场监控小例】是基于JavaFX技术实现的一个小型应用程序示例,主要用于演示如何使用JavaFX构建一个实时监控停车场状态的用户界面。JavaFX是一个强大的图形用户界面(GUI)工具包,它为开发者...

    java实现pdf预览功能项目汇总,含三个项目

    本项目汇总包含了三个关于Java实现PDF预览的项目,旨在帮助开发者理解和掌握这一技术。 一、PDF预览的基本原理 PDF预览涉及到的主要步骤包括读取PDF文件、解析PDF内容、渲染页面并展示给用户。Java中常用的PDF处理...

    java实现pdf预览

    在Java中实现PDF预览涉及到多个技术层面,包括解析PDF文件、渲染页面以及提供交互式用户体验。以下是一些关键的知识点: 1. **PDF解析**: - PDF文件结构:理解PDF文件的组成部分,如对象字典、页面树、字体资源等...

    采用JavaFX8开发的一款Asciidoc编辑器和工具链

    5. **代码高亮**:对于技术文档,代码示例的高亮显示至关重要。AsciidocFX提供了多种编程语言的代码高亮功能,使得代码块更易读。 6. **文件管理**:AsciidocFX提供了一个内置的文件浏览器,方便用户组织和访问他们...

    一、JAVA调用海康威视SDK实现摄像头预览

    总之,通过JAVA调用海康威视SDK实现摄像头预览是一项技术含量较高的任务,它涉及到网络通信、多媒体处理、多线程编程等多个方面。借助"hcws_project"提供的源码,开发者可以快速入门,并在此基础上进行更复杂的定制...

    pdf的预览demo

    本教程将围绕“pdf的预览demo”这一主题,详细介绍如何使用Java技术实现PDF预览。 首先,我们需要引入一个支持处理PDF的库。在Java中,Apache PDFBox和iText是两个常用的选择。这里我们假设使用Apache PDFBox,因为...

Global site tag (gtag.js) - Google Analytics