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

微软上个月发布了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?

你可能感兴趣的:(访谈:Didier Girard,GWT和Volta是Web上的GCC吗?)