InfoQ

文章

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

作者 Jean-Jacques Dubray译者 孙涛 发布于 2008年3月17日 上午4时16分

社区
Architecture,
.NET,
Java
主题
RIA,
JavaScript,
Web 2.0
标签
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?

4 条回复

回复

支持GWT 发表人 yuan chris 发表于 2008年3月18日 上午5时9分
更好的flex3 发表人 Mavi Loong 发表于 2008年3月19日 上午2时52分
支持GWT 发表人 陈 韶君 发表于 2008年4月4日 上午6时2分
Re: 支持GWT 发表人 Bob Yang 发表于 2008年4月9日 上午12时29分
  1. 返回顶部

    支持GWT

    2008年3月18日 上午5时9分 发表人 yuan chris

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

  2. 返回顶部

    更好的flex3

    2008年3月19日 上午2时52分 发表人 Mavi Loong

    抛弃js 转投flex

  3. 返回顶部

    支持GWT

    2008年4月4日 上午6时2分 发表人 陈 韶君

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

  4. 返回顶部

    Re: 支持GWT

    2008年4月9日 上午12时29分 发表人 Bob Yang

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

独家内容

世界顶尖运动队教练的成功秘诀

本文列出了来自于顶级教练Marc Lammers的9条原则,他是在打造世界最佳曲棍球队的过程中发现这些原则的,文章把这些原则映射到了软件开发实践之中。

探索JVM上的LISP

本文由Per Jacobsson所作,目标读者为有意了解Lisp的Java开发人员。文章探讨了当前可以运行于JVM上的不同Lisp方言,以明快简洁的方式介绍了Lisp程序设计工作机理和其独特之处,并在最后演示了Lisp代码同Java系统的整合过程。

Ruby/Rails: 不一样的'Web'应用

本文以一个实际应用的例子为引子,探讨Ruby/Rails在非传统web系统中应用,以及研究如何定制以Rails为基础的领域特定的MVC框架。

认识云计算

本视频对云计算进行了简要的介绍,主要包括了五部分内容:首先带大家认识“云”,然后对计算机的发展过程进行了阐述,接着介绍了业界现状和企业级/世界级计算的新布局,最后对云计算做了一下展望。

AtomServer:数据分发的发布动力

在这篇文章中,Bryon Jacob和Chris Berry介绍了AtomServer,一个基于Apache Abdera的完整Atom存储实现。在去年,作者一直致力于为其雇主——Homeaway——实现一个Atom存储,现在已开源了其Atom存储框架:AtomServer。

从卓越工程角度看微软中国开发团队的成长

开发团队的成长离不开优秀的人才,简捷有效的流程和高效率工具这三个卓越工程系统中的重要因素。本文作者从这三个因素分析了微软中国开发团队是如何“从优秀到卓越”的。

利用Ruby简化你的Java测试

本文是Productive Java with Ruby系列文章的第一篇,我将从单元测试这个话题开始,让Java的开发人员能够在实际工作中利用Ruby提高工作效率。

与赵进聊SaaS

InfoQ中文站有幸与阿里软件的首席架构师赵进在一起探讨了SaaS的相关话题,包括SOA和ASP与SaaS的异同、云计算、SaaS的前景、它的关键技术、技术瓶颈等等。