写点什么

访谈: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:161302
用户头像

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

关注

评论

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

TikTok直播畅通无阻,海外直播专线打造稳定流畅的网络环境

Ogcloud

TikTok 海外直播专线 海外直播 tiktok直播 tiktok直播专线

用Python编写自己的微型Redis

快乐非自愿限量之名

Python redis

华为校园鸿蒙公开课走进南京大学

Geek_2d6073

HStream Webinar: 兼容 Kafka 协议的下一代流数据平台

EMQ映云科技

kafka mqtt

走进AI新时代:织信低代码的实践与启示

优秀

AI 低代码 AI智能

一文告诉你服务器为什么要托管?

Finovy Cloud

云服务器 IDC 服务器托管

Prompt进阶3:LangGPT(构建高性能质量Prompt策略和技巧2)--稳定高质量文案生成器

汀丶人工智能

prompt 工程

游戏发行新方式——游戏海外发行代理

Ogcloud

游戏 云游戏 游戏发行 游戏发行公司

阿里通义灵码全面公测,来看看它的水平怎么样?

阿里巴巴云原生

阿里云 云原生 通义灵码

SQL中如何添加数据:基础指南

霍格沃兹测试开发学社

ADB 下载、安装及使用教程:让你更好地管理 Android 设备

霍格沃兹测试开发学社

读取速率十倍于 Elasticsearch,TDengine 在知轮科技智慧轮胎系统中的应用

TDengine

提升跨境直播体验,选择适用的直播专线

Ogcloud

海外直播专线 海外直播 跨境直播 跨境直播专线

1688API接口推荐:1688工厂档案信息数据接口

tbapi

1688 1688API接口 1688工厂档案信息

利用Nginx正向代理实现局域网电脑访问外网

EquatorCoco

php nginx 服务器 局域网

Prompt进阶2:LangGPT(构建高性能Prompt策略和技巧)--最佳实践指南

汀丶人工智能

prompt 工程 Prompt Engineering

干货盘点!市场调查与分析必备的10个模板!

彭宏豪95

职场 在线白板 行业调研 效率软件 调研报告

“打工人”的自我修养-如何在30秒内把“问题”讲清楚

K

原创 职场 认知 逻辑

与鲸同行,智领未来!和鲸科技高校市场渠道合作伙伴正式开启招募

ModelWhale

人工智能 数据科学 渠道

活动预告:如何培养高质量应用型医学人才?

ModelWhale

数据分析 人才培养 R语言 临床医学 新医科

开源LLM大模型聊天

百度开发者中心

人工智能 大模型 问答助手

一文搞懂Vue的MVVM模式与双向绑定

EquatorCoco

Java vue.js Vue

图数据库基准测试 LDBC SNB 系列讲解:Schema 和数据生成的机制

不在线第一只蜗牛

数据库 LDBC

深入了解 Linux 常用性能统计命令

霍格沃兹测试开发学社

RocketMQ为什么这么快?我从源码中扒出了10大原因!

不在线第一只蜗牛

源码 RocketMQ

程序员来看,你选哪一门编程语言提升自己?

高端章鱼哥

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