专利名称::动态软件更新系统、方法及程序产品的制作方法
技术领域:
:本发明总体涉及计算机应用领域,具体而言涉及用于该类应用的动态软件更新系统。
背景技术:
:诸如因特网的计算机网络允许用户共享诸如文件和硬件的资源。因特网的扩展和万维网标准的采用使得用户对文件的查看和下载几乎毫不费力。用户不需要了解任何编程语言。仅通过运行Web浏览器,用户仅需要指向并点击来查看和下载所需文件。这些程序的可用性允许在分布式计算机网络上在被远距离分开、有相似想法的个人间进行轻松合作和文件共享,所述分布式计算机网络实际上可以跨全球。在传统客户/服务器基础设施中,分布式计算机网络被建有至少一个服务器节点和多个客户节点。特定而言,每个用户节点是可经过网络来访问服务器节点且在具有适当授权时向服务器节点公布(publish)文件的客户。一旦一个文件被公布给服务器节点,网络上的其它客户就可以访问服务器节点来查看或下载文件。而且,服务器节点可以允许客户自动将文件发送给另一个经网络可到达的客户。客户仅将文件与识别所需接受者的信息一起发送给服务器节点,服务器节点把文件发送到相应客户上。服务器节点也可用于允许客户共享诸如打印机的硬件资源。现在,计算机应用包括检查因特网位置来用于其源代码更新的“更新”特征是惯例。无论更新何时启动(周期性或响应于用户请求),计算机应用典型地检查该更新。所述更新操作下载经更新的程序组件,然后要求用户重新启动计算机应用来应用该更新。这种更新操作对于用户体验是中断性的,因此许多软件供应商相对不经常发布更新。而且,对于网站或关键系统操作员来说很难关闭和重新启动应用。同时,把更新动态地应用(不重新启动计算机应用)到在静态编译语言(诸如C或C++)上实现的计算机应用中,即便不是不可能,也是困难的。
发明内容根据本发明的第一方面,提供一种用于动态更新计算机应用的方法,该方法包括以下步骤用公布/预订服务器进行预订从而通知计算机应用可用的更新;从所述公布/预订服务器接收更新信息;以及在执行期间把可用更新动态应用到计算机应用而不重新启动计算机应用。提供一种用于动态更新计算机应用的系统、方法和计算机程序产品。提供一种用于发送更新到计算机应用的系统、方法和计算机程序产品。所述更新信息可以是更新本身或是更新可用的通知。在一实施例中,从公布/预订服务器接收更新通知,更新请求被发送到第二服务器,并且从第二服务器接收更新。当更新信息是更新本身时,更新优选地从公布/预订服务器接收。该更新可以包括计算机应用的经更新的源代码。根据另一方面,提供一种用于发送有关计算机应用的更新信息的方法,该方法包括以下步骤在公布/预订服务器处接收请求把可用于计算机应用的更新通知给订户的预订请求;在所述公布/预订服务器处接收有关计算机应用的更新信息;以及通过所述公布/预订服务器的公布把更新信息发送给所有订户用于有关计算机应用的更新信息。所述更新信息可以是实际更新或更新通知。根据一实施例,响应于接收到更新通知,对可用更新的请求被发送给第二服务器。然后从第二服务器接收更新。在一实施例中,可用更新从公布/预订服务器发送。在一实施例中,可用更新包括计算机应用的经更新源代码。根据另一方面,本发明提供了一种用于动态更新计算机应用的计算机程序产品,该计算机程序产品包括处理电路可读的存储媒体,所述存储媒体存储由处理电路执行用于执行下述方法的指令,该方法包括以下步骤用公布/预订服务器进行预订从而通知计算机应用可用的更新;从所述公布/预订服务器接收更新信息;以及在执行期间把可用更新动态应用到计算机应用而不重新启动计算机应用。根据另一方面,提供一种用于发送有关计算机应用的更新信息的计算机程序产品,该计算机程序产品包括处理电路可读的存储媒体,所述存储媒体存储由处理电路执行用于执行下述方法的指令,该方法包括以下步骤在公布/预订服务器处接收请求把可用于计算机应用的更新通知给订户的预订请求;在所述公布/预订服务器处接收有关计算机应用的更新信息;以及通过所述公布/预订服务器的公布把更新信息发送给所有订户用于有关计算机应用的更新信息。根据另一方面,提供一种用于动态更新计算机应用的系统,该系统包括发送器,用于把预订请求发送到公布/预订服务器从而通知计算机应用可用的更新;接收器,用于从所述公布/预订服务器接收更新信息;以及动态更新模块,用于在执行期间把可用更新动态应用到计算机应用而不重新启动计算机应用。根据另一方面,提供一种用于发送有关计算机应用的更新信息的公布/预订服务器,该公布/预订服务器包括接收器,用于接收请求把可用于计算机应用的更新通知给订户的预订请求,所述接收器还包括用于在所述公布/预订服务器处接收有关计算机应用的更新信息的装置;并且其中所述服务器还包括发送器,用于通过所述公布/预订服务器的公布把更新信息发送给所有订户用于有关计算机应用的更新信息。现将仅通过示例并参考以下附图来描述本发明的优选实施例,在附图中图1为例示传统计算机网络的整体系统体系结构的框图。图2为描述传统计算机应用更新系统的整体操作和控制流的流程图。图3A为例示本发明一优选实施例的整体系统体系结构的框图。图3B为描述根据本发明一优选实施例的更新系统的整体操作和控制流的流程图。图4为描述本发明一示例性实现的框图。图5为描述图4中示例性实现的计算机应用更新过程的操作和控制流的流程图。图6为可用于根据一优选实施例来实现本发明的计算机系统的框图。另外,标号最左侧的数字标识的是该标号第一次出现时所在的附图。具体实施例方式简介根据一优选实施例,本发明通过提供一种高效且易实现的用于动态更新计算机应用而不重新启动计算机应用的方法来解决现有技术的问题。用动态编程语言或递增编译语言(incrementallycompiledlanguage)编写的计算机应用使得计算机应用更新在运行时进行应用。换言之,计算机应用的源代码在运行时被改变。所公开的系统提供了对用户体验造成最小中断的实时计算机应用更新系统。动态编程语言的示例包括JavaScriptTM、动态超文本标记语言(DHTML)、可扩展超文本标记语言(XHTML)、Jscript、VisualBasicScript(VBScript)、PerlScript、LISP、PHP和ColdFusion。递增编译语言的示例包括经解释的Python和经解释的BASIC。(Java和所有基于Java的商标和标识皆为SunMicrosystems在美国、其它国家或上述二者之中的商标。)在本发明一优选实施例中,除了传统的更新触发(诸如计算机应用启动、周期性和用户驱动)之外,计算机应用还连接到公布/预订服务器(诸如IBMGryphon系统)并监听可用的计算机应用更新。该更新在运行时(即在执行期间)被应用于计算机应用,这对于计算机应用的用户来说是透明的。使用公布/预订服务器保证了运行中的计算机应用在改进被发布后尽快地进行更新,而这解决了一个普遍的安全问题。数字签名保证了计算机应用更新是由初始软件供应商或被授权的第三方所创造。(IBM为国际商业机器公司在美国、其它国家或上述二者之中的商标。)。这种计算机应用更新可以解决安全问题、校正程序设计者的错误或修改运行中的计算机应用的外观。软件更新所执行功能的示例包括用改进的实现来重新定义错误功能、修改用户界面外观、改变界面的背景颜色或给界面增加按钮。系统概述图1为例示传统计算机网络的系统体系结构的框图。图1示出了客户计算机112和114,客户应用102和104分别位于其上。图1还示出了向客户计算机112和114提供软件和/或更新的软件供应商服务器108。软件供应商服务器108包括任何可购买到的、允许客户计算机112和114在与软件供应商服务器108的客户/服务器关系中存在的服务器系统。例如客户计算机112和114和软件供应商服务器108可以是一个或多个个人计算机(PC)(例如运行MicrosoftWindows操作系统的IBM或可兼容的PC工作站,运行MacOS操作系统的Macintosh,或等同物)、个人数字助理(PDA)、手持式计算机、掌上计算机、智能电话、游戏控制台或任何其它信息处理设备。客户计算机112和114和软件供应商服务器108中任何一个的计算机系统也可以是服务器系统(例如运行SunOS操作系统或IBMRS/6000工作站的SUNUltra工作站和运行AIX操作系统的服务器)。客户计算机112和114和服务器108的示例性计算机系统将在下文中参考图6更详细描述。(RS/6000和AIX为国际商业机器公司在美国、其它国家或上述二者之中的商标。Microsoft和Windows为微软公司在美国、其它国家或上述二者之中的商标。)网络106是诸如公共服务电话网络(PSTN)的电路交换网络。可替换地,所述网络是包交换网络。所述包交换网络是诸如全球因特网的广域网(WAN)、专用WAN、局域网(LAN)、电信网络或上述网络的任意结合。在另一个备选方案中,所述网络是有线网络、无线网络、广播网络或点对点网络。软件供应商服务器108是提供包括计算机应用102和104的软件的实体。软件供应商服务器108可以由计算机应用102和104的实际开发者或第三方来操作。软件供应商服务器108还向计算机112和114提供计算机应用102和104的更新。从这个意义上讲,软件供应商服务器108作为用于为计算机应用102和104存储大量更新的储存库。图2为描述传统的计算机应用更新系统的整体操作和控制流的流程图。图2的整体操作和控制流从步骤202开始并直接进行到步骤204。在步骤204中,客户应用102检测出更新触发。更新触发是提示更新过程启动的事件。例如,更新过程可以通过启动对客户应用102的执行来启动。因此,客户应用102一启动,更新过程就启动。可替换地,或另外地,更新过程可以周期性地在预定时间或在预定时间段后启动或根据用户要求而启动。更普遍地,更新过程可以被客户应用102可检测到的任何事件所启动。在步骤208中,客户应用102向软件供应商服务器108发送更新请求。在步骤210中,软件供应商服务器108确定更新是否可用于客户应用102。如果该确定结果是肯定的,则控制流向步骤214。如果该确定结果是否定的,则控制流向步骤212。在步骤212中,“无可用更新”的响应被返回而客户应用102继续正常执行。在步骤214中,软件供应商服务器108向客户应用102发送更新。客户应用102接收更新且准备应用该更新。在步骤216中,客户应用102关闭以便应用接收到的更新。在步骤218中,更新被应用于客户应用102,且可选地客户应用102被重新启动。图3A为例示本发明一优选实施例的整体系统体系结构的框图。软件供应商服务器108、客户计算机112、客户应用102、客户计算机114、客户应用104以及网络106与图1中的相应单元相同。公布/预订服务器110是使用信息流图的公布/预订消息传送系统,诸如由本发明受让人所开发出的Gryphon系统(在http//www.research,ibm.com/gryphon中描述)。Gryphon系统提供了基于内容的预订服务且通过归并分布式公布/预订通信和数据库技术来执行消息代理调度(brokering)。在Gryphon系统的核心的是规定了事件的选择性传送、事件变换和新事件生成的信息流图。公布/预订消息传送系统的示例性实现是用于传送股票交易信息的系统。在该系统中,源自两个信息源(NYSE和NASDAQ)的股票交易被结合、变换、过滤并传送给预订客户。例如,一个用户可以预订并请求接收NYSE和NASDAQ上的价值超过一百万美元的所有股票交易。公布/预订消息传送系统从NYSE和NASDAQ二者接收例如价格和数量的原始股票交易信息。根据用户的预订,服务器归并来自两个源的股票交易信息,把原始价格和数量信息变换成每笔交易的价值信息,然后过滤所得出的价值来产生价值超过一百万美元的交易子集。以相似方式,每个预订用户规定其自己的标准,而所述公布/预订消息传送系统执行信息选择、变换、过滤以及传送,以便给每个用户提供所请求的信息。关于公布/预订消息传送系统的另外的信息在2002年7月26日提交的美国专利申请序列号10/207,685(标题为“INTERACTIVEONETOMANYCOMMUNICATIONINACOOPERATINGCOMMUNITYOFUSERS”)中可以找到,该发明已转让给国际商业机器公司,在此将其内容引入作为参考。在本发明实施例中,每个“服务器”(诸如软件供应商服务器108和公布/预订服务器110)都可以通过单一服务器或由任意多个服务器组成的服务器群来单独实现。这种服务器群中的个体服务器可以用多种方式彼此连接或连接于因特网,甚至可以被分开很远的距离以便提供适当水平的服务和有利特征,诸如数据和路径冗余。在图3A的实施例中,诸如客户应用102的客户应用通过公布/预订服务器110进行登记并预订,以便接收客户应用的更新通知和/或更新。如下所详述,更新通知和更新可以通过多种方式发送。尽管在图3A中软件供应商服务器108和公布/预订服务器110被示为单独实体,但两个实体的功能可以合并成一个实体。而且,尽管图3A示出了两个用户计算机112和114以及两个计算机应用102和104,但本发明可以支持任意多个客户计算机和计算机应用。图3B为描述根据本发明一优选实施例的更新系统的整体操作和控制流的流程图。图3B的操作和控制流从步骤302开始并直接进行到步骤304。在步骤304中,用动态编程语言或递增编译语言编写的客户应用(诸如客户应用102)通过公布/预订服务器110预订一个或多个信道,以便接收客户应用102的更新通知。在预订期间,客户应用102向公布/预订服务器110标识自身并指定用于向客户应用102发送更新通知的地址。在步骤305中,软件供应商服务器108把更新通知发送给公布/预订服务器110来通告新的更新可用。在步骤306中,公布/预订服务器110通过把更新通知发送给所有预订者来向包括客户应用102在内的相关信道公布更新通知。在步骤308中,响应于更新通知,客户应用102把更新请求发送给软件供应商服务器108。在步骤314中,软件供应商服务器108把更新发送给客户应用102。客户应用102接收更新并准备应用该更新。在步骤316中,更新被动态应用于客户应用102(即在执行期间不需要求重新启动客户应用102或对客户应用102的其它中断)。在可替换的实施例中,与步骤306中公布更新通知不同,公布/预订服务器110公布更新本身。这消除了客户应用从软件供应商服务器108请求和接收更新的需要,但大大增加了公布/预订服务器110上的负载。在本发明实施例中,更新请求的发送和更新的传输可以通过多种方式执行,所述多种方式包括通过一封或多封电子邮件、即时消息传送、文件传输协议(FTP)、超文本传输协议(HTTP)或任何其它通过网络传输信息的方法。在本发明优选实施例中,更新的传输通过客户应用102和软件供应商服务器108之间的连接(诸如虚拟专用网(VPN)连接、传输控制协议/网际协议(TCP/IP)连接或任何其它网络连接)来执行。在本发明的某些实施例中,当客户应用102首先启动时,它联系软件供应商服务器108并请求从其最近一次更新时起(例如根据版本号)的累积改变。任何所述更新都通过软件供应商服务器108被发送到客户应用102,从而在启动时使应用文件内容更新。在该初始更新同步之后,任何发布的新的更新通过公布/预订服务器110向客户应用102通告或发送。优选地,所有更新以安全方式提供给客户应用102。例如,在一实施例中,把更新发送到客户应用102的连接被加密,诸如通过VPN或HTTPS连接。另外地,或者可替换地,更新可以被密码保护(例如被加密或数字签名)从而确保客户应用所接收到的更新是真实的。相应地,本发明允许(根据一优选实施例)公布/预订系统被用来通告或发送更新且允许在没有重新启动用户应用的中断或以其它方式强制其它用户输入的情况下动态应用该更新。这使更新过程对用户透明且对用户友好。这也允许分段软件组件的维护和升级,而不用强制或以其它方式加重客户应用的用户的负担。网页实现图4为描述本发明一示例性实现的框图。具体而言,图4的框图描述了本发明的例示性网页实现。如图所示,客户计算机112在执行驻留的客户应用——网页402,所述网页402是例如使用Web浏览器装入的。图4还示出了公布/预订服务器110。图5为描述图4中示例性实现的计算机应用更新过程的操作和控制流的流程图。在步骤504中,用户装入包括客户应用的网页402。客户应用包括动态软件更新组件。在此示例性实施例中,网页402用动态编程语言JavaScript编写。在步骤506中,网页402的动态软件更新组件与软件供应商服务器连接,且请求最近的更新。如果更新存在,那么控制流向步骤510。否则,控制流向步骤512。在步骤510中,软件供应商服务器把更新发送给客户计算机112而更新被动态应用到网页402。在步骤512中,网页402通过公布/预订服务器110预订合适的信道,以便接收任何将来的更新。在步骤514中,产生新的更新,因此公布/预订服务器110通过把新的更新406发送给所有预订者来向包括网页402在内的相关信道公布所述新的更新406。一收到新的更新406,网页402就动态应用新的更新406。因此,不用要求对网页的重新启动、再装入或其它中断,经更新的网页即可被呈现给用户。例如,如果更新包括网页JavaScript代码的更新,用于改变在用户单击网页402上的按钮时执行的代码,那么经更新的代码在下次用户单击按钮时被执行。可替换地,如以上参考图3B的描述的实施例中所示,公布/预订服务器110可以不公布更新本身,而是公布更新通知。动态更新的另一个例子是改变网页HTML属性(诸如背景颜色的改变)的更新。在此情形中,Web服务器上的网页HTML文件被改变,因此无论何时网页被装入或再装入都将提供经更新的网页。另外,JavaScript代码更新经由公布/预订服务器被发送出去。因此,如果网页已经打开,则更新组件评估新的代码并且立刻改变网页背景颜色。优选地,客户被指示在装入网页时总是检查Web服务器中的较新的版本(例如在HTTP头部中),因此无论何时网页再装入都将接收到经更新版本的网页。为了例示的目的,现在将更详细解释动态更新和不用重新启动或再装入即可进行动态应用的过程的一个具体示例。考虑复杂形式的Web界面和/或客户打开很长时间段(例如一整天)的网页。传统上,直到网页在用户Web浏览器里进行再装入时,用户才会接收到该Web界面的更新或故障修复。类似地,某些桌面应用实际上使用Web浏览器控制来实现用户界面逻辑和绘制。这种应用典型地只有在应用启动时或者甚至更罕见地在执行手动更新时才会再装入DHTML内容。下述DHTML源代码是用于输入“要求表格(ClaimForm)”的示例性Web界面。要求表格包括输入姓名、电话号码和邮政编码的文本字段以及“处理表格(processform)”按钮。要注意“updater”对象被嵌入网页,而且助手功能“onEval”允许控制方便地在当前页的上下文中评估代码。<html><head><title>ClaimForm</title><style>body,input,table{font:10ptverdana;}</style><scriptlanguage="JavaScript">functionvalidateForm(form){if(form.phoneNumber.value.length==12){returntrue;}else{alert("Phonenumberinvalid.");form.phoneNumber.focus();form.phoneNumber.select();returnfalse;}}functiononLoad(){scriptUpdater.onEval=onEval;}functiononEval(text){eval(text);}</script></head><body><p><b>ClaimForm</b></p><formname="claimForm"action="http://ibm.com/claims/processClaim.jsp"method="POST"onsubmit="returnvalidateForm(this)"><table><tr><td>Name:</td><td><inputname="name"type="text"></td></tr><tr><td>PhoneNumber:</td><td><inputname="phoneNumber"type="text"></td></tr><tr><td>ZIPCode:</td><td><inputname="zipCode"type="text"></td></tr><tr><tdcolspan="2"align="right"><inputtype="submit"value="ProcessForm″></td></tr></table></form><objectid="scriptUpdater"classid="clsid:B63B82EE-4AC1-4770-859B-56793D3F5861"codebase="updater.cab"onreadystatechange="onLoad();"style="display:none;"><paramname="server"value="updates.ibm.com:1500"><paramname="user"value="anonymous"><paramname="password"value="none"></object></body></html>开发者后来意识到此源代码仅仅通过测试输入的电话号码串的总长度来验证电话号码,且期望更新源代码从而将正则表达式用来验证所输入的10位数字的电话号码是否带有虚线。出于此目的,开发者使用集成开发环境(IDE)来编辑原始HTML中的DHTML源代码从而移除if(form.phoneNumber.value.length==12)并用下面内容替换if(form.phoneNumber.value.match(/^\s*\d\d\d[-]*\d\d\d[-]*\d\d\d\d\s*$/))然后开发者把修改过的HTML文件复制到Web服务器,Web服务器为随后装入或再装入页的任何用户更新网页。开发者还会采取附加行动以更新已经在浏览器或应用中打开网页的用户。具体而言,IDE推荐更新“validateForm”的功能定义,因为它的某些代码已经被修改,且建议发送以下更新以便在已打开的网页上下文中进行评估validateForm=\function(form){\if(form.phoneNumber.value.match(/^\\s*\\d\\d\\d[-]*\\d\\d\\d[-]*\\d\\d\\d\\d\\s*$/)){\returntrue;\}else{\alert(\"Phonenumberinvalid.\");\form.phoneNumber.focus();\form.phoneNumber.select();\returnfalse;\}\}如上所示,开发环境把功能定义转换为等同的JavaScript语句,适于重新定义传输过程中的功能。更新系统现在必须将JavaScript安置于每个打开的网页中以调用内置“eval”功能,把上述语句作为单一参数来传递。在本例中,开发者接受自动生成的更新(或补丁(patch)),并如上所述通过公布/预订服务器将其公布给用户。更新通过任何当前连接的更新控制来接收,然后应用于那些打开的网页。这样的动态更新过程也可以应用于动态生成的网页,其中开发者编辑JSP(JavaServerPages)文件而不是HTML文件。而且,如果所述网页已经被再装入,则系统可以利用版本号(例如在HTML资源上)来防止任何冗余更新。尽管上述例子中的更新很简单而且自动发生,但在更复杂的情况下开发者可能需要来手工制作给更新数据结构添加代码的这样一个补丁,提供对HTML元素的JavaScript等同改变,和/或提醒用户该改变。示例性实现本发明可以在硬件、软件或硬件和软件的结合中实现。根据本发明优选实施例的系统可以在一个计算机系统里以集中方式实现,或以分布式方式实现,其中不同单元跨若干互连的计算机系统分布。任何种类的计算机系统或适于执行此处描述方法的任何装置都是适合的。硬件和软件的典型结合可以是具有计算机程序的通用计算机系统,所述计算机程序在被装入和执行时控制计算机系统,使其执行此处描述的方法。本发明实施例也可以嵌入包括使此处描述的方法得以实现的所有特征的计算机程序产品,且当其被装入计算机系统中时能够执行这些方法。本发明中所使用的计算机程序工具或计算机程序是指以任何语言、代码或符号形式出现的指令集的任何表达形式,所述指令集意在使得具有信息处理能力的系统直接执行或在下列两种情况中的任一种或两种之后执行特定功能a)转换到另一语言、代码或符号;和b)以不同有形形式再现。计算机系统可以特别地包括一个或多个计算机和至少在计算机可读媒体上的计算机程序产品,其允许计算机系统从计算机可读媒体读取数据、指令、消息或消息包以及其它计算机可读信息。计算机可读媒体可以包括诸如ROM、闪速存储器、盘驱动存储器、CD-ROM及其它永久存储装置的非易失性存储器。另外,例如,计算机可读媒体可以包括诸如RAM、缓冲器、高速缓冲存储器以及网络电路的易失性存储器。而且计算机可读媒体可以包括临时状态媒体中的计算机可读信息,所述临时状态媒体诸如允许计算机系统读取上述计算机可读信息的、包括有线网络或无线网络的网络链路和/或网络接口。图6为可用于实现本发明实施例的计算机系统的框图。图6的计算机系统包括诸如处理器604的一个或多个处理器。处理器604被连接到通信基础设施602(例如通信总线、跨接条(cross-overbar)或网络)。计算机系统可以包括转发图形、文本和来自通信基础设施602的(或来自未示出的帧缓冲器的)其它数据用以在显示单元610上显示的显示接口608。计算机系统还包括主存储器606,优选地包括随机存取存储器(RAM),还可以包括次级存储器612。次级存储器612可以包括例如硬盘驱动器614和/或代表软盘驱动器、磁带驱动器、光盘驱动器等的可移动存储驱动器616。可移动存储驱动器616以本领域普通技术人员公知的方式从可移动存储单元618中进行读取和/或写入到该单元。可移动存储单元618代表了例如可以由可移动存储驱动器616读和写的软盘、磁带、光盘等。将要理解,可移动存储单元618包括其中存储有计算机软件和/或数据的计算机可用存储媒体。在可替换的实施例中,次级存储器612可以包括用于允许计算机程序或其它指令被装入计算机系统中的其它类似装置。所述装置可以包括例如可移动存储单元622和接口620。其示例可以包括程序盒式存储装置(cartridge)和盒式存储装置接口(诸如视频游戏设备中所见的)、可移动存储器芯片(诸如EPROM或PROM)和相关联插槽、以及允许软件和数据从可移动存储单元622传输到计算机系统的其它可移动存储器单元622和接口620。计算机系统还可以包括通信接口624。通信接口624允许软件和数据在计算机系统和外部设备间进行传输。通信接口624的例子可以包括调制解调器、网络接口(诸如以太网卡)、通信端口、PCMCLA槽和卡等。通过通信接口624传输的软件和数据可以是信号的形式,例如可以是被通信接口624接收的电子、电磁、光或其它信号。这些信号通过通信路径(即信道)626被提供给通信接口624。该信道626承载信号,并可用电线或电缆、光纤、电话线、蜂窝式电话链路、RF链路和/或其它通信信道来实现。在本文档中,术语“计算机程序媒体”、“计算机可用媒体”和“计算机可读媒体”总体用来指下述媒体,诸如主存储器606、次级存储器612、可移动存储驱动器616、安装在硬盘驱动器614中的硬盘、以及信号。这些计算机程序产品是用于把软件提供给计算机系统的装置。计算机可读媒体允许计算机系统从计算机可读媒体读取数据、指令、消息或消息包以及其它计算机可读信息。例如,计算机可读媒体可以包括诸如软盘、ROM、闪速存储器、盘驱动存储器、CD-ROM和其它永久存储装置的非易失性存储器。它可用于例如在计算机系统间传输诸如数据和计算机指令的信息。而且计算机可读媒体可以包括临时状态媒体中的计算机可读信息,所述临时状态媒体诸如允许计算机系统读取上述计算机可读信息的、包括有线网络或无线网络的网络链路和/或网络接口。计算机程序(也被称作计算机控制逻辑)存储于主存储器606和/或次级存储器612中。计算机程序还可以通过通信接口624被接收。这种计算机程序在被执行时可以使计算机系统得以执行在此所讨论的本发明的特征。具体而言,所述计算机程序在被执行时可以使处理器604得以执行计算机系统的特征。相应地,所述计算机程序代表计算机系统的控制器。尽管已公开了本发明的具体实施例,但本领域普通技术人员将会理解,可以对具体实施例做出改变而不背离本发明精神和范围。因此本发明的范围没有被限定于具体实施例。此外,所附权利要求旨在覆盖本发明范围内的任何和所有的这些应用、修改和实施例。权利要求1.一种用于动态更新计算机应用的方法,该方法包括以下步骤用公布/预订服务器进行预订从而通知计算机应用可用的更新;从所述公布/预订服务器接收更新信息;以及在执行期间把可用更新动态应用到计算机应用而不重新启动计算机应用。2.根据权利要求1的方法,其中所述更新信息为更新通知,其中所述接收步骤包括从所述公布/预订服务器接收更新通知;响应于接收到更新通知,把更新请求发送到第二服务器;以及从所述第二服务器接收更新。3.根据权利要求1的方法,其中所述更新信息为可用更新,所述接收步骤包括从所述公布/预订服务器接收更新。4.根据权利要求1的方法,其中所述更新信息为可用更新,其中所述更新包括用于计算机应用的经更新源代码。5.一种用于发送有关计算机应用的更新信息的方法,该方法包括以下步骤在公布/预订服务器处接收请求把可用于计算机应用的更新通知给订户的预订请求;在所述公布/预订服务器处接收有关计算机应用的更新信息;以及通过所述公布/预订服务器的公布把更新信息发送给所有订户用于有关计算机应用的更新信息。6.根据权利要求5的方法,其中所述发送步骤包括发送更新通知,且所述方法还包括响应于接收到更新通知,把对可用更新的请求发送到第二服务器;以及从所述第二服务器接收更新。7.根据权利要求5的方法,其中所述发送步骤包括从所述公布/预订服务器发送可用更新。8.根据权利要求5的方法,其中可用更新包括用于计算机应用的经更新的源代码。9.一种用于动态更新计算机应用的计算机程序产品,该计算机程序产品包括处理电路可读的存储媒体,所述存储媒体存储由处理电路执行用于执行下述方法的指令,该方法包括以下步骤用公布/预订服务器进行预订从而通知计算机应用可用的更新;从所述公布/预订服务器接收更新信息;以及在执行期间把可用更新动态应用到计算机应用而不重新启动计算机应用。10.根据权利要求9的计算机程序产品,其中所述更新信息为更新通知,以及其中所述接收步骤包括从所述公布/预订服务器接收更新通知;响应于接收到到更新通知,把更新请求发送到第二服务器;以及从所述第二服务器接收更新。11.根据权利要求9的计算机程序产品,其中所述更新信息为可用更新,其中所述更新包括用于计算机应用的经更新的源代码。12.一种用于发送有关计算机应用的更新信息的计算机程序产品,该计算机程序产品包括处理电路可读的存储媒体,所述存储媒体存储由处理电路执行用于执行下述方法的指令,该方法包括以下步骤在公布/预订服务器处接收请求把可用于计算机应用的更新通知给订户的预订请求;在所述公布/预订服务器处接收有关计算机应用的更新信息;以及通过所述公布/预订服务器的公布把更新信息发送给所有订户用于有关计算机应用的更新信息。13.根据权利要求12的计算机程序产品,其中所述发送步骤包括发送更新通知,且所述方法还包括以下步骤响应于接收到更新通知,把对可用更新的请求发送到第二服务器;以及从所述第二服务器接收更新。14.根据权利要求12的计算机程序产品,其中可用更新包括用于计算机应用的经更新的源代码。15.一种用于动态更新计算机应用的系统,该系统包括发送器,用于把预订请求发送到公布/预订服务器从而通知计算机应用可用的更新;接收器,用于从所述公布/预订服务器接收更新信息;以及动态更新模块,用于在执行期间把可用更新动态应用到计算机应用而不重新启动计算机应用。16.根据权利要求15的系统,其中所述接收器包括用于从所述公布/预订服务器接收更新通知的装置,所述发送器包括用于响应于接收到更新通知而把对可用更新的请求发送到第二服务器的装置,且其中所述接收器包括用于从第二服务器接收更新的装置。17.一种用于发送有关计算机应用的更新信息的公布/预订服务器,所述公布/预订服务器包括接收器,用于接收请求把可用于计算机应用的更新通知给订户的预订请求;所述接收器还包括用于在所述公布/预订服务器处接收有关计算机应用的更新信息的装置;并且其中所述服务器还包括发送器,用于通过所述公布/预订服务器的公布把更新信息发送给所有订户用于有关计算机应用的更新信息。18.根据权利要求17的系统,其中所述发送器包括用于发送更新通知的装置,且其中所述更新从第二服务器接收。19.一种计算机程序,包括当所述程序在计算机上运行时,适于执行权利要求1到8中任一权利要求的方法的程序代码工具。全文摘要公开了一种用于动态更新计算机应用的系统、方法和计算机程序产品。根据所述方法,预订请求被发送到公布/预订服务器从而接收对计算机应用的更新。从公布/预订服务器接收更新通知或更新,并在执行期间把更新动态应用到计算机应用而不重新启动计算机应用。在一实施例中,从公布/预订服务器接收更新通知,把更新请求发送到第二服务器,并从第二服务器接收更新。还提供了一种用于把更新发送到计算机应用的系统、方法和计算机程序产品。文档编号G06F9/445GK1906575SQ200580001938公开日2007年1月31日申请日期2005年1月5日优先权日2004年1月6日发明者C·文森特申请人:国际商业机器公司