NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论

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

相约山城重庆!HarmonyOS Connect伙伴峰会将于7月16日举办

科技汇

2020年的焦虑与忧伤

Emotion

疫情 考研 研究生

技术干货 | 录屏采集实现教程 —— Android端

ZEGO即构

大前端 音视频 录屏采集 Android端

魔方、齿轮、融合剂:当新ICT技术邂逅教育产业

脑极体

React 18探秘(上)

Teobler

大前端 React

我是如何从设计师转到软件行业的? | 可怜巴巴的程序猿

Python研究所

随笔 话题讨论

接任务时一定要锁定需求啊!(转自小明同学)

BinTools图尔兹

数据库 dba 国产数据库 运维开发

每天学习10个实用Javascript代码片段(三)

devpoint

JavaScript JSON格式化 7月日更

【Redis】数据结构

awen

redis 数据结构

正式发布!中国首个LF Edge捐赠项目Baetyl 2.2发布

百度开发者中心

物联网 开源技术

5分钟学会本地Pypi源搭建

Python研究所

Python

CDH 的安装(四)

大数据技术指南

CDH 7月日更

模块七 - 王者荣耀商城异地多活架构设计

华仔架构训练营

香帅:2021年财富格局新变化

石云升

读书笔记 7月日更

5分钟速读之Rust权威指南(三十八)模板语法

wzx

rust

底层技术支撑智慧出行,汽车智能化发展下区块链大放异彩

CECBC

多地“真金白银”力撑区块链,中西部欲弯道超车新赛道

CECBC

公司内部使用的数仓命名规范

白程序员的自习室

大数据 数仓 数仓规范 7月日更

百度搜索稳定性问题分析的故事(上)

百度开发者中心

百度搜索

Flink进入大厂面试准备,收藏这一篇就够了

五分钟学大数据

flink 7月日更

北鲲云助力生命科学,高性能计算突破屏障

北鲲云

网络攻防学习笔记 Day68

穿过生命散发芬芳

网络攻防 7月日更

3分钟评估 你的运维监控系统是“救命稻草”还是“鸡肋”

鹿小U

运维自动化 监控系统 运维平台

妇与术(三):机器人可以没有性别,但关系技术离不开女性

脑极体

构筑智能制造时代“四重护城河”,联想中国开创产业新格局

科技大数据

为啥Java应用迁移到容器后会出现OOM?

Java架构师迁哥

什么是数据集市

奔向架构师

数据仓库 数据架构 7月日更

聊聊事务与分布式系统-从零讲到通透

刘绍

sql 分布式 事务 2PC XA

Clickhouse Projection 特性探索

GrowingIO技术专栏

数据库 大数据 数据分析 OLAP Clickhouse

区块链时代下,企业如何打造数据要素的“新竞争力”?

CECBC

十二张图,一脚踹开消息队列的大门

三分恶

消息队列

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