Oracle 为客户端 Java 制定两年计划

  • Charles Humble
  • 孙立志

2011 年 10 月 25 日

话题:Java语言 & 开发

Oracle 以往主要关注企业级软件,这使人们误以为 Oracle 在很大程度上忽略了 Java 客户端软件。然而在今年的 JavaOne 大会上,Oracle 明确表示他们正在重新推动桌面端的开发,主要代表就是JavaFX。而且 JavaFX 也将通过OpenJDK使整个 JavaFX 平台开源。

其实 JavaFX 早在 2008 年就已经提出来了,然而只获得了有限的推动。因为很多开发者抱怨,在使用这种 GUI 开发框架的时候,他们不得不学习一种新的编程语言(JavaFX Script)。在去年的 JavaOne 大会上,Oracle 宣布,JavaFX 2.0 将摒弃 JavaFX Script,代替它的是一套完全基于 Java 的 API。JavaFX 2.0 基于上述说法发布,这意味着开发者可使用任何基于 JVM 的编程语言(Java、Clojure、 Scala、Groovy 等等)和在 JVM 运行的任何平台来开发 JavaFX 应用程序。这种改变同时带来一些新特性,像基于 XML 的 UI 表述语言(FXML),并且支持包括微软的 Kinect 在内等新设备。

为了帮助开发者们更好地使用 FXML 语言,Oracle 正在开发一套图形编辑器——JavaFX Scene Builder,且已在大会上展示过。该编辑器是一款独立的编译工具,并将集成在 NetBeans 中。目前它还只处于内部的 beta 版,预计公共版本最早会在 2012 年与大家见面。

同时,Oracle 关注 HTML5 和 JavaScript。JavaFX 2.0 让我们可以在 JavaFX 应用程序中嵌入 HTML5 的内容,这些内容会通过 WebKit 渲染。在 JavaOne 大会上,Oracle 还宣布了另一项名叫 Avatar 的工程,它的主要任务是:让基于 HTML5 UIs 的混合应用程序,无论是在数据中心还是云里,都可以共享 Java 客户端和 Java EE 服务器上的内容。

与此同时,Oracle 将在一定程度上继续支持 Swing。很明显,Oracle 相信,JavaFX 将是构建 Java UI 应用程序的最好途径,因为在 InfoQ 参与和组织的各种相关会议中,人们都表现出对 JavaFX 极大的兴趣。然而作为 GUI 开发系统,无论 JavaFX 怎么好,如果不能在期望的目标设备上运行,那么就毫无意义。

在移动开发领域,这个问题尤为突出。Java ME 是 Sun 和移动电话设备之类平台的成功先驱者,然而 Java ME 技术在近些年来一直徘徊不前。正在进行中的相关研究也被基于 Java 的、在QNX real-time OS系统上运行的黑莓(BlackBerry)所替代;Nokia 所依赖的 Java ME 也正因向 Windows Mobile 平台转变而面临褪色,甚至基于 Java 的 Android 平台也在使用非标准化的 Java 实现。

前景可期, 在今年的 JavaOne 大会上,Oracle 宣布了“统一 Java ME 和最新版本的 Java SE”的计划。这个聚合的平台具有重大意义,因为各种相关技术,例如 JavaFX,将会在更多的设备上使用。在与 Oracle 融合中间件团队中的客户端开发副主席 Nandini Ramani 的一次交流中,她说她可以让同一款 JavaFX 游戏既运行在 Android 平板电脑上,又运行在 iPad 上——这会受到大家的热烈欢迎。然而这并不意味苹果公司终于后悔了,并让 JVM 运行在 iOS 系统中。这个实例只是说明这样的理念:并不是要求每个人在启动程序中连接私有的 JVM 资源,而只是证明了存在这样的可能性。在后来的一次交谈中,Ramani 证实,是否在实践中应用运行这种技术,Oracle 不会与苹果公司再进行讨论。她同时指出,这已有先例,例如苹果为了规避类似的限制,已经允许相同的技术在 OS X app store 和Cyberduck使用,而且他们确实这么做了。

Oracle 同时注重 JavaFX 在更多的桌面操作系统使用,预期明年发布在 OS X 和 Linux 操作系统上运行的 GA 版本。在 2013 年,Java 8 SDK 版本将会包含 JavaFX 3(可能在各种平台上运行)产品。届时,Oracle 会通过 JCP 对该项技术实施标准化。

最后,在 2010 年苹果公司宣布放弃自己的 Java 实现平台后,目前 Oracle 已经拥有可在 Mac OS X 平台上用的 JDK 7 预览版本,预计将于 2012 年发布 GA 版本。

查看英文原文:Oracle Sets Out Two Year Plan for Client-side Java
Java语言 & 开发