CN1205537C - 用于为远程执行链接程序的方法 - Google Patents
用于为远程执行链接程序的方法 Download PDFInfo
- Publication number
- CN1205537C CN1205537C CN99107382.7A CN99107382A CN1205537C CN 1205537 C CN1205537 C CN 1205537C CN 99107382 A CN99107382 A CN 99107382A CN 1205537 C CN1205537 C CN 1205537C
- Authority
- CN
- China
- Prior art keywords
- composition
- sequence
- extract
- class
- quoting
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一个在服务器上执行的链接编辑器接收用于封装在一个客户机上的程序执行所需的软件成份的指令。链接编辑器通过循环地分析程序对其他软件成份的引用并将这些成份从其父类中提取出来,产生一个输出文件。链接编辑器将完成的输出文件发送给一个接口任务,接口任务然后将其发送给客户机。
Description
本申请与下面的美国专利申请相关,并将其作为参考:美国专利申请No.09/044,900,题目为“用于为远程执行封装程序的方法和装置”,其代理文档(attorney docket)为no.06502.0073-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和FrankYellin在1996年所著的题为“Java虚拟机说明书”的教科书中进行了描述。JavaVM用作为字节代码和所使用的特定计算机系统之间的解释器。通过使用与平台无关的字节代码和Java VM,可以在任何计算机系统上执行以Java程序设计语言写出的程序。这在将不同的计算机系统进行互连的网络、例如因特网中是特别有用的。
在能够执行一个Java程序之前,必须将某些必不可少的类(class)装载进执行该程序的计算机的存储器中。这些类可以从计算机的磁盘装载,但更常用的是通过网络从一个服务器传输。习惯上,将这些类在程序执行期间尽可能晚地装载;换句话说,它们是根据需要在程序执行期间首次被引用时才装载的。当这种装载出现时,一旦需要一个类的任何一部分,通常装载整个类。
根据一种常规方法,当机器上的用户发出执行驻留在一个远程服务器上的程序的请求时,将包含main方法的类文件通过网络从该服务器装载到该客户机。这个类文件包含程序字节代码。虚拟机然后通过调用程序的main方法开始执行。
执行一直持续进行到程序引用一个成份,例如,被称为“F”的成份。响应于该引用,将包含成份F的整个类从服务器上的类文件通过网络传输给客户机。所引用的成份F被使用,执行然后继续进行,直到引用另一个成份,例如被称为“G”的成份。响应于该引用,将包含成份G的整个类从服务器上的类文件通过网络传输给客户机。执行则继续进行到结束。一旦执行已经完成,在客户机和服务器之间通过网络的一系列连接最终可以被终止。
这个说明证明常规的方法有两个显著的缺陷。首先,在程序执行期间,它需要在客户机和服务器之间的重复连接。这样一种连接所必须的长周期对于诸如移动计算的情况是成问题的。其次,一旦引用一个成份,例如成份F,该方法需要从服务器加载包含所引用成份的整个类。然而,如果在类内只有很少的成份最终被使用,则从服务器向客户机传输未用成份所需的带宽就被浪费了。这在涉及客户机和服务器之间的有限带宽、即慢的连接速度或高等待时间的连接的情况中是成问题的。
因此,需要一种通过只将一整个程序的所需成份封装在一起并在执行开始之前将其传送给客户机来减轻这些问题的系统。已经采用了用于远程执行的预封装软件,该软件使用其他需要机器兼容性的编译计算机语言,例如Cobol、C和Fortran。然而,还没有采用使用一种面向对象的语言、例如Java程序设计语言的软件,其中Java程序设计语言提供了很多另外的好处,例如从其父类提取所需的成份。
发明内容
本发明的一个目的是提供一种实际只封装程序执行所必需的成份的方法、设备和系统。
根据本发明的第一方面,提供了一种用于封装在分布式系统中执行的程序成份的方法,包括如下步骤:确定由一个程序所引用的成份;从一个存储的类中提取出所述成份;产生一个包括所述程序和提取出的成份的程序包;分析所述成份对另一个成份的任何引用;从一存储的类中提取所引用的另一个成份;以及把提取的所引用的另一个成份增加到程序包中。
根据本发明的另一方面,提供了一种用于封装在分布式系统中执行的程序成份的方法,所述分布式系统包括通过网络互连的第一计算机节点和第二计算机节点,该方法包括如下步骤:确定由一个程序所引用的成份;在第一计算机节点处从一个存储的类中提取出所述成份;在第一计算机节点处产生一个包括所述程序和提取出的成份的程序包;把所述程序包发送到第二计算机节点;以及在第二计算机节点处执行所述程序包中包括的程序和提取出的成份。
根据本发明的另一方面,提供了一种用于封装在分布式系统中执行的程序成份的方法,由服务器执行的该方法包括下列步骤:确定由客户计算机请求的程序所引用的成份;从一个存储的类中提取所述成份;产生一个包括所述程序和提取出的成份的程序包;分析所述成份对另一个成份的任何引用;从一个存储的类中提取出所引用的另一个成份;将提取出的所引用的另一个成份增加到程序包中;以及把所述程序包发送到所述客户计算机。
附图说明
在本说明书中所包含的并构成说明书的一部分的附图显示了本发明的一个实施例,并与说明书一起用于解释本发明的优点和原理。在附图中,
图1是一个典型的客户机-服务器结构的方框图,用于说明使用包括一个虚拟机的运行环境的远程程序执行;
图2是显示一个典型的可执行面向对象程序及其引用的成份和它们的依赖性的方框图;
图3是说明与本发明一致的链接和执行的定时的时线;
图4是显示典型的与服务器和客户机有关的接口和链接编辑器任务的方框图;
图5是由与本发明一致的封装处理中的接口任务执行的步骤的流程图;
图6是在本发明的一个实施例中由封装输出文件中的链接编辑器执行的步骤的流程图;以及
图7是在本发明的一个实施例中为了增加必要的方法而执行的步骤的流程图;以及
图8是在本发明的一个实施例中为了执行程序而由客户机执行的步骤的流程图。
具体实施方式
下面将参考附图详细说明本发明的实施形式。其中,在整个附图和下面的说明中,相同的标号代表相同或相似的部分。
A.
概述
依据本发明的系统和方法工作在一个分布式计算机系统中,该系统典型地具有多个客户机和一个或多个服务器。例如,试图执行一个程序的客户机向服务器请求将运行程序所需的软件封装在一起。在形成该请求时,客户机可以指定应该包括在该程序包内的特定成份。
在服务器执行的任务(“接口任务”)接收到这个请求,并确定已经驻留在客户机内的软件成份。接口任务应用该信息形成一组给被称为链接编辑器的另一任务的指令。这些指令可以包括:要执行的程序名,因为已经驻留在客户机内而不必被封装的成份,以及客户机可能已经指定要包括在该程序包内的任何软件成份的名称。
链接编辑器接收此信息,并产生一个包含驻留在服务器内并且程序执行所必须的所有软件成份的输出文件。这个输出文件是通过迭代地分析引用其他软件成份的程序并从这些成份的父类提取出这些成份而产生的。链接编辑器将完成的输出文件发送给接口任务,接口任务将其传送给需要的客户机,程序开始执行。
B.
术语
为了说明的缘故,下面的详细说明是基于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引用四个成份,分别显示为成份A 210、成份B 220、成份C 230和成份D 240。这些引用成份自己又引用其他成份。例如,成份B 220引用成份B1 250。同样,成份C 230引用成份A 210和成份C1 270。成份C1 270自己又引用成份C1A 280。这样一种由一个成份对另一个成份的引用通常被称作为依赖性(dependency)。因为在程序执行期间会被用到,每个被引用的成份必须被加载。
D.
时线
图3是用于说明依据本发明的链接和执行的定时的时线。当用户发出一个在客户机100上执行程序的请求时(点310),程序开始。作为响应,服务器160确定程序执行需要哪些成份和依赖性(点320)。然后,将这些所需成份的每一个与辅助类信息一起通过网络150从服务器160传送给客户机100(点330)。此时,已经将程序执行所需的所有成份和类都从服务器150传送到客户机100,因此,在两者之间的连接可以中断。
然后程序执行开始(点340),并引用成份A 210(点350)。然而,因为该成份已经(在点330)被加载在客户机100上,不需要将该成份从服务器160向客户机100单独传送。同样,在引用成份B 220时(点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 (20)
1.一种用于封装在分布式系统中执行的程序成份的方法,包括如下步骤:
确定由一个程序所引用的成份;
从一个存储的类中提取出所述成份;
产生一个包括所述程序和提取出的成份的程序包;
分析所述成份对另一个成份的任何引用;
从一存储的类中提取所引用的另一个成份;以及
把提取的所引用的另一个成份增加到程序包中。
2.如权利要求1所述的方法,还包括提取出与存储的类相联系的辅助信息的步骤。
3.如权利要求1所述的方法,还包括下列步骤:
为一个替代方法分析一个子类;
从一个存储的类中提取出所述替代方法;以及
将提取出的所述替代方法增加到程序包中。
4.如权利要求1所述的方法,还包括下列步骤:
为一个替代以前加载的方法的方法分析一个存储的类;
从存储的类中提取出所述替代方法;以及
将提取出的所述替代方法增加到程序包中。
5.如权利要求1所述的方法,其特征在于,提取步骤还包括根据一个以前提取的成份确定是否应该提取出一个成份的步骤。
6.如权利要求1所述的方法,其特征在于,提取步骤还包括下列步骤:
接收一个关于不应被增加到所述程序包中的被排除的成份的指令;以及
根据所述指令确定是否应该提取出一个成份。
7.如权利要求2所述的方法,还包括下列步骤:
接收一个关于不应被增加到所述程序包中的被排除的成份的指令;以及
根据所述指令确定是否应该提取出一个成份。
8.如权利要求1所述的方法,还包括下列步骤:
接收一个关于应该被增加到所述程序包中的附加成份的指令;
从一个存储的类中提取出所述附加成份;以及
将所述附加成份增加到程序包中。
9.如权利要求2所述的方法,还包括下列步骤:
接收一个关于应该被增加到所述程序包中的附加成份的指令;
从一个存储的类中提取出所述附加成份;以及
将所述附加成份增加到程序包中。
10.如权利要求1所述的方法,还包括下列步骤:
接收程序执行的开始点;以及
接收一个类文件的位置。
11.如权利要求1所述的方法,其中所引用的另一个成份是以最后一个被引用成份结尾的一个引用成份序列中的第一成份,所述方法还包括下列步骤:
为对该序列中一较低成份的任何引用分析所述所引用成份序列中的每一个所引用成份;
从一个存储的类中提取所述序列中的每个所引用的较低的成份;以及
把所述序列中的每个提取出的较低的引用成份增加到程序包中,其中循环分析所述序列中的每个引用成份、提取出每个较低的引用成份和增加每个提取出的引用成份的各步骤,直至从一个存储的类中提取出所述引用成份序列中的最后一个引用成份并且把它增加到程序包中。
12.如权利要求1所述的方法,其中所述程序引用多个成份,并且其中所述程序引用的每个成份是以最后一个引用成份结尾的相应引用成份序列中的第一成份,所述方法还包括下列步骤:
确定由所述程序引用的多个成份中的每个成份;
从一个相应的存储的类中提取出所述多个成份中的每个成份;
把提取出的多个成份增加到程序包中;
为对各个序列中一较低成份的任何引用分析每个引用成份序列中的每个引用成份;
从一存储的类中提取每个序列中的每个引用的较低的成份;以及
把每个序列中的每个提取出的较低的引用成份增加到程序包中,其中循环分析每个序列中的每个引用成份、提取出每个较低的引用成份和增加每个提取出的引用成份的各步骤,直至从一个存储的类中提取出每个引用成份序列中的最后一个引用成份并且把它增加到程序包中。
13.一种用于封装在分布式系统中执行的程序成份的方法,所述分布式系统包括通过网络互连的第一计算机节点和第二计算机节点,该方法包括如下步骤:
确定由一个程序所引用的成份;
在第一计算机节点处从一个存储的类中提取出所述成份;
在第一计算机节点处产生一个包括所述程序和提取出的成份的程序包;
把所述程序包发送到第二计算机节点;以及
在第二计算机节点处执行所述程序包中包括的程序和提取出的成份。
14.如权利要求13所述的方法,还包括下列步骤:
在第一计算机节点处接收一个来自第二计算机节点的关于不应被增加到所述程序包中的被排除的成份的指令;以及
在第一计算机节点处根据所述指令确定是否应该提取出一个成份。
15.如权利要求13所述的方法,还包括下列步骤:
在第一计算机节点处接收一个来自第二计算机节点的关于应该被增加到所述程序包中的附加成份的指令;
在第一计算机节点处从一个存储的类中提取出所述附加成份;以及
将所述附加成份增加到程序包中。
16.如权利要求13所述的方法,其中所引用的成份是以最后一个被引用成份结尾的一个引用成份序列中的第一成份,所述方法还包括下列步骤:
在第一计算机节点处为对该序列中一较低成份的任何引用分析所述所引用成份序列中的每一个所引用成份;
在第一计算机节点处从一个存储的类中提取所述序列中的每个所引用的较低的成份;以及
在第一计算机节点处把所述序列中的每个提取出的较低的引用成份增加到程序包中,其中循环分析所述序列中的每个引用成份、提取出每个较低的引用成份和增加每个提取出的引用成份的各步骤,直至从一个存储的类中提取出所述引用成份序列中的最后一个引用成份并且把它增加到程序包中。
17.如权利要求13所述的方法,其中所述程序引用多个成份,并且其中所述程序引用的每个成份是以最后一个引用成份结尾的相应引用成份序列中的第一成份,所述方法还包括下列步骤:
在第一计算机节点处确定由所述程序引用的多个成份中的每个成份;
在第一计算机节点处从一个相应的存储的类中提取出所述多个成份中的每个成份;
在第一计算机节点处把提取出的多个成份增加到程序包中;
在第一计算机节点处为对各个序列中一较低成份的任何引用分析每个引用成份序列中的每个引用成份;
在第一计算机节点处从一存储的类中提取每个序列中的每个引用的较低的成份;以及
在第一计算机节点处把每个序列中的每个提取出的较低的引用成份增加到程序包中,其中循环分析每个序列中的每个引用成份、提取出每个较低的引用成份和增加每个提取出的引用成份的各步骤,直至从一个存储的类中提取出每个引用成份序列中的最后一个引用成份并且把它增加到程序包中。
18.一种用于封装在分布式系统中执行的程序成份的方法,由服务器执行的该方法包括下列步骤:
确定由客户计算机请求的程序所引用的成份;
从一个存储的类中提取所述成份;
产生一个包括所述程序和提取出的成份的程序包;
分析所述成份对另一个成份的任何引用;
从一个存储的类中提取出所引用的另一个成份;
将提取出的所引用的另一个成份增加到程序包中;以及
把所述程序包发送到所述客户计算机。
19.如权利要求18所述的方法,其中所引用的另一个成份是以最后一个被引用成份结尾的一个引用成份序列中的第一成份,所述方法还包括在向客户计算机发送所述程序包前执行下列步骤:
为对该序列中一较低成份的任何引用分析所述所引用成份序列中的每一个所引用成份;
从一个存储的类中提取所述序列中的每个所引用的较低的成份;以及
把所述序列中的每个提取出的较低的引用成份增加到程序包中,其中循环分析所述序列中的每个引用成份、提取出每个较低的引用成份和增加每个提取出的引用成份的各步骤,直至从一个存储的类中提取出所述引用成份序列中的最后一个引用成份并且把它增加到程序包中。
20.如权利要求18所述的方法,其中所述程序引用多个成份,并且其中所述程序引用的每个成份是以最后一个引用成份结尾的相应引用成份序列中的第一成份,所述方法还包括在向客户计算机发送所述程序包前执行下列步骤:
确定由所述程序引用的多个成份中的每个成份;
从一个相应的存储的类中提取出所述多个成份中的每个成份;
把提取出的多个成份增加到程序包中;
为对各个序列中一较低成份的任何引用分析每个引用成份序列中的每个引用成份;
从一存储的类中提取每个序列中的每个引用的较低的成份;以及
把每个序列中的每个提取出的较低的引用成份增加到程序包中,其中循环分析每个序列中的每个引用成份、提取出每个较低的引用成份和增加每个提取出的引用成份的各步骤,直至从一个存储的类中提取出每个引用成份序列中的最后一个引用成份并且把它增加到程序包中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/044,904 US6199196B1 (en) | 1998-03-20 | 1998-03-20 | Methods and apparatus for linking a program for remote execution |
US044,904 | 1998-03-20 | ||
US044904 | 1998-03-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1233010A CN1233010A (zh) | 1999-10-27 |
CN1205537C true CN1205537C (zh) | 2005-06-08 |
Family
ID=21934955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN99107382.7A Expired - Lifetime CN1205537C (zh) | 1998-03-20 | 1999-03-19 | 用于为远程执行链接程序的方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US6199196B1 (zh) |
EP (1) | EP0950950A3 (zh) |
JP (1) | JP2000029714A (zh) |
CN (1) | CN1205537C (zh) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999031584A1 (de) * | 1997-12-17 | 1999-06-24 | Fujitsu Siemens Computers Gmbh | Verfahren zum umsetzen eines systemaufrufs |
US6493870B1 (en) * | 1998-03-20 | 2002-12-10 | Sun Microsystems, Inc. | Methods and apparatus for packaging a program for remote execution |
US6199196B1 (en) * | 1998-03-20 | 2001-03-06 | Sun Microsystems, Inc. | Methods and apparatus for linking a program for remote execution |
JP2000122876A (ja) * | 1998-10-16 | 2000-04-28 | Matsushita Electric Ind Co Ltd | 情報処理装置 |
US6829761B1 (en) * | 1999-10-21 | 2004-12-07 | Oracle International Corporation | Method and apparatus for managing shared memory in a run-time environment |
US6865732B1 (en) * | 1999-11-01 | 2005-03-08 | Hewlett-Packard Development Company, L.P. | Providing an embedded application specific web server |
US6813762B1 (en) * | 2000-02-22 | 2004-11-02 | Freescale Semiconductor, Inc. | Method for processing program files in a programming language capable of dynamic loading |
US7395220B2 (en) * | 2000-03-01 | 2008-07-01 | Travelocity.Com Lp | System, methods and computer program products for offering products based on extrapolation of inputs |
US7092892B1 (en) * | 2000-03-01 | 2006-08-15 | Site59, Inc. | System and method for grouping and selling products or services |
JP2002092366A (ja) * | 2000-09-11 | 2002-03-29 | Nec Corp | Cpu時間売買方法及びcpu時間売買システムにおける管理サーバ |
US6748591B1 (en) * | 2000-09-14 | 2004-06-08 | International Business Machines Corporation | Method, system, program, and data structures for loading programs into a runtime environment |
US20020087734A1 (en) * | 2000-12-29 | 2002-07-04 | Marshall Donald Brent | System and method for managing dependencies in a component-based system |
US7080373B2 (en) * | 2001-03-07 | 2006-07-18 | Freescale Semiconductor, Inc. | Method and device for creating and using pre-internalized program files |
US6971001B1 (en) * | 2001-05-17 | 2005-11-29 | Accenture Global Services Gmbh | General and reusable components for defining net-centric application program architectures |
US7243346B1 (en) * | 2001-05-21 | 2007-07-10 | Microsoft Corporation | Customized library management system |
US7389515B1 (en) | 2001-05-21 | 2008-06-17 | Microsoft Corporation | Application deflation system and method |
BR0209761A (pt) * | 2001-05-30 | 2006-02-07 | Research Motion Ltd | Sistema de processamento de aplicação de dispositivo de comunicação móvel |
US6986148B2 (en) * | 2001-07-17 | 2006-01-10 | Appforge, Inc. | Methods and systems for providing platform-independent shared software components for mobile devices |
US6944855B2 (en) | 2001-10-25 | 2005-09-13 | Siemens Medical Solutions Health Services Corporation | System, method, and article of manufacture for creating and updating an application using software application elements |
US20030121024A1 (en) | 2001-12-13 | 2003-06-26 | Microsoft Corporation | System and method for building a runtime image from components of a software program |
US8074201B2 (en) * | 2002-07-10 | 2011-12-06 | National Instruments Corporation | Deployment and execution of a program on an embedded device |
US7290248B2 (en) * | 2003-01-27 | 2007-10-30 | Bea Systems, Inc. | Command-line interface system and method for JAVA message service mark-up language |
US7647562B2 (en) * | 2003-04-03 | 2010-01-12 | National Instruments Corporation | Deployment and execution of a graphical program on an embedded device from a PDA |
US7210124B2 (en) * | 2003-06-16 | 2007-04-24 | Microsoft Corporation | Reformulating resources with nodes reachable from defined entry points |
US7308684B2 (en) * | 2003-06-16 | 2007-12-11 | Microsoft Corporation | Classifying software and reformulating resources according to classifications |
US7496904B2 (en) * | 2003-06-26 | 2009-02-24 | Microsoft Corporation | Mining dependencies for testing and risk management |
US20040268302A1 (en) * | 2003-06-26 | 2004-12-30 | Microsoft Corporation | Framework for determining and exposing binary dependencies |
KR100590895B1 (ko) | 2004-11-09 | 2006-06-19 | 삼성전자주식회사 | 엠베디드 웹에서의 시스템 제어장치 및 그 방법 |
US20060225051A1 (en) * | 2005-04-05 | 2006-10-05 | Cisco Technology, Inc. | Method and system for code coverage |
US20090070752A1 (en) * | 2007-09-06 | 2009-03-12 | International Business Machines Corporation | Method and system for optimization of an application |
US8127273B2 (en) * | 2007-11-09 | 2012-02-28 | International Business Machines Corporation | Node selection for executing a Java application among a plurality of nodes |
US8397225B2 (en) * | 2008-04-24 | 2013-03-12 | International Business Machines Corporation | Optimizing just-in-time compiling for a java application executing on a compute node |
CN103473089A (zh) * | 2013-09-02 | 2013-12-25 | 深圳市华傲数据技术有限公司 | 一种分布式java程序运行方法、装置和系统 |
CN110795200A (zh) * | 2018-08-01 | 2020-02-14 | 北京钛云物联科技有限公司 | 一种适用于Java运行环境的装置及其实现方法 |
Family Cites Families (12)
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 |
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 |
US5590331A (en) * | 1994-12-23 | 1996-12-31 | Sun Microsystems, Inc. | Method and apparatus for generating platform-standard object files containing machine-independent code |
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 |
US5802514A (en) * | 1996-04-09 | 1998-09-01 | Vision Software Tools, Inc. | Automated client/server development tool using drag-and-drop metaphor |
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 |
US5862346A (en) * | 1996-06-28 | 1999-01-19 | Metadigm | Distributed group activity data network system and corresponding method |
US5966702A (en) * | 1997-10-31 | 1999-10-12 | Sun Microsystems, Inc. | Method and apparatus for pre-processing and packaging class files |
US6199196B1 (en) * | 1998-03-20 | 2001-03-06 | Sun Microsystems, Inc. | Methods and apparatus for linking a program for remote execution |
-
1998
- 1998-03-20 US US09/044,904 patent/US6199196B1/en not_active Expired - Lifetime
-
1999
- 1999-03-18 JP JP11116932A patent/JP2000029714A/ja active Pending
- 1999-03-19 EP EP99400685A patent/EP0950950A3/en not_active Withdrawn
- 1999-03-19 CN CN99107382.7A patent/CN1205537C/zh not_active Expired - Lifetime
-
2000
- 2000-12-01 US US09/726,609 patent/US6453467B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0950950A2 (en) | 1999-10-20 |
EP0950950A3 (en) | 2007-03-07 |
CN1233010A (zh) | 1999-10-27 |
US20010000047A1 (en) | 2001-03-15 |
US6453467B2 (en) | 2002-09-17 |
JP2000029714A (ja) | 2000-01-28 |
US6199196B1 (en) | 2001-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1205537C (zh) | 用于为远程执行链接程序的方法 | |
CN1154040C (zh) | 封装程序供远程执行的方法和装置 | |
CA2306118C (en) | Combining multiple class files into run-time image | |
US6272674B1 (en) | Method and apparatus for loading a Java application program | |
US7047530B2 (en) | Method and system for cross platform, parallel processing | |
US20090271771A1 (en) | System and methods for distributed execution of computer executable programs utilizing asymmetric translation | |
US7093243B2 (en) | Software mechanism for efficient compiling and loading of java server pages (JSPs) | |
US20050186625A1 (en) | Process and system for sharing program fragments | |
US20010049713A1 (en) | Method and apparatus for dynamic distributed computing over a network | |
CN1885264A (zh) | 用于嵌入式系统的软件包构建方法和系统 | |
CN1281180A (zh) | 为应用程序透明地加载只读存储器中的资源 | |
KR20030000926A (ko) | 정보 단말기의 자바 프로그램 처리 속도 향상을 위한 자바컴파일 온 디멘드 서비스 시스템 및 그 방법 | |
US20130290922A1 (en) | Specification files for call translation and trace | |
CN1955922A (zh) | 用于动态提供本地库及其相关性的方法和系统 | |
CN114327477A (zh) | 智能合约执行方法、装置、电子装置和存储介质 | |
WO1999008182A1 (en) | Method and apparatus for static and dynamic generation of information on a user interface | |
CN1447938A (zh) | 程序连接方法 | |
CN110489124B (zh) | 源代码执行方法、装置、存储介质及计算机设备 | |
US7788649B1 (en) | Method and software for processing server pages | |
CN1592887A (zh) | 一种移动通信设备应用程序处理系统 | |
Gregersen et al. | Towards a Dynamic-update-enabled JVM | |
CN1298508A (zh) | 执行与分布式系统中的远程过程调用相关的处理的可下载智能代理 | |
US20060242631A1 (en) | Process and system for sharing program fragments | |
CN112650502A (zh) | 批处理任务处理方法、装置、计算机设备和存储介质 | |
CN1542631A (zh) | 高性能受管理的运行时环境应用程序管理器 |
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: 20050608 |