虚拟座谈会:RIA 和 Ajax 技术的现状与展望

阅读数:5721 2009 年 4 月 16 日 18:52

最近,InfoQ 通过 Email 针对 RIA 和 Ajax 技术的现状和展望专门成立了虚拟小组。该小组召集了多位对社区有着卓越贡献的技术精英,他们是:

Mozilla 公司开发工具主管 Dion Almaer

Curl 公司的首席策略官 Jnan Dash

SFEIR Author OnGWT.com 公司的首席技术官 Didier Girard

Java Web 用户组创始人 Peter Pilgrim

微软客户端平台宣传部门主管 Tim Sneath

Adobe 公司的富互联网应用宣传人员 Ryan Stewart

随后,我们会看到每位组员针对不同问题的答复。

1. 尽管 RIA 技术已经出现,但是 Web 还是由“页面”占主导而非“应用程序”。然而,去年随着网站对视频和交互浏览等嵌入了“迷你应用程序”,我们已经看到了这种现象正加速改变。而最终由 RIA 导致了这场变革。

Almaer: - Web 页总会占有一席之地,但我认同我们正朝着 Web 应用程序的时代迈进。当然,Web 应用程序早已出现,但我们正经历着这场改变:

  • 开发反应灵敏的 Web 应用程序技术还不成熟
  • Ajax 勉强组合了一些技术和标准来给终端用户提供开发应用程序所需的简要工具
  • 时至今日,Ajax 就像第一架飞机那样。它们勉强的凑合在一起并发挥几分作用,但离理想的距离还很遥远。出现问题会让人非常惊讶,但毕竟这不是喷射机的时代。简洁实用的软件就让人心满意足了

Girard: - 互联网聚集了大量页面。这种情况已经持续多年了。但在最近的两年,我看到了企业开发的飞速发展。现在,大部分的应用程序都是单页面应用程序,而 RIA 才是它的核心。

Dash: - 我认为 RIA 在消费者当中还有很大的空间,特别是从静态可刷新页面转移到动态交互应用程序的要求非常强烈。对于企业级 RIA,除了提供交互和可设定状态的交易应用程序外别无选择,这正是它们在客户端 / 服务器模型中过去常常用到的。然而,企业级 RIA 在美国还没起步。相反,我们在日本已经看到大量的企业在使用 Curl RIA 平台。

Sneath: - 回答这个问题相当困难,因为它基于“RIA”术语的业界标准假设。例如,长期以来我们身边出现了强大的互联网应用程序框架,我们推出 ASP 已经 12 年了,它提供了基于 HTML 的抽象层来跨页面支持状态属性,丰富的控件和在客户端 / 服务器开发之间的无缝开发。下个月 AJAX 就 10 岁了,随着 IE5 配备了第一个实现技术,这项技术后来作为某项标准而被采纳。

过去的 20 年间,最大的进步莫过于像 Silverlight 和 Flex 等框架提供的丰富图形功能,以及更加强大的编程工具和以往单单用 HTML 和 JavaScript 都难以实现的架构。我们终于可以集成媒体、控件、图像及编译代码并用互联网进行发布,同时给设计师和开发人员提供各式各样的工具。这些技术还不成熟,但是部分市场已经足够成熟来进行广泛的应用。

Pilgrim: - 我相信 JavaFX RIA 在去年底已经应用到桌面。我把它限定在桌面是因为我们仅得到了针对移动电话和移动设备的第一个 JavaFX Mobile 正式版。仅有少量的网站应用了该技术。例如,Adobe 开发的 Flex 应用程序 Dashboard 已经一年了。微软发布的富应用程序 Silverlight,应用到 NBC 转播奥林匹克运动会中,奥巴马总统的就职典礼也应用了该技术。除了 RIA 的新星,我想不出更好的词来形容 JavaFX 了。我知道的最大型的 RIA 应用程序是 TweetDeck,它是 Adobe RIA 应用程序。我现在每天都使用 TweetDeck,尽管在它的界面上我没有发现任何措施阻止别人建立它的 JavaFX 版本。

Stewart: - 我仍然不确定这项技术是否已经成功。我想在咱们扩展特定的范畴来包含像小组件、视频、更丰富的桌面应用程序和丰富的浏览器应用程序,很明显带有诸多 RIA 的元素,但是还是有很多公司并没有发现它的使用价值。然而,我确信我们已经到达了一种特殊的境地,因为设计工具逐步实现了设计师的想像。一旦这项技术成功的话,RIA 就会更容易的占领各个领域,因为设计师和开发人员可以就 RIA 的强大外观显示而更好的合作,无需牺牲开发方面的任何东西。

2. 引入 RIA 技术的同时,我们强调可移植性。然而,用户要求与文件系统、停靠和任务栏、日历和其他与 OS 进行的本地操作。你认为 RIA 平台在未来的几年会着重集成这些功能吗,抑或继续朝着互操作的方向呢?

Stewart: - 这变得非常的有趣。我们仍然倾注了巨大的能量和热情来关注浏览器。在 Web 的诸多方面,我认为大家已经给桌面判了死刑。但它在很多方面都有价值,例如:访问文件系统和利用底层的操作系统等。而且我认为它会变得越来越重要。我确实觉得我们开始看到浏览器和桌面之间的联系,但是随之安全成为关注的焦点。同时,我喜欢像 AIR 或 Appcelerator 那样的技术方法让我们使用强大的 Web 开发语言来利用某些桌面功能。

Sneath: - 我认为用户对于最佳应用程序体验的需求是必然的,我母亲并不明白 Web 和 Windows 应用程序之间的区别,她只想完成工作,无论她是在本地进行绘图抑或是利用因特网上的资源。现在至少,你需要在这里做出选择,即唯一适合的解决方案就是本地应用程序,同样,有很多解决方案以移动方式来发布的。很难两种方案同时发布,并且每种平台目前都利用非标准和非通用的方式,这种解决方案看起来既不像本地应用程序也和其他类型的系统难以集成。

微软客户端平台的其中一项优势是具备兼容的解决方案来满足两种需求:使用 Silverlight,我们针对发布跨平台的大型解决方案提供了轻量级的运行时;同时我们有 WPF,它是 Silverlight 的父集,适合建立 Windows 应用程序来完全访问底层操作系统并可以利用本地硬件性能。因此,很自然地建立跨 Silverlight 到 WPF 的解决方案就有可能了,你可以建立自己的应用程序并扩展它的使用范围。

Dash: - 让我们再次来区分一下用户级 RIA 和企业级 RIA。用户对互操作性的需求比起集成需求更加强烈。无论在哪里,我们都会受益于客户 OS,比如:利用视频呈现驱动,Curl 利用它们来提高性能。通过客户端集成和服务器端的互操作性实现,顺带提一句,Curl 并无任何服务器端代码。

Pilgrim: - 这个问题提得很好。我觉得开发 RIA 解决方案可以给 Web 浏览器用户带来更好的用户体验。Web 和桌面之间的区别已经淡化。Java 6 更新 N 系列允许用户从浏览器拖动 Java Applet 到桌面上。Adobe 有 AIR。只要我们反思这种可能性,我们就会立刻陷入思想斗争之中:谁主宰桌面呢?那些应用程序可以这样做?抑或用户或者企业会把那个应用程序植入桌面呢?

如果我们把 RIA 定位在这个水平,那么 OS GUI、隐私和安全模型的互操作性概念就会变得极为重要。还有一个项目叫做 WidgetFX,理论上允许团队内建小插件到谷歌桌面或者 Windows Live 环境。利用 Java Enterprise Web API 开发企业级应用程序就会非常有趣了,好比泛滥的 Web 框架或者可移动应用程序 (JSR 186,286 和 WSRP)。

我认为用户(消费者)将影响应用程序的成功与否,例如:TweetDeck。销售捆绑的企业级 RIA 或者小插件,用 JavaFX 开发的话将需要更多的工作量。

Almaer: - 我们两者都需要。我们钟情于互操作性,但那会给开发人员带来麻烦(就像 Java 编程早期那样,他们链接 DLL 都不是那么容易)。这项挑战也许意味着你会说:“我觉得我不能用这项技术来完成,所以我会回到桌面 API 平台。”现在是推进 Web 和获取桌面服务 API 的时候,所以我们可以像本地平台那样完成所需要的功能。

我们披上了一层安全的面纱。“我们不能那么做,因为我们是在 Web 环境中”。但是这非常的虚伪。要让用户获取相关的功能,我们之前都是在本地平台上编写应用程序,并要求我们的用户下载和安装它。基于这一点,用户不可能完全安全。他们运行我们的可执行文件,这些文件可以完全控制他们的系统并为所欲为。我们要针对 Web 应用程序建立安全的不会对用户进行干扰的可信的模型,我之前已经讨论过。( http://almaer.com/blog/application-trust-models-expanding-web-applications-out-of-the-sandbox )。

3. 当前视频应用程序是 RIA 最主要的类型之一。你认为在未来的 12-18 个月里面,RIA 技术会被那一种类型的应用程序所采用?

Dash: - Curl 针对基于 Web 应用程序所要求的高可扩展性、可靠性、安全性、性能和可预测性。在过去的 15 年,从客户端 - 服务器应用程序的转变,大大地降低了 TCO(总体成本)。坦白的说,视频在这些应用程序中并没有很高的优先级。那就是 Curl 为 400 家大企业客户用作关键业务应用程序。而并非单个客户发布视频。

Pilgrim: - 对于其他媒体,很明显在音频方面。2008 年,JavaFX 取得了巨大的成功。这是第一次,开发人员可以编写简单的视频播放器并把它作为 Applet 发布。

对于 JavaFX 的其他应用就是移动应用程序。我看到有游戏和移动应用程序。实质上,是因为 JavaFX Mobile 是基于 JavaME 栈之上。

Sneath: - 视频文件仍然非常庞大。今天,大部分的视频内容的发布还远远没有到达“高清”的要求。视频还有许多革新的空间,不管是在前端抑或是后端,我们都很清楚看到它在未来的几个月内都给 Silverlight 带来的巨大的机会。

除此以外,我认为我们还将在来年看到 AJAX 更加依赖于客户端框架。我常常惊叹于众多高手能够提取 HTML 和 JavaScript 代码,但创建像 Gmail、Outlook Web Access 或者 Facebook 这样的高端体验所需要的技巧,却只有少部分的开发者掌握,即使有像 jQuery 和 ASP.NET AJAX 这样的高级框架。像 Silverlight 这样的框架通过抽取掉不必要的复杂性使得创建富英特网应用程序的过程变得更加大众化,所以开发人员可以集中在体验本身。

Almaer: - 我看到了人们对于转用这项技术在 Web 上能完成那些功能的总体趋势有所改变。曾经有那么一段时间,人们会认为创建基于 Email 客户端的 Web 应用程序的人是疯了。现在却有很多人用 Gmail/Yahoo!Mail 等等。还有一些人进行地图搜索。我们开始建立 Bespin 的原因是为了弄清楚我们可以多深入地建立富 Web 代码编辑器,而不是华丽的代码。我预期这个趋势还会继续,并在你知道以前,我们会看到像视频编辑器和 Photoshop 等实实在在出现在 Web 上。看一下 iWork.com 站点就会给你一点启发。

Girard: - 在我的领域里,RIA 主要采用合作开发。我看到越来越多的公司会因他们的团体需求而且要求更加复杂的应用程序。

Stewart: - 视频仍然是关键。但我认为更加重要的一件事是即时协作应用程序。Web 开始进入即时状态,我们常常网聊的同时,却不能做其他的事情。随着人们上网的时间越来越长,像 Facebook 那样的网站会成长地越快,对于点之间和朋友之间的即时协助存在着巨大要求。我认为 RIA 特别能满足该需求,因为它结合了视频、音频和丰富的界面。Adobe 和 Microsoft 都有一些强大的终端解决方案,使得 RIA 前端能够满足这项需求。

4. 相对于其它的框架和语言(如:Ajax、GWT、Curl、Flex、Silverlight、JavaFx 等),它的最大优势在哪里呢?

Sneath: - 我只能选择其中一项吗?

Silverlight 其中一项核心竞争力就是在如此小的程序包内却实现了如此强大的功能。如果你正寻找媒体播放器,Silverlight 实现了平滑的流媒体、数字内容保护和真正的高清支持。如果你正寻找一个平台来建立下一代业务应用程序,Silverlight 提供多种控件、数据绑定、Web 服务支持,全部都配备了强大的.NET Framework 和 Visual Studio 工具。如果你想创建让人叫绝的用户体验,Silverlight 提供强大的图形和媒体集成,配备了新技术 DeepZoom,以及可集成到 Adobe Illustrator 和 Expression 设计套件工具的基于 XML 的标记语言。全部加起来还不到 4M,支持 VB、C#、JavaScript、 Ruby 和 Python,并在 PC 机和 Mac 上免费可用。

Dash: - Curl 的最大优势是开发者的生产力(一种涵盖了一系列的文本、图形、网格以及面向对象的类型和类)、运行时的可扩展性优势、大容量的数据处理、把客户端 - 服务器代码快速编译成机器码和高级别的安全性。这是所有大公司对于关键业务应用程序的基本需求。

Pilgrim: - JavaFX 最有用的是和 Java 兼容。所以你可以利用源代码的知识库,例如:Apache 软件基金会、Codehaus 和 SpringSource。

第二个有用之处是用于开发的标准场景图像 API、内建到语言和平台中的动画绑定和触发器。

Almaer: - 我的观点是开源 Web、Ajax 等。好处是在这些技术前面不会标有公司名。既然已经有 MICROSOFT Silverlight 和 ADOBE Flex。我们就需要 Ajax——开源的 Web 平台。这意味着我们有机会让开发人员控制平台,而不是今天和某个公司密切合作,但明天呢?然而,我们不能仅以贩卖“开放相关的内容”生存,我们需要在平台级别上竞争,同时我们庆幸有通用的技术,尽管别人已经完成了这些工作。

Girard: - 对于生态系统来说,GWT 更紧密的技术。

  • 许多开发者懂得 java 语言,他们都是忘我的 RIA 开发者,对于 java 开发人员转到 GWT 只需一天时间
  • 浏览器就是 GWT 应用程序的运行时。它是广泛使用:GWT 应用程序可以在所有浏览器上运行,甚至在 iPhone 或 Android

Stewart: - 我认为 Flash 的渗透性是一个大课题,因为进入的门槛非常低,但有很多好处。第一,Flex 是目前最成熟的技术。我们正使用该框架的第四个版本,Flex 来自于企业背景所以该框架非常牢固并被广泛使用。我认为 Adobe 的设计社区也带来了好处。设计是 RIA 的核心之一,Adobe 做得比任何公司都好,我们正给我们的开发者社区注入这种精神。我也觉得 ActionScript 非常强大。从第一个版本至今经历了漫长的过程,它是真正的 OOP 语言,对于 JavaScript 开发人员来说很容易掌握,对于 C#或 java 开发者也一样。

5. 相对于其它的框架和语言,它的最大不足在哪里呢?

Almaer: - 其他平台都有归属。它们有统一的文档。你知道去哪里查找。使用 Ajax,存在的普遍问题是它难以查找到相关的资料。作为一个庞大的社区,我们在 2009 年会做相应的工作。

Pilgrim: - 第一个致命的缺点是它缺乏基于组件的复杂场景图形库,这并不使用 Swing。例如,没有纯粹的场景图 SplitPane 组件、无 TabbedPane 或者 JTable 的替代物。你不得不在编程的时候自己动手。我已经编写完 SplitPane.fx 和 BorderLayoutPanel.fx 组件。然而,方便可用,附在 JFXtras 项目中。除此以外,我不确定 Sun 公司还做了什么。在高级组件方面,FX 远远落后于 Silverlight 和 Flex。

第二个致命的弱点是 JavaFX 媒体目前没有录制功能。换句话说,使用的客户端没有媒体编码功能。目前,你编写 JavaFX 版的 Sims-On- Stage(Electrionic Arts 收购的流行 Web 卡拉 OK 网站)非常困难。必须加强 Java Media Component API。如果你准备进行流媒体录制的话,可以使用 JavaSound API 并做大量的技术性高级编程。在这种情况下,FX 落后于 Adobe。Java 和 JMC 云可能超过 Adobe,如果它们开始视频的子像素呈现并提供混响音效,例如,录制和处理功能。

JavaFX 是目前最经济的应用程序。你可以使用相对简单的 GUI 根据市场数据给用户实现流业务信息。建立带表格数据的高性能 JavaFX 应用程序也许还要等上一段时间。

Dash: - Curl 最大的不足之处是大家对它的认识相对比较模糊。我们大部分的客户在发现 Curl 可以解决高性能和安全需要之前,尝试使用 Ajax 和 Flex 都失败了。同时,视频呈现不是我们的强项,之前也不是我们的目标之一。

Sneath: - 我们从竞争对手那里听到的异议是 Silverlight 并没有在客户机上大量的安装。事实上,我们很高兴 Silverlight 在市场上的引入力度。 Silverlight 2 已经发布 5 个月了,在这段时间,我们看到数以千万计的电脑进行安装,机器上 Silverlight 的安装率是 FireFox 和 Google Chrome 的总和。很自然地,我们不会满足于取得的成绩,我们会继续对该平台进行投入,但随着我们的展示网站像 Netflix、March Madness、Sky UK 和 AOL,我们有信心安装率会继续提高。

Stewart: - 其中一个感觉是,Flash 仍有很多观念上的问题需要解决,因为人们并不把它视为实现应用程序的方式而是骚扰广告媒体。庆幸的是,视频某种程度上改变的这种观念,但周围仍然有很多“骚扰 Flash”。另外一个弱点是我认为 Flash 需要适应 Web 生态系统。很多东西像 SEO、链接、分析技术都建立在 HTML 模型之上,所以大块的 Web 如何运作以及赚钱实际上依赖于 HTML 和 JavaScript 的。我们只是看到 Flash 在某些方面表现更好,但是最终它总让人觉得有点不同,这正是我要研究的缺陷。

Girard: - 浏览器的弱点就是 GWT 弱点。最重要的是关于 2D 图像。如果浏览器更难好的支持画布和 SVG 的话就好了。

6. 大多数 RIA 语言并不同时用于开发客户端和服务器。主要的后台程序用 PHP、Java 和.NET 等实现。如何看待这种多语言编程模型对RIA 的影响呢?

Dash: - 我喜欢“精通多种语言”这个词。坦白说,这会让人混淆。我观察到业界正分化为双语言方案(例如:C#和 XAML、 ActionScript 和 MXML、 JavaFX 和 Java)。有些人会说 2 种比 4 种好而 4 种又比 6 种好。但是我们使用 Curl 的人相信一种语言包含演示层和逻辑层。因此,MIT 的研究人员设计一种统一的语言来解决整个方案。这就导致了可怕的“程序员经济”,一些我们在 RIA 业界没有注意到的东西。我们的客户经验极大地证实了这项优点。Curl 是相当好的建立富客户端应用程序的多范例语言。我们希望你能够掌握这项语言。

Stewart: - 我希望它很快会得到采纳。学习新语言是令人畏惧还是有趣取决于你如何看待它,但文中的观点,针对应用程序结合不同的语言变得非常重要。最后,我认为让程序员自由使用最适合他们的语言组合才是最有生产力的。如果每个人都同意那种说法,我们认为每个 RIA 供应商都会看到高采用率和广泛应用,这也会让我们得到鼓舞。

Almaer: - 我喜欢 RESTful 的世界。我认为它有很好的解耦功能。然而,我们正探索统一的前端和后端观念,在我们当中使用 JavaScript。使用富服务器端 JavaScript 平台,移植 JavaScript 到浏览器,在接下的日子中,我们会得到 Smalltalk 支持的有趣解决方案吗?我们正要探索。

Girard: - 对于 GWT 情况却并非这样。你可以对客户端和服务器端使用相同的语言。这实在是太好了。

Sneath: - 这当然是 Silverlight 的独特之处。如果你是.NET 开发人员,你肯定知道 Silverlight,相同的编程模型,它只是整个.NET Framework 的一个子集。实际上,你可以利用在基于 ASP.NET 服务器上运行的相同源码,并在基于 Silverlight 的客户端应用程序中使用它,而无须任何修改。由于.NET 的普及性,你不仅仅可以分享代码还可以跨越多种不同的设备类型来分享技巧:从 Xbox-> 移动设备 ->Web 浏览器 ->Windows 客户端应用程序 -> 云数据中心服务器。

Pilgrim: - 对于 JavaFX 开发人员,我认为你需要用 Java 编程解决难题。实质上,如果你使用 EJB、JMS 或者使用客户端服务器协议,像无线发送 XML。我看不到 JavaFX 对服务器端的用处。给我一个用例好吗?

也许某人可以编写动态生成 JavaFX 代码的 Grails 应用程序,编译它然后回发引用动态生成 JAR 文件的 JNLP 文件。是的,你可以用技术实现,但是使用它的商业价值在哪里呢?换句话说,当我们遇到所谓的信贷紧缩的时候,它浪费时间和金钱。相反,使用这些语言来解决业务问题,才是真正的改革方式。基于这一点,我认为 JavaFX、Flex 和 Silverlight 都是可行的解决方案和平台。


给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

评论

发布