InfoQ

InfoQ

文章

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

访谈:Didier Girard,GWT和Volta是Web上的GCC吗?

作者 Jean-Jacques Dubray 译者 孙涛 发布于 2008年3月17日

领域
架构 & 设计,
企业架构,
语言 & 开发
主题
.NET ,
Java ,
架构 ,
RIA ,
Web 2.0 ,
JavaScript
标签
GWT

微软上个月发布Volta预览版。很多人都对这项新技术和架构营造(Architecture Factoring)的概念发表了评论。一些人将它与GWT(Google Web Toolkit)进行了对比。James McKay对这些新的抽象持怀疑态度,因为JavaScript的开发环境已经在逐步得到改善。Ray正在开发Chronoscope项目,他对GWT和Volta的启动时间进行了比较。Didier Girard是巴黎一家名为SFEIR的咨询公司的CTO, 他一直在OnGWT.com上写有关GWT的博客。InfoQ也就此问题与他进行了一番讨论。  

InfoQ: GWT快两岁了,您从一开始就在跟踪使用这项技术,它现在发展情况如何,能不能简单介绍一下?

Didier: GWT是一项可以用来开发富因特网应用程序(Rich Internet Applications ,RIA)的技术。RIA技术目前可以分为两大类。第一类是用于开发传统意义下的信息系统的技术,GWT就属此类;而第二类技术将重点放在多媒体领域(如Flash, SilverLight等)。

基于GWT的应用不再以页面导航的方式工作,它们被称作单页面程序,更准确的说就是只通过单个URL就能完整访问的应用程序。此类框架的优点是免部署和浏览器兼容,目的之一是达到桌面应用般的用户体验。

目前SFEIR正在开发五个基于GWT的应用程序,而且已经有几款推向市场的产品。最近我们用GWT成功开发了一款外联网(extranet)应用,这个应用受到了包括客户全公司上下的欢迎,这些也正是缘于用户良好的体验。RIA特别是GWT就用户体验和开发体验来说确实可以称得上是一场革命!

我们的通常的做法是在Windows平台进行开发,针对Internet Explorer和Firefox上进行了大量的QA,同时也在Opera和Safari上进行验证。

InfoQ: 这项技术对Web应用的架构意味着什么?特别是你能否对MVC模式在其上的适用性做一些评论?

Didier:GWT非常容易上手,一个Java程序员几乎不用学习什么新东西就可以开发基于其上的Web应用了。在这一点上GWT有点类似于VB。会用Java开发用户界面的程序员很快就能学会使用GWT。

在MVC体系中,GWT属于视图(View)部分,对模型(Models)和控制器(Controllers)部分,GWT并没有什么硬性规定。对一个比较基础的应用来说,有视图部分就足够了。如果是一个复杂的应用,还是推荐利用传统的MVC方式解决问题。在实际中我们采用的是MVC模式的一个变种,即层级MVC模式(Hierarchical MVC pattern,HMVC)。在这个变种中,每个图形组件自身就是一个MVC元组(tuple)我们通过事件来进行状态变化广播并建立起每个图形组件的“行为(behavior)”。我们还专门建立了一个框架来简化此种模式的实现 (GDF),大家能在Google Code上找到它。此框架不太像传统框架那样着眼在防止开发者犯错,它更像是对最佳实践的指导和演示。

InfoQ: Volta发布后就经常被拿来与GWT对比,您对这个问题是怎么看的呢?

Didier: 目前,Volta只是一个试验性的概念,它的目的是使大家了解未来微软产品中的一些方向。但Volta的愿景显然已经远远超过了GWT。GWT仅仅是一个将Java编译成Javascript的编译器。而对Volta来说,首先,它本身是独立于编程语言的,一个程序员可以根据自己的喜好选择编程语言,然后将写好的代码编译为Javascript。先开发出一个应用程序后然后再决定在哪里执行它,其实这才是Volta真正想做的事情。这确实应该算作一个雄心勃勃的计划。

Volta的第一项本领(多语言)当然是有用的,而第二项(先开发再决定运行环境)在我看来还只是理论上的。目前还没有足够的数据来对其实际的可行性进行判断。

举个例子来说明我的观点吧。在Javascript中是不存在long类型的,因此通常用float来替代,这是以牺牲精度为代价的。正是由于这类原因,架构营造(Architecture factoring)变得比较困难。有选择的余地看起来确实是好事,但是为了使选择切实可行,你还是必须提前做足功课。事实的本质是语言是无法把自身直接映射成另外一种语言的。语言到语言的编译过程实质上是一种映射:在此过程中会有语义的损失。

InfoQ: 诸如GWT和Volta之类的技术以后会向什么方向发展呢?

Didier: 就目前看情况看趋势是开发语言与执行语言的分离。理解这一点很重要。Javascript程序员对这句话可能会有抵触情绪,但是要知道Javascript确实是非常强大的语言,甚至强大到难以掌握,想想它可是要兼容四个不同的浏览器啊!我喜欢把浏览器比作处理器,GWT或者Volta所作的就是产生针对这些处理器优化过的代码,开发人员通常不用再回头优化这些代码了。这就是这些编译器能有助于高效地建立复杂Web应用的原因。我们应该将GWT或者Volta看作Web上的GCC,并且忘掉Javascript是一种编程语言而将其看作通用的Web运行时。

Google现在正将浏览器建成为一个“平台”。目前的浏览器是远不完善的,这也是Google开发Gears的原因。Gears包括一个本地数据库,工作者池(WorkerPool)和一个本地服务器。这还只是第一步,第二步将定义浏览器和服务间的交互。Google目前正在开发用于处理同步问题的API,例如用于缓存和服务间事务性交互的API。间歇性连接是生活中无法更改的事实,比网络延迟和带宽限制还要难解决。例如,iPhone手机就不是总处于连接状态。Google正致力于解决这个问题。许多其他的Gears API也不久就会发布:多文件上载API(multiple files uploading API),加密API(Crypto API),日志API(Log API),消息API(Messaging API),方位API(Location API),桌面快捷方式API (Desktop Shortcut API),图像处理API(Image Manipulation API)(更多信息请查看Dion Almaer的博客)。Gears的美好愿景是它赢得PCWorld“年度最具创新产品奖”的原因。

在RIA架构中,我们几乎无一例外地要用到远程服务,而服务经常可能与应用本身的URL没有什么联系。在编程模型中,服务代理是在本地的,它自然成为架构中管理连接特性的角色。让浏览器更多地充当平台的角色,

已经成为了RIA框架下一步的目标所在。

以上所述并不适用于目标放在富媒体的第二类架构,其重点更多地放在观众、性能和特别是流的性能上。我们也确实看到了一个富媒体接入市场正在形成。例如,goodOS刚刚发布了一个面向Web的Linux系统。传统网络接入点仍将产生内容并且接入点会变得更健壮,但是应该看到一种新型的内容和应用的接入点已经产生了。

InfoQ: 你对一个开发人员和架构师有什么好的建议吗?

Didier: 如果你是一个Java程序员,一定要试一下GWT,你应该会接受它的。如果你试一个.NET程序员,希望你能时刻关注Volta的进展,因为它的确可以算作微软Web战略的一个里程碑。

查看英文原文:Interview: Didier Girard, are GWT and Volta GCC for the Web?
支持GWT 发表人 chris yuan 发表于
更好的flex3 发表人 Loong Mavi 发表于
支持GWT 发表人 韶君 陈 发表于
Re: 支持GWT 发表人 Yang Bob 发表于
  1. 返回顶部

    支持GWT

    发表人 chris yuan

    很早就知道GWT, 一直没有去尝试。我是Java程序员。有时间,一定研究一下GWT

  2. 返回顶部

    更好的flex3

    发表人 Loong Mavi

    抛弃js
    转投flex

  3. 返回顶部

    支持GWT

    发表人 韶君 陈

    我们现在就在利用GWT开发,一定要支持,很不错

  4. 返回顶部

    Re: 支持GWT

    发表人 Yang Bob

    已经在用了,也获取了不少经验,有利有弊.找到最适合的场合才是最重要的.总体感觉不错.前所未有的概念.

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffrey Richter:Windows 8是微软的重中之重

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。