InfoQ

新闻

Google Gears:第二天的业界反应

作者 Scott Delap译者 胡键 发布于 2007年6月8日 上午2时30分

社区
Ruby,
.NET,
Java
主题
Web框架
标签
Google,
AJAX,
Apollo,
GWT,
Google Gears

作为5月31日的Google开发者日活动的一部分,Google宣布了新的离线Web应用程序API:Google Gears。在FAQ中,Gears定义如下:

Google Gears是开源的浏览器扩展,它可让开发者创建能离线运行的Web应用程序。Gears提供以下3个关键特性:
  • 本地服务器”,缓存资源(HTML、JavaScript、图片等等),使应用程序无需连接服务器即可访问这些资源
  • 数据库”,在浏览器内部保存和访问数据。
  • 工作者线程池”,通过在后台执行费时的操作使应用程序响应更加迅速。

Gears在新的BSD许可证下授权,使得Gears运行时API可以以最小的约束嵌入到第三方的软件中。目前的安装形式是浏览器扩展(大约700k大小),支持Windows下的IE和Firefox,Linux和OS X下的Firefox。对于Opera和Safari的支持正在开发中。

让我们进一步的了解所提供的3个组件:

    本地服务器(LocalServer)

    本地服务器是一个专用URL缓存,它拦截请求并在需要时由本地对其进行响应。有2种类型的URL“资源库”。其中,最基本的是资源库(ResourceStore),它允许应用程序保存那些与URL关联的特定用户文件,如PDF或图片。这些被缓存的URL必须由应用程序显式更新。第二种资源库被称为受管资源库(Managed ResourceStore)。它包含一组由清单(manifest)定义的URL。当清单的版本号发生变化时,该集合必须被自动更新。Gears会周期性的检查受管资源库是否被更新了。

    数据库

    除了URL缓存,Gears还包含一个SQLite数据库实例。数据库中的数据按照域名(Domain)分区,除了最初保存这些信息的域名外,从其它的域名无法访问这些数据。使用Javascript访问数据库的语法与JDBC非常类似:

    resultSet = db.execute (
    'INSERT INTO MYTABLE VALUES (?, ?, ?) WHERE id=?',
    [1, 2, 'three four', 5]);
    while (rs.isValidRow()) {
    console.log(rs.fieldName(0) + " == " + rs.field(0));
    rs.next();
    }
    rs.close();

    工作者池(WorkerPool)

    Google Gears提供的最后一个元素是工作者池API。文档解释了包含它的原因:

    在浏览器中,一个时间密集型操作,如I/O或重量级计算,会使用户界面无响应。工作者池模块在后台运行操作,因此不会阻塞用户界面。脚本在工作者池中运行,不会触发浏览器的“无响应脚本”对话框。

    工作者池的行为象一组进程,而非单独的线程。除了Javascript函数,工作者无权访问DOM。当工作者接受到响应时,onmessage回调被用于执行活动。

就Google自身Web应用程序中的最初使用来说,Gears已经被集成进Google Reader

GWT团队也已经装配了Google API Library for Google Web Toolkit。Gears API集成利用了GWT的JavaScript本地接口(JavaScript Native Interface,JSNI)

ZDNet的David Berlind对Google的Linus Upson进行了采访,访谈中显示,Google期望Gears能成为离线Web应用程序开发的标准:

Google的Upson对于公司开源这一技术的动机并不加掩饰。按照他的说法,公司打算使它成为目前市场中的一个标准,而不是满足标准机构的需要。由于几乎没有Web应用程序提供商具备这种离线能力,加上Google为此准备了一笔战争基金,这一技术很有可能会成为离线运行的Web应用程序的事实业界标准。

作为这些努力中的第一步,Adobe宣布支持Google Gears。Berlind的文章提供了更多细节,它们来自Adobe的Michele Turner:

Google抓住我们,并说他们将发布一种使基于浏览器的应用程序具备离线能力的技术,同时他们认为该技术与我们的Apollo [运行时]有某些牵连。因此,我们和他们一起坐下来进行了交流,如果你大致看看Google Gears的3个主要组件就会发现,我们正在开发相同的技术以促进Apollo运行时离线组件的开发。…因此,现在我们正与Google共同努力解决一些问题,例如为了具备离线能力,必须对SQLite数据库进行同步和异步调用。

作为集成的示范,Adobe的Christophe Coenraets构建了一个与Gears集成的Flex应用程序,它由Kevin Lynch在Google开发者日演示。在构建demo时,Coenraets还开发了SQLAdmin来帮助他操纵Gears数据库。

Google Gears的声明同样也引起了关于Dojo离线工具集未来的推测。Ajaxian就此采访了项目的首席开发者Brad Neuberg。他指出,在发表声明时Dojo正处于正常运转中,并且他已经使用Google Gears作为基础平台,并完成了Dojo离线功能的移植。要了解更多的细节可以去听他的访谈

RedMonk也详细报道了Gears。Stephen O'Grady就Gears对一些已存在的可选方案的影响进行了推测:

从一个应用程序提供商的观点来看,我倾向于Berlind意见,他说:
对于已经提供离线架构的公司,如Zimbra有它的Zimbra桌面(它的离线能力借助了Java),他们的问题核心在于:如果Google Gears获得了市场吸引力,那些公司可能被迫完全重新考虑那个架构。如果你是Zimbra,并且你的资源是有限的,那么起码问一个关于是否继续投资一个多余的离线架构是否合理这一问题就很有意义了。它可能值得,这是从技术的原因来说,但它可能不值得。
如果你是Joyent,问题就更复杂些。他们瞄准的是远比Google Gears 特殊的小环境,用于Rails应用程序,因此问题将归结为Slingshot是否能为Rails的开发者提供足够多的专有特性,让他们决定使用它。将他们论点的折衷时发现:到目前为止,Slingshot还没有象Gears一样在很多平台上可用。然而,他们看起来满足于扮演David。

有趣的是,Adobe似乎铁了心要和Google合伙,甘心将他们SQLite的成果与Google的成果合作。这对Google的最终目标来说是个好兆头。

随着离线Web应用程序增长的势头,以Gears和Apollo等的形式,Web应用程序开发者不得不开始考虑"离线"对于他们的个体应用究竟意味着什么。Basement.org评论这个任务是“忘却学习(unlearning)”:

桌面范式:文件保存在我可以“获得的”文件夹中,工作然后保存,它非常强大…但是同样存在成本,它在于并不真的知道这个资产存放在哪儿。如何将它传给别人?如何删除?如何移动?当然,那些熟悉2.0主义的我们,将这些问题注销是没有理解这种“新的做事方式”的表现。人们理解文件的表示还没有那么快。对于每个人而言,文件 - 不论是电子表格还是文档、图片都有我爱说的“认知完整性。”... 看看设计者们将如何解决目前的挑战,即帮助用户掌握和利用当前发生的变迁,是非常有趣的一件事。在我们踏上征途之前,我们应该确信那儿的确存在价值,而且其价值大于不可避免将发生的忘却学习过程。

查看英文原文:Google Gears: Industry Reactions The Day After

2 条回复

回复

Gears 发表人 Gao Ang 发表于 2007年6月9日 下午9时59分
Re: Gears 发表人 Leon Kennedy 发表于 2007年6月10日 下午8时26分
  1. 返回顶部

    Gears

    2007年6月9日 下午9时59分 发表人 Gao Ang

    Gears应该是Google提供的一个很重要的API,值得学习一下

  2. 返回顶部

    Re: Gears

    2007年6月10日 下午8时26分 发表人 Leon Kennedy

    ■■国产"袋鼠蛋"web服务器正式发布,免费且开源 kangaroo-egg(袋鼠蛋)是国内第一个开源的动态web服务器,是完全采用java技术开发的功能强大拥有完全自主知识产权且开源的web服务器。其拥有自己的开发语言DQM及容器(类似于Servlet/JSP),可以很容易开发出满足各种业务要求的web应用。 同时具有: 动态网页扩展名自定义; 集成HTTP压缩功能; 自动生成和管理静态页面; 有条件的文件输出(下载); 隐藏动态网页代码; ---------------------- http://www.kangaroo-egg.com

独家内容

程立谈架构、敏捷和SOA实践

支付宝首席架构师程立在本文分享了支付宝技术架构的发展,对架构的认识,成功架构的特点,如何避免架构设计的失败,以及在敏捷和SOA方面的实践等。

Emmanuel Bernard谈Bean验证规范

InfoQ有幸采访到了Emmanuel Bernard,向其了解Bean验证框架及专家组正在寻求的社区参与的更多相关信息。

通过索引器简化C#类型信息访问

作为一个有别于Java、Ruby等语言的一个特性,C#可以用索引器(Indexer)将类型本身以对象数组的形式供外部使用。同时,把索引器和LINQ结合使用倒是一个非常不错的组合,索引器做接口、LINQ完成内部检索逻辑,客户程序在无需记住具体方法名称的前提下,按照键值检索即可,索引器内部则依托LINQ to系列的基础,提供对各种异构数据源的访问。

产品负责人成功之道

Scrum中,产品负责人这个角色具有很大的影响力,能够带来很高的价值。但要想运用得当,可没那么轻而易举。如果做得好,就可以在客户和开发者之间建立更为融洽的关系,并能够增加组织的竞争优势。

硝烟中的Scrum和XP

在本书中,作者Henrik Kniberg讲述了他在一年的时间里,带领40人的团队实施Scrum的过程。他们试过了多种团队尺寸(3~12人)、sprint长度(2~6星期),定义“完成”的不同方式,不同的backlog格式,各种测试策略,在多个Scrum团队之间进行同步的多种方式。他们还尝试过XP实践——持续集成、结对编程、测试驱动开发等等,还试过了把XP跟Scrum组合。

软件开发中的准时化生产

准时化生产(Just In Time)是精益生产(Lean Production)和丰田生产系统(Toyota Production System)中的概念,敏捷开发与准时化生产中的很多观点和实践是一致的,精益思想作为精益生产背后的指导思想也正在积极地影响着软件开发领域,向其中不断注入创新与活力。

Tapestry for Nonbelievers

I. Drobiazko和R. Zubairov合作撰写了一篇文章,详细介绍Apache Tapestry 版本5——一个面向组件web框架。文章向读者展示了创建组件方法,并谈到了Tapestry中的IoC以及Ajax的相关特性。

ESB拓扑方案

在本文中,Adrien Louis讨论了两种基于ESB的SOA拓扑方案的优缺点:单个公司级ESB vs. 彼此互联的“部门级”ESB系统。Adrien讨论了每种方案对管理、业务监测、治理、可靠性和编配等问题的影响。