AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

JavaFX:桌面和移动设备的客户端 Java

  • 2007-10-11
  • 本文字数:3000 字

    阅读完需:约 10 分钟

自从五月份 JavaFX 在 JavaOne 上首次宣布以来,聚焦于改善 Java 的客户端用户体验的一波行动已经开始了。InfoQ 就 JavaFX 的内容及影响采访了 Joshua Marinacci。

Joshua Marinacci ,来自 Sun 的 Swing 工具包团队,最近汇总了 JavaFX 被认可的部分技术,极力证明 JavaFX != JavaFX Script

JavaFX 的市场定义是一套用来创建丰富用户体验的产品和技术。

那么非市场定义意味着什么呢?它意味着我们正在生产一连串聚焦于客户端和用户的新素材。这既意味着要创造一些能制造漂亮新应用的新技术,也意味着要改进现有技术使其变得更好。JavaFX 是对客户端 Java 的根本性改进,因此我们可以用它构建未来应用。我最近更倾向于用户体验(User Experience)这个术语,而不是用户接口(User Interface)。因为用户体验不仅仅是 GUI 组件和特效(eyecandy),它还包括安装 Java、运行 Java 应用、更新等体验。它涉及到速度和可靠性。它不仅仅包含创建体验还包括运行时体验。所有这些都是你的用户“体验”的一部分,甚至比 UI 部件还多。

他罗列了 JavaFX 旗下的技术:

  • JavaFX Script
  • 设计和开发工具(Designer and Developer Tools)
  • JavaFX Mobile
  • 面向消费者的 JRE(Consumer JRE —— 包括:部署工具包、新的安装器、java 内核、快速启动、媒体、Nimbus)

InfoQ 就这些方面及其他方面对 Joshua Marinacci 进行了采访。

JavaFX Script

JavaFX Script 是大幅改进构建客户端 Java 应用的一种新方法。JavaFX 的最新教程介绍了基本 概念 2D 矢量画图板,客户服务器使用 RMI JAX-WS 进行通信以及从图形丰富站点再生页面。

无论是 JavaFXPad 演示 JFXBuilder 还是 NetBeans 的 JavaFX Script Plugin ,这些工具还在不断地进化。

尽管 JavaFX script 没有为产品应用做好准备,而且现在 有点慢,它基本上还是一个进行中的工作。但是,它是构建在一套成熟的 Java 客户端技术之上的:

JavaFX Script(只是 JavaFX 的一部分)仍是测试版,还未为第一版做好准备。该语言仍在开发中,因此我还不想让每个人都将其应用转到它上面。可是,FX script 是访问成熟 JavaSE 套件丰富特性的一种新方法。你可在快速稳定的运行时上获得大量高质量开源类库,你可以用多种不同语言开发。最棒的是你可以很容易与强大的服务器端 Java 应用一起工作。

设计和开发工具

除了已经讲到的 JavaFX script 工具,JavaFX 旗下还有其它面向设计者和开发者的工具:

我们为设计者制作了一个全新工具集。它肯定将与我们的其它工具共享代码,但是它不仅仅是一些 NetBeans 的模块。而是明确定位于设计者和内容创建者的全套工具。更像是 Flash 而非 IDE。我们或许还将给 NetBeans GUI Builder(以前的 Matisse)增加一些 FX 支持,但那与纯设计工具是分离的。
成为构建这种新设计产品团队的一员,我真的非常兴奋。我们有一些大师在从事此项工作并提出了一系列新的令人敬畏的想法。我认为许多人将会对该工具感到惬意、震惊。

我们为开发者制作了 NetBeans 插件(可以在 alpha 版的 NetBeans 里看到),以及一个羽翼丰满的编译器(在 Java.net 上的作为一个开源项目)。该编译器被设计在 IDE 之外工作,尽管很明显我们要与 NetBeans 很好的集成。

JavaFX Mobile

JavaFX Mobile 构建在 Sun 所收购的 SavaJe 套件之上,它支持用于移动设备的一个完整套件,从操作系统到框架和应用:

JavaFX(不仅仅是 JavaFX Mobile)的一个目标是终结分裂的平台。
我们经常说分裂 Java 是件坏事(咄!)而且这是为什么我们过去非常非常谨慎地开放 Java 源码。阻止 Java 分裂可能是 Java 生态系统里最重要的事情。如果是这样(我当然非常同意这种观点),那么任由移动端 Java 分裂而桌面和服务器端 Java 统一没有意义。所以这就是我们以如下方式谈论 JavaFX Mobile 原因:

  1. JavaFX Mobile 是一个完整的移动套件和实现。它不仅仅是一套规范,还是一个实际(单一)实现。基本上它是完全用 Java 编写的全套 OS + 应用 + API 。只有内核和一些设备驱动是用 C 编写的。
  2. 我们可以在信号场内更新系统。移动市场将不再被存在 bug 的旧实现或当前特性所分割。每个设备可以在该平台的同一版本上工作。
  3. JavaFX Mobile 是为高端电话设计的,这意味着它具备了 JavaSE 的能力。

[第三点] 最重要的一点。我们的长期目标是使 JavaSE 和 JavaME 趋于一致。你不再需要了解多个 API。只有一个 Java。

尽管 Josh 不能深入说明哪家移动通讯公司可以提供给 JavaFX Mobile 设备,或评论 Google phone 传闻(“我与其他人一样热切地去看有这个传闻的站点”),他提供了一些影响 iPhone 的更多信息:

可是,我愿意说一件事情。人们经常困惑 JavaFX Mobile 将怎样与 Apple 的 iPhone 竞争。iPnone 实际上是 JavaFX Mobile 的极好载体。假设你是一个手机制造商或一个不排斥 Apple 的移动通讯公司。如果你想制造一款类似 iPhone 设备,Apple 自然不会帮助你销售你的移动设备的操作系统和应用。但是 Sun 愿意…… 移动世界接下来几年将会变得更加精彩。

面向消费者的 JRE

The Consumer JRE 本身是另一个技术簇,最近看到了其第一个 预览版,包括 Nimbus 外观(look and feel)。

面向消费者的 JRE 应该帮助那些只想使用由 Java 编写的应用程序的消费者,使其应用外观紧跟时代、比现在耗费处理时间更少。随着快速启动机制和硬件加速的应用,Java 将比以前响应更快。

人们没有意识到的一个重要事情是,Java SE 6 更新版 N(以前的 Hamburg 项目,以前的 Consumer JRE)是 JavaFX 的一部分。这是 JavaSE 6 的一个新版本,极大提高了安装和部署体验。安装和部署听起来就让人烦,但这是用户开始或安装 Java 应用时所看到的第一步,所以它关系很多问题。JavaSE 即将发生的变化是 JavaFX 套件之上许多更酷可视物件的基础。即使你不用 JavaFX 的任何东西,它们也是很有用的。可以看看在春天发布的 Java SE 6 第一个更新版本。

最终,Nimbus 外观和媒体集成将使 Java 历程成为一种丰富且愉快的体验:

我的理解是处理媒体(尤其是视频)最大的挑战是法律问题而非技术问题,所以问题不在于 Java 不够快或不够强大。新媒体支持的第一版支持回放和抓帧,这已经足够去做人们想在 Web 上做的大多数酷事。我们不是在创建一个完整的像 Quicktime 那样的 API,但是你将可以非常容易地做一些基本处理。

因此……

尽管这些雄心勃勃的计划都在进行中,Sun 和 Java 是否具备在未来富媒体、华丽桌面应用方面产生重大影响的能力?或许这就是 Java 进军客户端的梦想到来的时候,抑或不是?Josh 说到了这些成就的可信性

Sun 已经抓住了企业客户端市场并且很成功。你或许会怀疑有多少大公司使用基于 Swing 的计费和销售系统。Sun 以前(至少 10 年内)从未追随过消费者。现在我们这样做了,所以有些不同了。

我请人们不要听信我们的言辞,只要看我们实际正在做什么。试试 JDK 7 的开发构建;看看在新 Java SE 6 更新 beta 版中将要提供的新部署特性;操练一下 JavaFX Script;用用 NetBeans GUI Builder。我们正在使客户端发生真正的改变。我知道一些人感觉 Sun 是一个服务器公司,在客户端不具可信性,看看我们实际正在做和正在销售的东西吧。我同意这是一个大的变化,但是世界在变化。现在的 Web 已经不是 5 年前的 Web 了。移动世界正在被惊醒。什么都在变,包括 Sun。

要想了解更多信息,请加入 OpenJFX 项目,去看 Josh 关于 JavaFX 的言论或者留下来转到 InfoQ 的 Java 社区.

查看英文原文: JavaFX: Client-Side Java for Desktop and Mobile

2007-10-11 05:042492
用户头像

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

关注

评论

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

翻译:《实用的Python编程》09_02_Third_party

codists

Python

最详细的 K8S 学习笔记总结(2021最新版)!建议收藏

民工哥

Kubernetes 容器 运维 后端

智能小车系列-NODE版SBUS飞控协议解析历程

波叽波叽啵😮一口盐汽水喷死你

SBUS 飞控协议 SBUSReceiver S.BUS SBUSUART

架构训练营模块 2 作业 - 张动动

张大彪

架构训练营

架构实战营——作业二: 朋友圈架构分析

开拓纪

微信朋友圈 #架构实战营

写作平台一周年 | 我曾陪伴走过四季春秋

架构精进之路

个人总结 4月日更 1 周年盛典 我和写作平台的故事 InfoQ 写作平台 1 周年

PHP异常处理

Sakura

4月日更

模块二作业

Chris Cheng

架构实战营

volatile 关键字需要知道的几点

lich0079

Java volatile Disruptor unsafe false sharing

Toolkit 大更新:UI 更美观,用起来更方便!

程序员小航

Java IDEA idea插件 IntelliJ IDEA JSON格式化

架构师实战营-模块二作业

大可

架构实战营模块2作业

阿体

架构实战营模块2作业

竹林七贤

架构实战营

模块二作业:微信朋友圈高性能复杂度分析

@oo?金樱子

爬虫IP代理池代码记录

空城机

Python 爬虫 代理IP 4月日更

架构实战营 - 模块 02 作业

架构实战营

数据仓库为什么要分层

五分钟学大数据

数据仓库 4月日更

听说你们写毕业设计没有动态数据?Python教你一步完成!

大数据老哥

面试总结-Java-2年

U2647

Java 面试 4月日更

模块二 分析微信朋友圈的高性能复杂度

ifc177

【AI全栈SOTA综述 】这些你都不知道,怎么敢说会AI?【语音识别原理+实战】

cv君

AI 算法 音视频 引航计划

以应用为中心的云原生2.0

8小时

Prometheus counter 四大 query 函数详解

Grafana 爱好者

云原生 Prometheus 可观察性 PromQL

联想小新潮7000安装CentOS后重装Windows10

笑春风

架构实战训练营 - 模块二课后作业

Johnny

架构实战营

最新、最全、最详细的 MySQL 数据库学习笔记总结(2021最新版)

民工哥

MySQL 数据库 Linux 后端 运维工程师

工作中的设计模式 —— 建造者模式

程序员小航

Java 设计模式 建造者模式

Oozie平台调度

大数据技术指南

oozie 4月日更

让孩子爱上阅读(三)

箭上有毒

读书笔记 4月日更

看看别人家 SpringBoot 的全局异常处理,多么优雅....

Java小咖秀

springboot 全局异常

python 异常处理

若尘

异常 异常处理 Python编程

JavaFX:桌面和移动设备的客户端Java_Java_Geoffrey Wiseman_InfoQ精选文章