点击查看美团、百度、蚂蚁技术专家的软件质量保障技术实践>> 了解详情
写点什么

Stephen Chin 谈 WidgetFX 和 JFXtras

  • 2009-01-24
  • 本文字数:3993 字

    阅读完需:约 13 分钟

尽管 JavaFX 刚刚出来一个多月,由于开发者们踊跃尝试 Sun 的新 RIA 平台,已经涌现出了大量项目和例子。Stephen Chin 就是其中的先驱,他是两个开源 JavaFX 项目的主要开发者: WidgetFX JFXtras ,他也是即将出版的 Pro JavaFX 一书的合著作者。InfoQ 采访了他,以了解更多关于他的项目以及他对 JavaFX 的整体印象方面的信息。

InfoQ:你能给我们一些关于你自己及你的开发经历方面的背景信息吗?

当然。我是从 Java 1.0 开始做起的,为 Carnegie Mellon 构建了一个 Java IDE,叫做 Sheets,后来就一直从事 Java 方面的相关工作。我有两个兴趣:开源软件和敏捷开发,它们已经成为开发高质量企业软件的一个非常流行的组合。目前我是 Inovis 的高级管理人员 / ScrumMaster,而在晚上和周末我是 WidgetFX 和 JFXtras 开源项目的项目领导。只要我有空,就会骑摩托车到处转转,或者把我可爱的女儿驾到我的头上。

InfoQ:JFXtras 给 JavaFX 发布增添了什么能力?

JFXtras 项目是在于 Jim Weaver 的一次谈话中诞生的,在 JavaFX 1.0 发布之前我们就细数着希望 JavaFX 应该具备的一切:包括动态布局、对话框、更好的异步支持、单元测试、更多的组件!所以 JFXtras 0.1 版包括如下特性也就不足为奇了:

  • JFXtras Grid —— 一个纯 JavaFX 声明式的 grid 布局,简单情况下非常易于使用,但是对于复杂布局支持强大的配置(包括 spans、alignment、以及 grow priority)。
  • JFXStage / JFXDialog —— 顺便替代 JavaFX Stage 类,其给出了真正的 Java Dialog,可以访问 Swing 窗口以及许多像 alwaysOnTob、pack 等这样的特性。
  • JFXtras Test —— 一个声明式的、流畅的、行为驱动单元测试框架,让你可以用 JavaFX 语言为 JavaFX 代码编写测试。一旦你习惯了声明式测试的强大能力,你就很难回到普通的 JUnit。
  • JFXWorker —— 一个支持异步 JavaFX 的临时方案。
  • 还有很多……(查看 API 文档可以获得完整特性列表)

InfoQ:JFXtras 项目的目标是什么?

我们正在生产 0.2 版本,我们希望它能早日问世。除了在 Grid 和单元测试方面的改进外,我们还规划了一些重大的新特性。Groovy GraphicsBuilder 的 Andres Almiray 已经加入了我们团队并把他的 jSilhouette 图形库移植到 JFXtras 项目,它将提供了很多漂亮的图形基本元素,如十字形、星形、球形以及 Reuleaux 三角形(crosses、stars、balloons、Reuleaux triangle)。我们还将拥有 JavaFX 的首个图表工具,提供由 Ben Jone 编写的很酷的 JavaFX 饼图组件,最近在 Jim Weaver 的 blog 上提到了这一特性。 除了这些,我们有一个相当高效的、拔尖的、乐于奉献的全明星团队,在接下来的几个月,你们就等着瞧好吧!

InfoQ:创建 JavaFX Widgets 项目的主要原因是什么?你认为它将用在哪里?

WidgetFX 项目诞生于企业 Java 开发者对高质量、开源、跨平台桌面 Widget 框架的需求。尽管有许多其他框架给消费者提供了桌面 widgets,但它们主要还是 JavaScript 和 HTML 的,这就意味着它们缺乏完整的桌面集成支持,并且有重大安全隐患。而且,由于非常严格的许可协议,阻止了他们在大企业中的采用,这限制了他们的商业使用。

InfoQ:社区中有许多关于混合及匹配 JavaFX 和 Swing 的评论。在 Swing 应用程序中使用一个 JavaFX Widget 很容易吗?

T 这是个很好的问题,而且已经经过许多讨论了。把 Swing 嵌入 JavaFX 相当容易,已经被用来创建 WidgetFX 的几个第三方 widgets,比如 Ludovic Hochet 的世界时钟。 反之,把widget 嵌入到Swing 应用也是可能的,但是你必须使用一个无支持的组件,叫做JXScene,Josh 就此写了个 blog

InfoQ:你认为 JavaFX 会对 Swing 开发者产生什么影响?

JavaFX 中的声明式 GUI 编程非常容易让人上瘾。一旦你习惯了新的绑定、触发器及动画支持,你就很难回到老风格命令式的、事件驱动的 UI 编程方法。我相信使用 Swing 构建传统客户端 UI 仍会有用武之地,特别是在 JavaFX 成熟之前。可是,从长远看,开发者需要 JavaFX 提供的高开发效率而企业需要 JavaFX 提供的丰富用户界面技术。

InfoQ:JavaFX Widgets 已经能与 Flash/Flex 进行一定程度的交互。你能说说这方面的内容以及怎么做到这一点的吗?

我利用了 Alexey Utkin 开发的 JDICplus 类库,在 WidgetFX 中提供了无缝 Flex 集成。再现 JavaFX 相同的用户体验是一种挑战,包括透明和可拖拽 widgets,但是在付出心血之后一切都搞定了。 或许目前最大的限制是平台支持。JDICplus 只支持 Windows,这限制了这一特性的跨平台能力。如果能看到 Sun 将 JavaFX 的 Flex 集成作为优先解决的问题,并创建一个简单的、跨平台的解决方案来嵌入 Flash、Flex 和其它浏览器技术,那就太好了。

InfoQ:你认为 JavaFX 与 Adobe 的 Flex 及微软的 Silverlight 相比,主要优势是什么?

我认为 JavaFX 的两个主要优势是:Java 集成和手机平台。例如,WidgetFX RSS Reader 是一个只有 250 行的代码,包括许可、注释及配置,而它支持人们所知的所有 RSS 和 Atom 特性。它之所以如此轻量级,是因为它利用了非常健壮的 ROME 项目来提供 RSS 支持,这是一个开源的 Java API,从 JavaFX 调用它是小事一桩。目前没有其它 RIA 平台能够像 Java 这样拥有这么多的开源类库和扩展。 还有,JavaFX 手机平台将打破原有格局。过去对大多数开发者和企业来说,手机市场是高不可及的,因为开发能够运行在多种设备上的应用的复杂性大且成本高昂。现在情况不同了,我已经使用 JavaFX 1.0 附带的手机模拟器做了些原型,尽管还不完善,但却可以把作为桌面 widget 运行的同一段代码直接移植到电话上执行,这太令人惊奇了!

InfoQ:你觉得 JavaFX 在市场上的表现将会如何呢?

我认为现在就此作出任何评论都为时过早,但是 JavaFX 的确已经以令人惊讶的方式激发起了开发社区的热情。我想业界领先的网站开始在其他技术难以匹敌的方面采用 JavaFX,这只是个时间问题。

InfoQ:你们使用什么样的 IDE 来进行 JavaFX 开发?

我主要使用 NetBeans 进行 JavaFX 开发,如果是 JavaFX1.0,这个 IDE 提供了比较好的支持。我最近还安装并开始使用 Eclipse JavaFX 插件。我也乐见包含了许多允诺的 IntelliJ JavaFX 插件的更新问世。 至于 JavaFX 获得广泛采纳,我认为所有主要 IDE 都包含对 JavaFX 的支持是很重要的,而且支持的力度要和对 Java 支持力度一样。包括:错误高亮显示、自动代码格式化、搜索使用、跨语言遍历(Java 到 JavaFX 以及反之)、快速 JavaFXdoc、条件编译、重构(重命名、提取方法、移动包等等)、模板及代码提示。不同的 IDE 插件都会支持上述列表的部分特性,但是目前还没有一个完全支持上述特性的 IDE。

InfoQ:你们在开发 JFXtras 和 JavaFX Widgets 时都遇到过什么问题没有?如果有,你们是怎么解决的?

在开发 WidgetFX 和 JFXtras 我们遇到了许多小问题。例如,尽管 JFXDialog 看起来是一个简单的概念,它实际上需要好几个棘手的工作,在经过数小时检查 JavaFX 反编译代码后这项工作才得以完成。对使用 JFXtras 的用户来说是幸运的,它被很好的抽象到一个文档齐全的类中,我们将把它作为核心 JavaFX 类库改进来维护。 另一个例子是 CacheSafeGroup ,它用 JavaFX 节点上的缓存变量修订了多显示器的一个 bug。我们把缺陷已经记录在案,而 JavaFX 团队明确将在下一版本修订这一错误,但是 WidgetFX 项目不能因此中断,因此我们实现了一个可重用的替代方案,它顺便替代了 Group。

InfoQ:你的项目从 Sun 那儿获得了多少支持?

Sun 的伙计们非常忙,但是很支持我们。Joshua Marinacci 是官方 WidgetFX PR 项目成员,在撰写博客和向 JavaFX 社区宣传方面做出了杰出贡献。而且在各种场合,只要我逮到他们,他们总是热情地倾听我们的满腹牢骚,并向我们询问更多反馈,以便将 JavaFX 平台做得更好。

InfoQ:你对那些考虑在企业应用中采用 JavaFX 的人们有什么样的建议呢?

有几件事情对于任何商业 JavaFX 项目的成功都是至关重要的: - 与你的图形设计团队紧密合作——JavaFX 是一个复杂的新模型,不受传统浏览器限制,因此让设计团队了解他们可以利用的能力是很重要的,包括新的 JavaFX 产品套件。

  • 从你的客户那儿获得早期反馈——使用 JRE1.6.0_10 中新的内核安装器,创建一个无缝部署体验将比以往更加容易。可是,如果你预先知道客户机器限制只能使用老的 Java 版本(比如 1.5),那么你就可以针对那个平台来安排 JavaFX 开发。
  • 不要重复发明轮子——JavaFX 1.0 出厂产品并没有提供给你构建企业应用所需的所有东西,但是你可以利用第三方项目如 JFXtras (自卖自夸),不至于让自己陷入到维护许多重复的底层架构上。

InfoQ:来年你最想看到 JavaFX 什么东西?

我有一个无止境的愿望列表,即便是圣诞老人都无法满足我的需要,但是其中一些比较关键的是: - 异步支持——JavaFX 没有一个干净的执行模型,以支持长时间后台任务执行。这对编写高性能应用的开发者来说非常重要,最终将会影响该语言的成功。JFXtras JFXWorker 是向正确方向迈出的一步,但是仍受限于核心运行时中的一些限制。

  • 在 Java 中内嵌 JavaFX——如果有全面的支持机制能够在 Java 中嵌入 JavaFX,那太好了。除了为现有 Swing 应用提供移植路径外,这将为 JavaFX 的进一步高级应用提供众多可能。
  • Web2.0 集成——Web 上有大量可用的服务及技术, JavaFX 的采用将从中受益。正如我先前提到的,对 Flash 和 Flex 的内建支持将帮助与地图服务的集成,比方说 Google Map。JavaFX 桥接当前开发社区所使用技术的能力越强,将来 JavaFX 平台就越成功。

InfoQ:你还要补充些什么吗?

我非常高兴能与 Jim Weaver 和 Weiqi Gao 合作出书。Jim 或许是当前 JavaFX 社区的最重要的联络人,而 Weiqi 是个绝对的语言天才,因此我们合力创作,一定会写出令人印象深刻的作品。它将确定在 JavaOne 之前出版,到时候一定要搞上一本并来参加我们的专题会议(session)!

查看英文原文: Stephen Chin on WidgetFX and JFXtras

2009-01-24 09:141542
用户头像

发布了 150 篇内容, 共 40.6 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

Java架构师面试题系列之Mybatis面试专题(36题,含详细答案解析

爱好编程进阶

Java 程序员 后端开发

[Day26]-[BST] 验证BST

方勇(gopher)

LeetCode BFS 数据结构与算法

把pinpoint编译环境做成Docker镜像文件

程序员欣宸

4月月更

C语言总结_数组知识

DS小龙哥

4月月更

【直播回顾】OpenHarmony知识赋能第五期第一课——精益开源

OpenHarmony开发者

OpenHarmony 成长计划

戊申篇「股權去中心化」《「內元宇宙」聯載》

因田木

去中心化金融 商業因果

解析数仓OLAP函数:ROLLUP、CUBE、GROUPING SETS

华为云开发者联盟

Rollup GaussDB(DWS) cube GROUPING SETS OLAP函数

Java实现栈和队列

爱好编程进阶

Java 程序员 后端开发

CentOS 8 更新提示 appstream 错误

HoneyMoose

Spring Data MongoDB 使用示例

Java mongodb 4月月更

【建议收藏】整理Golang面试第二篇干货13问

利志分享

golang golang 面试

DDIA 读书笔记(一):可靠、可扩展、可维护

木鸟杂记

数据库 分布式系统 数据系统 DDIA 设计数据密集型应用

Go 语言入门很简单:net/url 包

宇宙之一粟

url Go 语言 4月月更

vue2.x版本中Object.defineProperty对象属性监听和关联

程序猿布欧

JavaScript Vue vuejs 数据响应式原理 Javascript框架

如何写好B端产品的技术方案?

汤师爷

SaaS 架构设计 技术方案 B端产品

Java如何支持函数式编程?

爱好编程进阶

Java 程序员 后端开发

Java并行程序基础

爱好编程进阶

Java 程序员 后端开发

融云洞察:打造社交元宇宙,从「读懂 00 后」开始

融云 RongCloud

阿里云机器学习PAI开源中文NLP算法框架EasyNLP,助力NLP大模型落地

阿里云大数据AI技术

深度学习 nlp 开源技术

STM32+华为云IOT制作酒驾监控系统:上车就监控

华为云开发者联盟

mqtt stm32 华为云IoT 酒驾 酒驾监控系统

OpenHarmony技术日全面解读3.1 Release版本 系统基础能力再升级

OpenHarmony开发者

OpenHarmony OpenHarmony 3.1 Release

Java异常面试题

爱好编程进阶

Java 程序员 后端开发

场景化组件开源,融云持续回馈开源生态

融云 RongCloud

redis优化系列五Sentinel 实现原理常见问题

乌龟哥哥

4月月更

考试试卷存储方案

小虾米

架构实战营

融云实践:实时音频混音在 Web 端的探索与实践

融云 RongCloud

资讯|WebRTC M99 更新

网易云信

WebRTC

Java学习笔记-集合

爱好编程进阶

Java 程序员 后端开发

Java开发5年从星瑞15K跳槽去腾讯32K+16,啃完这份笔记你也可以

爱好编程进阶

Java 程序员 后端开发

丰富多彩的管理端—主题功能介绍

中原银行

前端 中原银行 主题 管理端工程

帮助文档——助客户快速了解您的产品如何使用

小炮

帮助文档

Stephen Chin谈WidgetFX和JFXtras_Java_Charles Humble_InfoQ精选文章