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

zt from http://www.infoq.com/cn/articles/ria-panel;jsessionid=A3199202E25FDC952650984AB2DA5AAF

作者 Scott Delap译者 王波,审校: 朱永光 发布于 2009年4月16日 下午6时52分

社区 .NET, Java 主题 RIA, Silverlight, 富客户端/桌面 标签 AJAX, Flex, Adobe集成运行时/AIR, Curl

最近,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都是可行的解决方案和平台。

你可能感兴趣的:(虚拟座谈:RIA和Ajax技术的现状与展望)