按:系列文章,将谈及Google Gadget的体系结构和开发入门,后期还会有和类似技术Mozilla Prism的对比。

开始之前先澄清一件事,这里所说的Gadget实际上是指Google Desktop Gadget,而不是指在iGoogle或者FaceBook上运行的Gadget,那个叫做Universal Gadget

细说起来,其实GadgetUniversal Gadget不仅名称不同,在实现上也完全是两回事。从使用者的角度看,Univeral Gadget就是一个HTML的页面,只不过在显示的时候是实时从iGoogle之类的容器网站上下载过来并展现在一个iframe里面的。而Desktop Gadget则是一个不折不扣的桌面应用程序(虽然运行在Google Desktop这个容器中)。

从开发人员的角度看,Universal Gadget是一个JavaScript文件和XML文件的集合,由容器网站(例如iGoogleFacebook等等)来渲染成HTML页面并呈现给最终用户。在一个Universal Gadget中使用的技术都是标准的Web技术,其能量也限制在浏览器的框架中。

而在开发一个Desktop Gadget时,虽然也使用XML文件来指定程序的UI,使用JavaScript来实现程序的逻辑,但与Web或者浏览器都没有天然的联系,说是完全的另一套程序开发体系也不为过(使用的XML语法与Universal Gadget不同,能够使用的JavaScript的对象及功能也不同)。

但另一方面的情况导致两者时常被人混为一谈,那就是,一个Universal Gadget是可以被加载到Desktop Gadget的面板中并正常运行的(严格的说只有一部分),而一部分Desktop Gadget也可以加载到iGoogle网站中运行(因而使它看上去像一个Universal Gadget,当然需要系统已安装了Google Desktop才可以)。

书归正传,下面就来说Gadget到底是什么,以及它的体系结构和背后思想。

(注:以下如果没有特别指明,提起Gadget全都是指Desktop Gadget,而iGoogle上的Gadget会指明为Universal Gadget