Sun CTO 谈 JavaFX Mobile 和 JavaFX Script

  • David Beers
  • 霍泰稳

2007 年 5 月 24 日

话题:Java语言 & 开发

在本次 JavaOne 大会上,Sun 通过宣布 JavaFX 表示了自己对客户端 Java 的重新重视。JavaFX 是一个构建于 Java 技术之上完整的运行时环境,可以用来交付到桌面、移动设备、手持设备和电视等环境的富互联网应用(RIA)。在这些里的每一个硬件平台上,这个新技术都提供一个脚本语言,以结合 Java 的威力用于快速开发有 Flash 效果和交互式图形用户接口的应用程序。但是这还远不是 JavaFX 所展示的全部,它还代表了 Sun 的一个里程碑式新商业策略和一门新前沿技术。InfoQ 就此采访了 Sun 的首席技术官 Bob Brewin,他解释了这一技术对 Sun、Java 开发者以及使用者等这些 JavaFX 所真正关注的对象的意义。

问到是什么驱动了 Sun 在这个时候向市场推出这个技术,Brewin 没有像常人所想的那样回答说是为了更丰富、更快速开发桌面 Web 内容的需要,而是表示说 JavaFX 是对 Flash 和 AJAX 增长的一种回应,现在移动手机和电视屏幕比桌面浏览器离用户更近,在他的思想里,这些才是 JavaFX 最重要的驱动力。这正好印证了 Sun 在大会上所讲的将注意力放在消费者产品上的观点,这样 Sun 就有可能为 Java 技术占领最大范围的市场。Brewin 指出,现在世界上大部分人在访问互联网内容时的首要选择不是桌面计算机,而是移动手机。

根据目标硬件平台的不同,JavaFX 或者构建在 Java SE 上或者 Java ME 上,但是以 Mobile 的眼光来看,它更像是一个可以制作交互式内容的产品化脚本接口——一个设备上的完整操作系统,包括 Linux 内核和本地服务等。它应该被看作 Windows Mobile、Symbian OS 和其他移动 Linux 平台的竞争对手。在移动手机上运行时,JavaFX Mobile 能实现内嵌在大多数移动手机里的电话服务。所以以这个观点来看,你就能明白这一技术和Sun 最近从 SavaJe 处所获技术的关系。Linux 内核和 CDC Personal Basis Profile Java runtime 的目标是与高级智能手机一个级别的手持设备,以及电视和其他连接设备,但是 Brewin 说随着运行时的优化和完善,Sun 也会将此应用到 CLDC MIDP 等“功能手机(Feature Phone)”。因为整个 JavaFX 软件系列都将会开源,所以 Sun 期望能通过出售完整的设备平台来增加许可(License)收入,而不仅仅是 Java 运行时环境。很多项目都在进行之中,甚至包括 Solaris 内核这一现在应用在大多数移动设备都有的 ARM 处理器上的简易操作系统。

问到 JavaFX Script 的起源,Brewin 回答说这个用于脚本化交互式 GUI 的语言是由 Sun 工程师 Chris Oliver 所开发,当时他还在 SeeBeyond 技术公司(2005 年被 Sun 收购)。很多开发者可能都熟悉它从前的名字——F3。JavaFX Script 静态类型化并提供编译时错误检查机制,使得它有可能被用于开发可支持代码完成、超链接、重构等功能的强大工具。其他的语言特性包括类型推断(type-inference)、声明语法,以及完全支持 2D 图像、标准 Swing 组件和声明动画的自动数据绑定等。你还可以导入 Java 类,创建新的 Java 对象,调用它们的方法,以及实现 Java 接口等。

相应的制作工具也在开发之中,但是在大会上 Chris 展示了一个由他自己开发的可用于 JavaFX 脚本化的交互式 GUI 构建器。这个工具包含在 JavaFX 面向开发者社区所发布的初始版本里。因为脚本语言和工具在所有的目标平台上都保持一致,所以 JavaFX 看上去能实现 Sun 的“一次编写,处处运行”的承诺,甚至比 Java 自己做的还好。当然,在 JavaFX 脚本里被导入和调用 Java 对象会依赖提供的 Java 运行时。对于为只有有限资源和缺少 Swing 或者 AGUI 类库支持的 CLDC 设备所发布的 JavaFX 版本而言,它的功能某种程度上肯定会减弱。

桌面 JavaFX 现在所要考虑的一个问题是部署。对于从前没有安装过 JRE 的用户来说,JRE 体积太大,而且现在从浏览器上进行按需安装的用户体验也不是特别好。Brewin 在演讲中提出了一个可行的解决方案,在 Java 6 Update 2 里将会为 JRE 引入一种新型的部署模型,初次下载时体积非常小,只有在需要时才下载其他的 JRE 组件。他说这个概念非常类似 Java 7 中提到的Java Kernel项目。被问到类似的部署模型会不会用在 Java ME 上时,Brewin 说当然有可能,这会由 Java Community Process 来推进。

让他对 JavaFX 和 Adobe Flash 做个对比时,Brewin 回答说这是一个“苹果和橘子”的比较。Flash 有很好的功能,但它永远不能交付 Java 类库的大部分功能,而 JavaFX 可以。他说更好的比较是在 JavaFX 和Apollo(Adobe 将要为桌面 RIA 提供的一个运行时)之间。在这个擂台上,他认为 JavaFX 会非常有竞争力。

查看英文原文:Sun CTO Bob Brewin on JavaFX Mobile and JavaFX Script

Java语言 & 开发