速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

  • 2008-03-17
  • 本文字数:2695 字

    阅读完需:约 9 分钟

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

2008-03-17 04:161322
用户头像

发布了 23 篇内容, 共 46908 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

Runaway Queries 管理:提升 TiDB 稳定性的智能引擎

PingCAP

MySQL 数据库 TiDB

猜字谜|构建生成式 AI 应用实践(一)

亚马逊云科技 (Amazon Web Services)

代码检查入门

轶天下事

知识图谱与大模型结合方法概述

轶天下事

华为云CodeArts Snap荣获信通院优秀大模型案例及两项荣誉证书

平平无奇爱好科技

TiDB 社区智慧合集丨TiDB 相关 SQL 脚本大全

PingCAP

MySQL 数据库 TiDB

ERC404 + meme 文化叙事,Dancing Beans 会达到怎样的高度?

股市老人

记录 re:Invent 大会,使用 PartyRock 编写我们第一个 AI 应用以及心得

亚马逊云科技 (Amazon Web Services)

人工智能 API re:Invent 生成式人工智能

已解决org.springframework.web.HttpSessionRequiredException异常的正确解决方法,亲测有效!!!

小明Java问道之路

【CodeArts开发者实践】CodeArts开发者八件套——开发者的进阶宝典!

轶天下事

华为云自主创新再迎成果:软件工具链为数字政府夯实研发新基建

轶天下事

风靡万千软件开发者:揭秘华为研发代码大模型是如何实现的?

平平无奇爱好科技

Git 版本控制系统的完整指南

小万哥

git 程序人生 编程语言 软件工程 后端开发

NOW 闹个元宵?与亚信安慧AntDB一起猜灯谜,抽奖品

亚信AntDB数据库

数据库 AntDB AntDB数据库

数据价值在线化丨TiDB 在企查查数据中台的应用及 v7.1 版本升级体验

PingCAP

MySQL 数据库 开源 分布式 TiDB

安擎科技携手华为云区块链共同打造安全天空

轶天下事

可逆计算理论中的可逆到底指的是什么?

canonical

低代码 软件架构 开发框架 可逆计算 Nop平台

蓝戟英特尔锐炫A770驱动对比测评,游戏性能迎来全面提升!

E科讯

想要了解华为IPD,先要了解需求如何管理!华为云CodeArts Req:支撑需求全生命周期管理,助力产研团队高效协作

轶天下事

访谈:Didier Girard,GWT和Volta是Web上的GCC吗?_Java_Jean-Jacques Dubray_InfoQ精选文章