CN1154040C - 封装程序供远程执行的方法和装置 - Google Patents

封装程序供远程执行的方法和装置 Download PDF

Info

Publication number
CN1154040C
CN1154040C CNB991073819A CN99107381A CN1154040C CN 1154040 C CN1154040 C CN 1154040C CN B991073819 A CNB991073819 A CN B991073819A CN 99107381 A CN99107381 A CN 99107381A CN 1154040 C CN1154040 C CN 1154040C
Authority
CN
China
Prior art keywords
composition
client computer
program
class
routine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
CNB991073819A
Other languages
English (en)
Other versions
CN1233009A (zh
Inventor
Ƥ�ء�W�������
皮特·W·马德尼
里查德·塔克
尼迪姆·福勒斯克
�Ҷ����
哈尼·格叶斯卡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle America Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of CN1233009A publication Critical patent/CN1233009A/zh
Application granted granted Critical
Publication of CN1154040C publication Critical patent/CN1154040C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

在服务器执行的任务接收到为一个客户机上的远程执行封装程序代码的请求,并确定已经存在于客户机上的软件成份。该任务采用该信息形成一组对另一个生成该程序包的任务的指令。将所生成的程序包传送给客户机,程序执行开始。

Description

封装程序供远程执行的方法和装置
本申请与下面的美国专利申请相关,并将其作为参考:美国专利申请No.09/044,904,题目为“链接程序供远程执行的方法和装置”,其代理人文档号为.06502.0074-00000,并且本申请的申请日相同。
技术领域
本发明的实施例一般地涉及分布式计算机系统,特别涉及封装程序供远程执行的方法和装置。
背景技术
在当今社会中,因特网已经成为信息交换的重要媒介。虽然因特网现在在一般公众中非常普及,其最初是开始于一个由政府和学术研究者使用的互连计算机的系统(或网络)。这种网络的一个早期问题源于相互连接的计算机是不相同这样一个事实;这些计算机采用不同的硬件和不同的操作系统。在这样一个多机种网络上的信息交换产生了通信的问题。这个问题是通过在共同标准上的协议来解决的,包括诸如传输控制协议/互连网络协议(TCP/IP)和超文本传输协议(HTTP)等的协议。这些协议使各种互连机器能以静态文本或图形文件的形式共享信息。
然而,这些协议在因特网的发展中只代表了两个步骤。虽然用户可以在与因特网相连的各种计算机之间交换信息文件,但他们不能交换以常规语言、例如C或C++写成的可执行应用程序,这些可执行应用程序是为特定的处理器(例如,Intel奔腾处理器)和/或特定的操作系统(例如,Windows 95或DOS)而设计的。这个问题因JavaTM程序设计语言及其相关的运行时间系统的出现而得到了解决。
Java程序设计语言是一个面向对象的程序设计语言,在例如由Addison-Wesley的Mary Campione和Kathy Walrath在1996年所著的题为“JavaTM导读”的教科书中进行了描述1。重要地是,Java程序设计语言是一个与平台无关的解释语言—也就是说,其实用性并不限于一个特定的计算机系统。使用Java程序设计语言,软件开发者以通常被称为Java源代码的形式写程序。当开发者完成程序的编写时,他则以一个Java编译器将其编译成被称为字节代码的中间形式。Java源代码和字节代码都是与平台无关的。
然后,可以将编译过的字节代码在任何采用了一个包括虚拟机(VM)的可兼容运行时间系统的计算机系统上执行,例如包括Java虚拟机(JVM)和Java类库的Java运行环境(JRE)。JVM在由Addison Wesley的Tim Lindholm和Frank Yellin在1996年所著的题为“Java虚拟机规程”的教科书中进行了描述。Java VM起到作为字节代码和所使用的特定计算机系统之间的解释器的作用。通过使用与平台无关的字节代码和Java VM,可以在任何计算机系统上执行以Java程序设计语言写出的程序。这在将不同的计算机系统进行互连的网络、例如因特网中是特别有用的。
在能够执行一个Java程序之前,必须将某些必不可少的类(class)装载进执行该程序的计算机的存储器中。这些类可以从计算机的磁盘装载,但更常用的是通过网络从一个服务器传输。习惯上,将这些类在程序执行期间尽可能晚地装载;换句话说,它们是根据需要在程序执行期间首次被引用时才装载的。当这种装载出现时,一旦需要一个类的任何一部分,通常装载整个类。
根据一种常规方法,当机器上的用户发出执行驻留在一个远程服务器上的程序的请求时,将包含main方法的类文件通过网络从该服务器装载到该客户机。这个类文件包含程序字节代码。虚拟机然后通过调用程序的main方法开始执行。
执行一直持续进行到程序引用一个成份,例如,被称为“F”的成份。响应于该引用,将包含成份F的整个类从服务器上的类文件通过网络传输给客户机。所引用的成份F被使用,执行然后继续进行,直到引用另一个成份,例如被称为“G”的成份。响应于该引用,将包含成份G的整个类从服务器上的类文件通过网络传输给客户机。执行则继续进行到结束。一旦执行已经完成,在客户机和服务器之间通过网络的一系列连接最终可以被终止。
以上说明表明常规方法有两个显著的缺陷。首先,在程序执行期间,它需要在客户机和服务器之间的重复连接。这样一种连接所必须的长周期对于诸如移动计算的情况是成问题的。其次,一旦引用一个成份,例如成份F,该方法需要从服务器加载包含所引用成份的整个类。然而,如果在类内只有很少的成份最终被使用,则从服务器向客户机传输未用成份所需的带宽就被浪费了。这在涉及客户机和服务器之间的有限带宽、即慢的连接速度或高等待时间的连接的情况中是成问题的。
因此,需要一种通过只将一整个程序的所需成份封装在一起并在执行开始之前将其传送给客户机来减轻这些问题的系统。已经采用了用于远程执行的预封装软件,该软件使用其他需要机器兼容性的编译计算机语言,例如Cobol、C和Fortran。然而,还没有采用使用一种面向对象的语言、例如Java程序设计语言的软件,其中Java程序设计语言提供了很多另外的好处,例如从其父类提取所需的成份。
发明内容
依据本发明,一种用于在分布式系统中封装程序的方法,包括如下步骤:在一个客户机上接收封装远程执行的程序的请求;识别在客户机可得到的程序中引用的任何类;以及对于每个所识别的类:(i)接收对于与所识别的类相关的成分的引用,(ii)向链接编辑器提供到该成分的引用;以及(iii)将该成分添加到一个程序包,该程序包包括与执行程序所需要的识别类相关的任何成分。
依据本发明,用于在分布式系统中封装程序的设备,包括:用于在一个客户机上接收封装远程执行的程序的请求的装置;用于识别在客户机可得到的程序中引用的任何类的装置;以及对于每个所识别的类,用于接收对于与所识别的类相关的成份的引用的装置;对于每个所识别的类,用于向一个链接编辑器提供一个对于所述成份的引用的装置;以及用于将所述成份添加到一个程序包的装置,该程序包包括与执行程序所需要的识别类相关的任何成份。
依据本发明,一种系统,包括:一个客户机,具有处理器、存储器和包括虚拟机任务的运行环境;一个服务器,具有处理器、存储器、用于识别客户机上已经存在的任何类的接口任务、类的成份,以及链接编辑器任务,用于根据所识别的类,只封装在客户机上执行程序所需要的那些成份;以及将客户机和服务器进行互连的网络。
依据本发明,用于在分布式系统中执行程序的方法,包括:在一个客户机上接收封装远程执行的程序的请求;向程序包添加该客户机执行该程序所需要的类的成份的子集;以及使客户机为执行该程序可以得到该程序包,其中该程序包包括由客户机执行程序所需要的类的成份的子集。
依据本发明,用于在分布式系统中执行程序的方法,包括:在一个客户机上接收封装远程执行的程序的请求;识别在客户机可得到的程序中所引用的任何类;对于每个所识别的类:(i)识别执行该程序所需要的任何成份;(ii)向程序包添加成份,以及使在客户机可得到该程序包,其中该程序包包括由客户机执行程序所需要的每个识别的类的成份。
依据本发明,一种系统,包括:一个客户机,用于产生封装一个远程执行的程序的请求;以及一个服务器,用于响应该请求,向程序包添加该客户机执行该程序所需要的类的成份的子集,并使客户机为执行该程序可以得到该程序包以便于执行该程序,其中该程序包包括由客户机执行程序所需要的类的成份的子集。
依据本发明,一种系统,包括:一个客户机,用于产生封装一个远程执行的程序的请求;以及一个服务器,用于识别在客户机可得到的程序中所引用的任何类,对于每个所识别的类,确定执行该程序所需要的任何成份,将所确定的成份添加到程序包,并使在客户机可得到该程序包,其中该程序包包括由客户机执行程序所需要的每个识别的类的成份。
依据本发明,用于在分布式系统中封装程序的方法,包括:在一个客户机上接收封装远程执行的程序的请求;识别在客户机可得到的程序中所引用的任何类;向链接编辑器提供到由客户机执行程序所需要的识别类的成份的子集的引用;以及向程序包添加该成份的子集,使得该客户机执行该程序所需要的识别的类的成份的子集包括在程序包中。
依据本发明,在包括由网络互连的服务器和客户机的分布式系统中,用于由客户机执行程序的方法,包括:生成一个封装要执行的程序的请求;接收包括由该程序引用的一个或多个类的一个或多个成份的程序包,其中该程序包包括由客户机执行该程序所需要的成份;以及使用该程序包执行该程序。
在本说明书中所包含的并构成说明书的一部分的附图显示了本发明的一个实施例,并与说明书一起用于解释本发明的优点和原理。在附图中,
附图说明
图1是一个典型的客户机服务器结构的方框图,用于说明使用包括一个虚拟机的运行环境的远程程序执行;
图2是显示一个典型的可执行面向对象程序及其引用的成份和它们的依赖性的方框图;
图3是说明与本发明一致的链接和执行的定时的时线;
图4是显示典型的与服务器和客户机有关的接口和链接编辑器任务的方框图;
图5是由与本发明一致的封装处理中的接口任务执行的步骤的流程图;
图6是在本发明的一个实施例中由封装输出文件中的链接编辑器执行的步骤的流程图;以及
图7是在本发明的一个实施例中为了增加必要的方法而执行的步骤的流程图;以及
图8是在本发明的一个实施例中为了执行程序而由客户机执行的步骤的流程图。
具体实施例
下面将参考附图详细说明本发明的实施形式。其中,在整个附图和下面的说明中,相同的标号代表相同或相似的部分。
A. 概述
依据本发明的系统和方法工作在一个分布式计算机系统中,该系统典型地具有多个客户机和 一个 或多个服务器。例如,试图执行一个程序的客户机向服务器请求将运行程序所需的软件封装在一起。在形成该请求时,客户机可以指定应该包括在该程序包内的特定成份。
在服务器执行的任务(“接口任务”)接收到这个请求,并确定已经驻留在客户机内的软件成份。接口任务应用该信息形成一组给被称为链接编辑器的另一任务的指令。这些指令可以包括:更执行的程序名,因为已经驻留在客户机内而不必被封装的成份,以及客户机可能已经指定要包括在该程序包内的任何软件成份的名称。
链接编辑器接收此信息,并产生一个包含驻留在服务器内并且程序执行所必须的所有软件成份的输出文件。这个输出文件是通过迭代地分析引用其他软件成份的程序并从这些成份的父类提取出这些成份而产生的。链接编辑器将完成的输出文件发送给接口任务,接口任务将其传送给需要的客户机,程序开始执行。
R. 术语
为了说明的缘故,下面的详细说明是基于Java程序设计语言的。由于这个原因,下面是在下文所用到的术语的简要定义部分。然而,本领域的普通技术人员应该认识到,下面说明的原理同样适用于其他程序设计语言。
Java应用程序包括一个或多个类定义,每个类定义已经被编译成它自己的.class文件,包含字节代码和其他信息。一个“类”本身又是一个数据(“字段”)、在数据上操作的“方法”、以及辅助信息的集合。例如,辅助信息可以包括共享的数据结构、超类(superclass)的名字、以及实现的接口。在这里所用的术语“成份”指的是方法或字段或二者皆包括。“对象”是采用由一个类提供的蓝图所生成的东西,即它是类的一个“实例”。Java应用程序必须包含一个定义main方法的类,该main方法代表Java解释器开始执行程序的一点。这样一种应用程序可以由Java解释器、即Java VM来执行。
与一个单独的应用程序相比,Java小应用程序(applet)不包含main方法,因此不能直接由Java解释器执行。相反,Java小应用程序是由一个已经执行的Java应用程序、例如网浏览器所加载的类。Java应用程序在合适的时间调用小应用程序的各种方法。
在这里所用的术语“程序”,在单独使用时,可以代表应用程序、Java小应用程序、过程或其他软件代码。术语“任务”可以代表一个在计算机处理器上执行的程序。术语“程序包”可以包括成份、辅助信息或程序执行所需的其他数据。
为了简化的缘故,在这里所包含的例子假设一个应用程序正在执行。然而,本领域普通技术人员应该认识到,本发明的权利要求可以包括一个小应用程序或其他软件代码的执行。
C. 结构
图1显示了Java程序设计语言在一个分布式计算系统中的使用。该系统包括通过网络150互连的一个或多个服务器、例如服务器160和一个或多个客户机、例如客户机100和155。软件开发者应用Java程序设计语言生成一个程序,并将其编译成字节代码115,存储在服务器160上。服务器160一般还包括很多由Java程序使用的类文件125。当客户100希望执行一个Java程序时,它向服务器160发出一个请求。作为响应,服务器160向客户机100发送程序115的字节代码版本。在客户机100,字节代码115在一个运行环境110上执行,运行环境110在字节代码115与驻留在客户机100上的处理器之间进行解释。
图2是显示在一个典型的可执行程序内的成份引用的例示性方框图。在这个例子中,程序200引用四个成份,分别显示为成份A210、成份B220、成份C 230和成份D 240。这些引用成份自己又引用其他成份。例如,成份B220引用成份B1250。同样,成份C230引用成份A210和成份C1270。成份C1270自己又引用成份C1A280。这样一种由一个成份对另一个成份的引用通常被称作为依赖性(dependency)。因为在程序执行期间会被用到,每个被引用的成份必须被加载。
D. 时线
图3是用于说明依据本发明的链接和执行的定时的时线。当用户发出一个在客户机100上执行程序的请求时(点310),程序开始。作为响应,服务器160确定程序执行需要哪些成份和依赖性(点320)。然后,将这些所需成份的每一个与辅助类信息一起通过网络150从服务器160传送给客户机100(点330)。此时,已经将程序执行所需的所有成份和类都从服务器150传送到客户机100,因此,在两者之间的连接可以中断。
然后程序执行开始(点340),并引用成份A210(点350)。然而,因为该成份已经(在点330)被加载在客户机100上,不需要将该成份从服务器160向客户机100单独传送。同样,在引用成份B220时(点360),因为它已经被从服务器160传送到客户机100,所以不需要再传送它。因此,执行不中断地进行到结束(点370)。
图3证明了依据本发明的处理仅仅需要客户机100与服务器160保持连接到程序加载结束(从点300至点330)。一旦所需的成份和辅助类信息已经被加载(在点330),客户机100可以断开与服务器160的连接。则对于整个程序执行期间(点340至点370),客户机100与服务器160无须相连。此外,服务器160只向客户机100传送对于程序执行所必须的那些成份和辅助类信息(点330)。通过去除了对无用成份的传输,则更有效地利用了带宽。E 接口任务和链接编辑器的结构
图4是显示与服务器和客户机相关的接口任务和链接编辑器的方框图。客户机100通过网络150与服务器160互连。服务器160包含一个可以包含Java类文件的存储器482。存储器482的例子包括随机存取存储器(RAM)、只读存储器(ROM)、硬盘驱动器或基于光盘的ROM(CD-ROM)。有两个任务在服务器160上执行:接口任务484和链接编辑器487。向服务器160发出一个封装所需Java代码的请求,以便在客户机100上执行程序。在服务器160,这个请求由接口任务484接收。接口任务484然后形成一组封装指令,并将其发送给链接编辑器487。链接编辑器487生成一个包含驻留在服务器160内的执行所需的任何成份的程序包,并将该程序包发送给接口任务484。接口任务484接收到该程序包,将其发送给客户机100,客户机100应用该程序包来执行程序。
F.接口任务
图5是由依据本发明的封装过程中的接口任务所执行的步骤的流程图。在过程开始时,接口任务484(在服务器160上执行)接收为一指定客户机、例如客户机100上的执行封装Java程序的请求(步骤510)。Java程序一般被指定为是Java类和成份的集合。一些类文件的位置是预先定义的。其他所必需的类的位置被包括在封装Java程序的请求中。
响应于这个请求,接口任务484为链接编辑器形成一组指令。作为这些指令的一部分,接口任务通知链接编辑器487关于程序的开始点(步骤515)。这给了链接编辑器487一个用于确定需要哪些成份的开始点。
接口任务484还通知链接编辑器487任何已经存在于客户机100上的类(步骤520)。通过提供这个信息,接口任务避免了不必要的封装:链接编辑器487不需要封装已经存在于客户机100上的成份。这通过使输出文件的大小最小而节省了使用的带宽。该信息可以作为封装成份请求的一部分提供给接口任务(步骤510)。或者,该信息可以被预先提供,存储在服务器160的存储器482内。为了使这一步骤能正常工作,已经存在于客户机100上的类与在服务器160上的那些必须是一致的。
接口任务484还通知链接编辑器487关于任何应该增加到程序包中的附加成份(步骤530)。这对于有些情况是必须的,例如,如果由于包含一个成份的类已经存在于客户机100上、则该成份被排除在链接步骤之外的话;然而,这个被排除的成份可能会引用在客户机100上没有的其他成份,因此可能会需要由链接编辑器487增加到程序包内。除了由于其类已经存在于客户机100上而被排除在外的成份之外,还可能有一些依赖性不能被有计划地发现。接口任务484一般(在步骤510)被通知将任何附加成份作为封装成份请求的一部分。
例如,方法quicksort可以被排除在链接步骤之外,因为包含该方法的类sun.misc.Sort已经被加载在客户机100上了。当方法quicksort被调用时,它的一个参数是具有方法doCompare的对象。Quicksort将调用doCompare,而doCompare可能还未被加载在客户机100上。因此,接口任务484必须通知链接编辑器487方法doCompare必须作为一个附加成份被加载。
接口任务484还通知链接编辑器487用于查找所需Java类文件的位置列表(步骤540)。接口任务484将这些指令发送给链接编辑器487(步骤550),链接编辑器487产生一个输出文件,这将在下面参考图5进行说明。接口任务484接收该输出文件,并将其发送给客户机100(步骤560),该过程结束。
G. 链接编辑器
图6是依据本发明的由链接编辑器487在封装输出文件中执行的步骤的详细流程图。出于例示的目的,下面对流程的说明是基于图2的例子的。
在过程开始时,链接编辑器487(一般在服务器160上执行)从接口任务484接收一组指令。链接编辑器487然后生成并以要执行的程序的开始点初始化一个列表(步骤605)。该列表被称为“成份列表”,包含对每个必须由链接编辑器487加载的所需成份的引用。
链接编辑器487然后选择在成份列表中的下一项,最初将为main方法(步骤610)。链接编辑器487查看所选成份是否在更以链接步骤中排除的项目列表上(步骤615)。成份可以在要排除的项目列表上,例如,因为该成份更容易从其他来源、例如客户机100或其他服务器获得。因为main方法不会在要排除的项目列表上,所以链接编辑器487查看以确定所选择成份是否以前已经加载进链接过程(步骤620)。因为main方法不会已经在以前加载过,则链接编辑器487采用由服务器在其给链接编辑器487的指令中提供的文件位置列表对包含要加载的成份的类文件进行定位(步骤625)。链接编辑器487读取类文件、提取与该类文件相联系的任何辅助信息、从该类文件提取出所选择成份、并将提取出的辅助信息和成份增加到一个输出文件(步骤630)。应该注意,通过这样做,链接编辑器487只提取出所需成份和辅助信息,而不是加载整个类。
在加载了提取出的成份之后,链接编辑器487检查被替代的方法(步骤632)。该步骤将在下面参考图7进一步说明。接着,链接编辑器487分析提取出的成份,以确定其是否引用了其他成份(步骤635)。换句话说,链接编辑器487分析提取出的成份的依赖性。在这个例子中,main方法引用了四个成份;A、B、C和D。因为提取出的成份(main)包含依赖性(步骤640),所以将这些依赖性增加到成份列表中(步骤645),然后(在步骤610)重复该过程。
然后对于成份A、B、C和D进行与上述的关于main方法相同的过程。假设成份D被包含在一个接口任务484指示链接编辑器487从封装过程中排除的类中(例如,因为该类已经存在于客户机100上),则成份D将被排除在输出文件之外(步骤615)。另一方面,成份A、B和C将被从它们的各个类中(与与这些类相联系的辅助信息一起)提取出来,并增加到输出文件中(步骤625-630)。当这些成份被提取和分析时,链接编辑器487将发现,成份B引用了成份B1,成份C引用了成份A和C1(步骤635)。因此成份B1、A和C1将被增加到成份列表中(步骤645),该过程再一次进行重复(步骤610)。
在这下一次循环中,将不提取成份A,因为它已经被增加到输出文件中了(步骤620)。但成份B1和C1将被从它们各自的类中提取出来,与与它们的类相联系的辅助信息一起,增加到输出文件中(步骤625-630)。链接编辑器487将发现,成份C1引用了成份C1A(步骤635),于是将其增加到成份列表(步骤645)。过程再重复一次,在此期间,成份C1A被从其相应的类中(与该类的辅助信息一起)提取出来,增加到输出文件中(步骤625-630)。
通过应用这个迭代过程,链接编辑器487生成一个包含驻留在服务器160中的执行程序所必需的所有成份(及辅助类信息)的输出文件。链接编辑器487将这个输出文件发送到接口任务484(步骤655),该过程结束。
图7是依据本发明为了检查被替代的方法、由链接编辑器487执行的步骤的流程图。替代是一种用于将一个方法的超类的实施以子类的实施来代替的技术。为了检查被替代的方法,链接编辑器487首先确定提取出的成份是一个方法还是数据(步骤705)。因为替代问题仅仅与是方法的成份有关,如果提取出的成份是数据的话,则不必进行任何操作。另一方面,如果提取出的成份是方法,链接编辑器487确定该方法是否是一个构造程序(即,它是否生成一个对象)(步骤710)。
如果提取出的方法不是一个构造程序,链接编辑器487接着确定该方法是否是一个静态方法(步骤715)。如果它是静态的,则不必进行任何操作,因为静态方法不能被替代。如果该方法不是静态的,则链接编辑器487查看该提取出的方法是否已被替代。特别地,链接编辑器487搜索(提取出的方法的类的)已经具有一个被加载的构造程序的所有子类。如果这些子类中的任何一个具有替代了所提取方法的方法,则必须将这个替代的方法加到成份列表中(步骤720)。
如果提取出的方法是一个构造程序,链接编辑器487搜索所提取方法的类,以确定其是否包含替代了以前加载的方法的任何方法。特别地,链接编辑器487为非静态方法(静态方法不能被替代)搜索包含所提取成份的类(步骤725)。如果这些非静态方法中的任何一个替代了以前从所提取成份的类的超类加载的一个方法(步骤730),则替代的非静态方法必须被增加到成份列表中(步骤735)。上述方法不仅用于被替代的方法,还用于作为Java接口说明的一部分的方法。
H. 客户机过程
图8是依据本发明由执行一个程序的客户执行的步骤的流程图。首先,客户机100发出一个开始执行指定程序的请求(步骤810)。响应于该请求,客户机100从服务器160接收一个包含程序执行所需的所有成份的封文件(即,上面提到的输出文件)。客户机100将所提供的成份增加到那些已经存在于客户机100上的成份中(步骤830)。特别地,客户机100从封装文件中读取信息,建立内部数据结构,并将这些数据结构链接成它自己的类名列表。客户机100然后开始执行程序(步骤840),根据需要分辨(resolve)类名。该过程然后结束。
I. 结论
上述系统只将程序执行所必须的成份封装在一起,并在执行开始之前将它们传送给该客户机。上面对本发明的一个实施形式的说明只是为了例示和说明的目的。例如,所述的实施例包括软件,但本发明也可以被实现为硬件与软件的结合或单独以硬件实现。在上述说明的提示下,可以作出各种修改和变化,或者可以从本发明的实践中得出。
虽然依据本发明的系统和方法是在例示性的分布式系统和Java程序设计环境下操作的,本领域普通技术人员应该理解,本发明可以在其他系统和程序设计环境中实现。另外,虽然本发明的各个方面被描述为存储在存储器中,本领域普通技术人员应该理解,这些方面也可以存储在其他类型的计算机可读介质中,例如二级存储设备,象硬盘、软盘或CD-ROM;来自因特网的载体;或其他形式的RAM或ROM。本发明的范围由附带的权利要求及其等效物限定。

Claims (21)

1.一种用于在分布式系统中封装程序的方法,包括如下步骤:
在一个客户机上接收封装远程执行的程序的请求;
识别在客户机可得到的程序中引用的任何类;以及对于每个所识别的类:
(i)接收对于与所识别的类相关的成分的引用,
(ii)向链接编辑器提供到该成分的引用;以及
(iii)将该成分添加到一个程序包,该程序包包括与执行程序所需要的识别类相关的任何成分。
2.如权利要求1所述的方法,其特征在于,识别步骤还包括根据存储在一个存储器中的信息确定任何可得到的类的步骤。
3.如权利要求1所述的方法,其特征在于,识别步骤还包括根据包含在封装程序请求内的信息确定任何可得到的类的步骤。
4.如权利要求1所述的方法,其特征在于,提供步骤还包括下列步骤:
接收对程序成份的文件位置的引用;以及
向链接编辑器提供程序成份和文件位置的标识。
5.如权利要求1所述的方法,其特征在于,提供步骤还包括下列步骤:
确定程序的开始点;以及
向链接编辑器提供开始点的标识。
6.如权利要求1所述的方法,其特征在于,所述成份是由至少一个尚未包括在程序包中的另一个成份引用的附加成份,并且其中步骤(i)包括:
接收对附加成份的引用以添加到程序包,并且
其中步骤(ii)包括:
向链接编辑器提供附加成份的标识。
7.如权利要求6所述的方法,还包括向链接编辑器提供附加成份的文件位置的标识的步骤。
8.如权利要求1所述的方法,还包括下列步骤:
从链接编辑器接收一个程序包;以及
向客户机发送所述程序包。
9.如权利要求8所述的方法,还包括将一个程序包成份增加到已经存在于客户机上的成份中的步骤。
10.用于在分布式系统中封装程序的设备,包括:
用于在一个客户机上接收封装远程执行的程序的请求的装置;
用于识别在客户机可得到的程序中引用的任何类的装置;以及
对于每个所识别的类,用于接收对于与所识别的类相关的成份的引用的装置;
对于每个所识别的类,用于向一个链接编辑器提供一个对于所述成份的引用的装置;以及
用于将所述成份添加到一个程序包的装置,该程序包包括与执行程序所需要的识别类相关的任何成份。
11.一种系统,包括:
 一个客户机,具有(a)处理器、(b)存储器和(c)包括虚拟机任务的运行环境;
一个服务器,具有(a)处理器、(b)存储器、(c)用于识别客户机上已经存在的任何类的接口任务、(d)类的成份,以及(e)链接编辑器任务,用于根据所识别的类,只封装在客户机上执行程序所需要的那些成份;以及
将客户机和服务器进行互连的网络。
12.用于在分布式系统中执行程序的方法,包括:
在一个客户机上接收封装远程执行的程序的请求;
向程序包添加该客户机执行该程序所需要的类的成份的子集;以及
使客户机为执行该程序可以得到该程序包,其中该程序包包括由客户机执行程序所需要的类的成份的子集。
13.用于在分布式系统中执行程序的方法,包括:
在一个客户机上接收封装远程执行的程序的请求;
识别在客户机可得到的程序中所引用的任何类;对于每个所识别的类:
(i)识别执行该程序所需要的任何成份;
(ii)向程序包添加成份,
以及
使在客户机可得到该程序包,其中该程序包包括由客户机执行程序所需要的每个识别的类的成份。
14.一种系统,包括:
一个客户机,用于产生封装一个远程执行的程序的请求;以及
一个服务器,用于响应该请求,向程序包添加该客户机执行该程序所需要的类的成份的子集,并使客户机为执行该程序可以得到该程序包以便于执行该程序,其中该程序包包括由客户机执行程序所需要的类的成份的子集。
15.一种系统,包括:
一个客户机,用于产生封装一个远程执行的程序的请求;以及
一个服务器,用于识别在客户机可得到的程序中所引用的任何类,对于每个所识别的类,确定执行该程序所需要的任何成份,将所确定的成份添加到程序包,并使在客户机可得到该程序包,其中该程序包包括由客户机执行程序所需要的每个识别的类的成份。
16.用于在分布式系统中封装程序的方法,包括:
在一个客户机上接收封装远程执行的程序的请求;
识别在客户有机可得到的程序中所引用的任何类;
向链接编辑器提供到由客户机执行程序所需要的识别类的成份的子集的引用;以及
向程序包添加该成份的子集,使得该客户机执行该程序所需要的识别的类的成份的子集包括在程序包中。
17.在包括由网络互连的服务器和客户机的分布式系统中,用于由客户机执行程序的方法,包括:
生成一个封装要执行的程序的请求;
接收包括由该程序引用的一个或多个类的一个或多个成份的程序包,其中该程序包包括由客户机执行该程序所需要的成份;以及
使用该程序包执行该程序。
18.如权利要求17所述的方法,其特征在于,该程序包包括由以前存储在客户机上的其他成份引用的附加成份。
19.如权利要求18所述的方法,其特征在于,在生成请求时,所述附加成份不位于客户机。
20.如权利要求17所述的方法,其特征在于,没有包括的成份在生成请求之前已经位于客户机上。
21.如权利要求17所述的方法,其特征在于,没有包括的成份是程序未引用的成份。
CNB991073819A 1998-03-20 1999-03-19 封装程序供远程执行的方法和装置 Expired - Lifetime CN1154040C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US044900 1993-04-07
US044,900 1998-03-20
US09/044,900 US6493870B1 (en) 1998-03-20 1998-03-20 Methods and apparatus for packaging a program for remote execution

Publications (2)

Publication Number Publication Date
CN1233009A CN1233009A (zh) 1999-10-27
CN1154040C true CN1154040C (zh) 2004-06-16

Family

ID=21934939

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB991073819A Expired - Lifetime CN1154040C (zh) 1998-03-20 1999-03-19 封装程序供远程执行的方法和装置

Country Status (4)

Country Link
US (1) US6493870B1 (zh)
EP (1) EP0950949A3 (zh)
JP (1) JP2000155686A (zh)
CN (1) CN1154040C (zh)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1040414B1 (de) * 1997-12-17 2002-07-10 Fujitsu Siemens Computers GmbH Verfahren zum umsetzen eines systemaufrufs
US7512664B1 (en) * 1999-01-28 2009-03-31 Texas Instruments Incorporated System and method for loading resolved java class files to a client device
US6296366B1 (en) * 1999-03-01 2001-10-02 Gregory Lee Hopps Lighted decorative article having meridian-configured loops and method for visually signaling location of gift packages
US6775536B1 (en) * 1999-11-03 2004-08-10 Motorola, Inc Method for validating an application for use in a mobile communication device
US6546554B1 (en) 2000-01-21 2003-04-08 Sun Microsystems, Inc. Browser-independent and automatic apparatus and method for receiving, installing and launching applications from a browser on a client computer
US7155490B1 (en) * 2000-03-01 2006-12-26 Freewebs Corporation System and method for providing a web-based operating system
FR2810423A1 (fr) * 2000-06-16 2001-12-21 Suntech Systeme informatique modulaire et procede associe
US7219304B1 (en) * 2000-06-19 2007-05-15 International Business Machines Corporation System and method for developing and administering web applications and services from a workflow, enterprise, and mail-enabled web application server and platform
US6742026B1 (en) * 2000-06-19 2004-05-25 International Business Machines Corporation System and method for providing a distributable runtime
US6944865B1 (en) 2000-09-08 2005-09-13 Corel Corporation Method and apparatus for saving a definition for automated data processing
US7296238B1 (en) 2000-09-08 2007-11-13 Corel Corporation Method and apparatus for triggering automated processing of data
US7853833B1 (en) 2000-09-08 2010-12-14 Corel Corporation Method and apparatus for enhancing reliability of automated data processing
US6938030B1 (en) 2000-09-08 2005-08-30 Corel Corporation Method and apparatus for facilitating accurate automated processing of data
US6925593B1 (en) 2000-09-08 2005-08-02 Corel Corporation Method and apparatus for transferring data during automated data processing
US7747673B1 (en) * 2000-09-08 2010-06-29 Corel Corporation Method and apparatus for communicating during automated data processing
US6961922B1 (en) * 2000-09-08 2005-11-01 Corel Corporation Method and apparatus for defining operations to be performed during automated data processing
US6850956B1 (en) 2000-09-08 2005-02-01 Corel Inc. Method and apparatus for obtaining and storing data during automated data processing
US6868193B1 (en) 2000-09-08 2005-03-15 Corel Inc. Method and apparatus for varying automated data processing
JP2002092366A (ja) * 2000-09-11 2002-03-29 Nec Corp Cpu時間売買方法及びcpu時間売買システムにおける管理サーバ
US7389515B1 (en) 2001-05-21 2008-06-17 Microsoft Corporation Application deflation system and method
US7243346B1 (en) * 2001-05-21 2007-07-10 Microsoft Corporation Customized library management system
CN100337198C (zh) * 2001-05-30 2007-09-12 捷讯研究有限公司 一种移动通信设备应用程序处理系统
US7099663B2 (en) 2001-05-31 2006-08-29 Qualcomm Inc. Safe application distribution and execution in a wireless environment
US6748396B2 (en) * 2001-06-01 2004-06-08 International Business Machines Corporation Independent class loader for dynamic class loading
ATE439009T1 (de) * 2001-10-31 2009-08-15 Hewlett Packard Co Vorrichtung und verfahren zur datenverarbeitung
EP1313010A1 (de) * 2001-11-19 2003-05-21 Siemens Aktiengesellschaft Verfahren zum Übermitteln eines Programms, zugehöriges Programm und zugehörige Vorrichtung
US20030121024A1 (en) * 2001-12-13 2003-06-26 Microsoft Corporation System and method for building a runtime image from components of a software program
US7178140B2 (en) * 2002-02-28 2007-02-13 Sun Microsystems, Inc. Speeding up application downloading from a remote server
US8166185B2 (en) * 2002-03-05 2012-04-24 Hewlett-Packard Development Company, L.P. System and method for enterprise software distribution
US6983449B2 (en) 2002-03-15 2006-01-03 Electronic Data Systems Corporation System and method for configuring software for distribution
US7590618B2 (en) * 2002-03-25 2009-09-15 Hewlett-Packard Development Company, L.P. System and method for providing location profile data for network nodes
US7290215B2 (en) * 2002-06-03 2007-10-30 Microsoft Corporation Dynamic wizard interface system and method
US20040237081A1 (en) * 2003-05-19 2004-11-25 Homiller Daniel P. Methods and apparatus for generating upgraded software from initial software and software upgrade packages
US7480895B2 (en) * 2003-11-24 2009-01-20 International Business Machines Corporation Web application development tool
US7685230B2 (en) * 2004-04-01 2010-03-23 Vaakya Technologies Private Limited System and method for program execution
US8140614B2 (en) * 2005-06-02 2012-03-20 International Business Machines Corporation Distributed computing environment with remote data collection management
US9298448B2 (en) * 2013-05-21 2016-03-29 Red Hat, Inc. System and method for run time dependency resolution
CN103473089A (zh) * 2013-09-02 2013-12-25 深圳市华傲数据技术有限公司 一种分布式java程序运行方法、装置和系统
CN103595790B (zh) 2013-11-14 2017-01-04 华为技术有限公司 设备远程访问的方法、瘦客户端和虚拟机
CN113312109A (zh) * 2021-06-24 2021-08-27 广州市思力智慧互联网科技有限公司 一种项目打包方法、装置及计算机设备

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5237688A (en) * 1987-11-18 1993-08-17 International Business Machines Corporation Software packaging structure having hierarchical replaceable units
US5473772A (en) * 1991-04-02 1995-12-05 International Business Machines Corporation Automatic update of static and dynamic files at a remote network node in response to calls issued by or for application programs
GB2242293A (en) * 1990-01-05 1991-09-25 Apple Computer Apparatus and method for dynamic linking of computer software components
AU628264B2 (en) * 1990-08-14 1992-09-10 Oracle International Corporation Methods and apparatus for providing a client interface to an object-oriented invocation of an application
US5519866A (en) * 1993-06-28 1996-05-21 Taligent, Inc. Method and apparatus of incrementally linking components of a modeled computer program
US5603031A (en) 1993-07-08 1997-02-11 General Magic, Inc. System and method for distributed computation based upon the movement, execution, and interaction of processes in a network
US5630066A (en) * 1994-12-20 1997-05-13 Sun Microsystems, Inc. System and method for locating object view and platform independent object
US5590331A (en) * 1994-12-23 1996-12-31 Sun Microsystems, Inc. Method and apparatus for generating platform-standard object files containing machine-independent code
US5666501A (en) * 1995-03-30 1997-09-09 International Business Machines Corporation Method and apparatus for installing software
US6138140A (en) * 1995-07-14 2000-10-24 Sony Corporation Data processing method and device
DE19535519C2 (de) * 1995-09-25 1999-03-04 Ibm Verfahren zur Reduzierung des Umfanges von Computerprogrammen
JPH09134282A (ja) * 1995-11-08 1997-05-20 Hitachi Ltd プログラム作成方法
US5727147A (en) * 1995-12-08 1998-03-10 Sun Microsystems, Inc. System and method for resolving symbolic references to externally located program files
US6526565B1 (en) * 1995-12-21 2003-02-25 International Business Machines Corporation Packaging algorithm for providing object oriented applications having reduced footprints
US5835777A (en) * 1996-03-20 1998-11-10 Hewlett-Packard Company Method of automatically generating a software installation package
US6112025A (en) * 1996-03-25 2000-08-29 Sun Microsystems, Inc. System and method for dynamic program linking
US5815718A (en) * 1996-05-30 1998-09-29 Sun Microsystems, Inc. Method and system for loading classes in read-only memory
US5790796A (en) * 1996-06-14 1998-08-04 Symantec Corporation Polymorphic package files to update software components
US5991535A (en) * 1996-07-03 1999-11-23 Sun Microsystems, Inc. Visual composition tool for constructing application programs using distributed objects on a distributed object network
US5949998A (en) * 1996-07-03 1999-09-07 Sun Microsystems, Inc. Filtering an object interface definition to determine services needed and provided
US5911071A (en) * 1996-09-13 1999-06-08 Sun Microsystems, Inc. Persistent programming system and method for deploying self-containing executable applications
US5950010A (en) * 1996-11-25 1999-09-07 J.D. Edwards World Source Co. System and method for customized application package building and installation
US6065046A (en) * 1997-07-29 2000-05-16 Catharon Productions, Inc. Computerized system and associated method of optimally controlled storage and transfer of computer programs on a computer network
GB2329490B (en) * 1997-09-19 2002-06-05 Ibm Remote application design
US5966702A (en) * 1997-10-31 1999-10-12 Sun Microsystems, Inc. Method and apparatus for pre-processing and packaging class files
US6349344B1 (en) * 1997-12-16 2002-02-19 Microsoft Corporation Combining multiple java class files into a run-time image
US6199196B1 (en) * 1998-03-20 2001-03-06 Sun Microsystems, Inc. Methods and apparatus for linking a program for remote execution
US6336122B1 (en) * 1998-10-15 2002-01-01 International Business Machines Corporation Object oriented class archive file maker and method
GB2343021A (en) * 1998-10-19 2000-04-26 Ibm Class loading model for object oriented programming
US6279030B1 (en) * 1998-11-12 2001-08-21 International Business Machines Corporation Dynamic JAVA™ class selection and download based on changeable attributes
US6247175B1 (en) * 1998-12-22 2001-06-12 Nortel Networks Limited Method and apparatus for identifying and removing unused software procedures

Also Published As

Publication number Publication date
US6493870B1 (en) 2002-12-10
EP0950949A2 (en) 1999-10-20
JP2000155686A (ja) 2000-06-06
CN1233009A (zh) 1999-10-27
EP0950949A3 (en) 2007-03-14

Similar Documents

Publication Publication Date Title
CN1154040C (zh) 封装程序供远程执行的方法和装置
CN1205537C (zh) 用于为远程执行链接程序的方法
KR100441115B1 (ko) 정보 단말기의 자바 프로그램 처리 속도 향상을 위한 자바컴파일 온 디멘드 서비스 시스템 및 그 방법
US6446070B1 (en) Method and apparatus for dynamic distributed computing over a network
US7213240B2 (en) Platform-independent selective ahead-of-time compilation
CN1113290C (zh) 为应用程序透明地加载只读存储器中的资源的系统和方法
US10540148B2 (en) Complex constants
CA2306118C (en) Combining multiple class files into run-time image
US20090271771A1 (en) System and methods for distributed execution of computer executable programs utilizing asymmetric translation
US20020147855A1 (en) Method and system for cross platform, parallel processing
CN1955922A (zh) 用于动态提供本地库及其相关性的方法和系统
US20080178151A1 (en) Method and Apparatus to Implement Adaptive Scripting Tool
CN1295605C (zh) 处理虚拟机指令、执行本机处理器子程序的方法
USRE45021E1 (en) Method and software for processing server pages
EP1057101A2 (en) Method and apparatus for dynamic distributed computing over a network
CN114327477A (zh) 智能合约执行方法、装置、电子装置和存储介质
US7178140B2 (en) Speeding up application downloading from a remote server
CN1592887A (zh) 一种移动通信设备应用程序处理系统
CN1298506A (zh) 便于访问查询服务的方法和系统
CN1251079C (zh) 实现不同系统之间数据交互的方法
CN110489124B (zh) 源代码执行方法、装置、存储介质及计算机设备
CN1298508A (zh) 执行与分布式系统中的远程过程调用相关的处理的可下载智能代理
CN1542631A (zh) 高性能受管理的运行时环境应用程序管理器
CN1932760A (zh) 开发和执行平台
US6996825B2 (en) Method and apparatus for efficient object sub-typing

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: ORACLE AMERICA CO., LTD.

Free format text: FORMER NAME: SUN MICROSYSTEMS, INC.

CP01 Change in the name or title of a patent holder

Address after: American California

Patentee after: Oracle America Co., Ltd.

Address before: American California

Patentee before: Sun Microsystems, Inc.

CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20040616