CN1233010A - 用于为远程执行链接程序的方法和装置 - Google Patents

用于为远程执行链接程序的方法和装置 Download PDF

Info

Publication number
CN1233010A
CN1233010A CN99107382.7A CN99107382A CN1233010A CN 1233010 A CN1233010 A CN 1233010A CN 99107382 A CN99107382 A CN 99107382A CN 1233010 A CN1233010 A CN 1233010A
Authority
CN
China
Prior art keywords
composition
class
extract
routine package
program
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.)
Granted
Application number
CN99107382.7A
Other languages
English (en)
Other versions
CN1205537C (zh
Inventor
皮特·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 CN1233010A publication Critical patent/CN1233010A/zh
Application granted granted Critical
Publication of CN1205537C publication Critical patent/CN1205537C/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time

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和Frank Yellin在1996年所著的题为“Java虚拟机说明书”的教科书中进行了描述。Java VM用作为字节代码和所使用的特定计算机系统之间的解释器。通过使用与平台无关的字节代码和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 (24)

1.一种为分布式系统中的执行封装程序成份的方法,包括如下步骤:
确定由一个程序所引用的成份;
从一个存储的类中提取出所述成份;以及
产生一个包括所述程序和提取出的成份的程序包。
2.如权利要求1所述的方法,还包括提取出与存储的类相联系的辅助信息的步骤。
3.如权利要求1所述的方法,还包括下列步骤:
分析所述成份对另一个成份的任何引用;
从一个存储的类中提取出所引用的成份;以及
将提取出的所引用成份增加到程序包中。
4.如权利要求1所述的方法,还包括下列步骤:
为一个替代方法分析一个子类;
从一个存储的类中提取出所述替代方法;以及
将提取出的所述替代方法增加到程序包中。
5.如权利要求1所述的方法,还包括下列步骤:
为一个替代以前加载的方法的方法分析一个存储的类;
从存储的类中提取出所述替代方法;以及
将提取出的所述替代方法增加到程序包中。
6.如权利要求1所述的方法,其特征在于,提取步骤还包括根据一个以前提取的成份确定是否应该提取出一个成份的步骤。
7.如权利要求1所述的方法,其特征在于,提取步骤还包括下列步骤:
接收一个关于不应被增加到所述程序包中的被排除的成份的指令;以及
根据所述指令确定是否应该提取出一个成份。
8.如权利要求2所述的方法,还包括下列步骤:
接收一个关于不应被增加到所述程序包中的被排除的成份的指令;以及
根据所述指令确定是否应该提取出一个成份。
9.如权利要求1所述的方法,还包括下列步骤:
接收一个关于应该被增加到所述程序包中的附加成份的指令;
从一个存储的类中提取出所述附加成份;以及
将所述附加成份增加到程序包中。
10.如权利要求2所述的方洗还包括下列步骤:
接收一个关于应该被增加到所述程序包中的附加成份的指令;
从一个存储的类中提取出所述附加成份;以及
将所述附加成份增加到程序包中。
11.如权利要求1所述的方法,还包括下列步骤:
接收程序执行的开始点;以及
接收一个类文件的位置。
12.一种计算机可读介质,包含用于为分布式系统中的执行封装程序成份的指令,所述封装通过如下步骤完成:
确定由一个程序所引用的成份;
从一个存储的类中提取出所述成份;以及
产生一个包括所述程序和提取出的成份的程序包。
13.如权利要求12所述的计算机可读介质,还包括提取出与存储的类相联系的辅助信息的步骤。
14.如权利要求12所述的计算机可读介质,还包括下列步骤:
分析所述成份对另一个成份的任何引用;
从一个存储的类中提取出所引用的成份;以及
将提取出的所引用成份增加到程序包中。
15.如权利要求12所述的计算机可读介质,还包括下列步骤:
为一个替代方法分析一个子类;
从一个存储的类中提取出所述替代方法;以及
将提取出的所述替代方法增加到程序包中。
16.如权利要求12所述的计算机可读介质,还包括下列步骤:
为一个替代以前加载的方法的方法分析一个存储的类;
从存储的类中提取出所述替代方法;以及
将提取出的所述替代方法增加到程序包中。
17.如权利要求12所述的计算机可读介质,其特征在于,提取步骤还包括根据一个以前提取的成份确定是否应该提取出一个成份的步骤。
18.如权利要求12所述的计算机可读介质,其特征在于,提取步骤还包括下列步骤:
接收一个关于不应被增加到所述程序包中的被排除的成份的指令;以及
根据所述指令确定是否应该提取出一个成份。
19.如权利要求13所述的计算机可读介质,还包括下列步骤:
接收一个关于不应被增加到所述程序包中的被排除的成份的指令;以及
根据所述指令确定是否应该提取出一个成份。
20.如权利要求12所述的计算机可读介质,还包括下列步骤:
接收一个关于应该被增加到所述程序包中的附加成份的指令;
从一个存储的类中提取出所述附加成份;以及
将所述附加成份增加到程序包中。
21.如权利要求13所述的计算机可读介质,还包括下列步骤:
接收一个关于应该被增加到所述程序包中的附加成份的指令;
从一个存储的类中提取出所述附加成份;以及
将所述附加成份增加到程序包中。
22.如权利要求12所述的计算机可读介质,还包括下列步骤:
接收程序执行的开始点;以及
接收一个类文件的位置。
23.一种用于为分布式系统中的执行封装程序成份的设备,包括
用于确定由一个程序所引用的成份的装置;
用于从一个存储的类中提取出所述成份的装置;以及
用于产生一个包括所述程序和提取出的成份的程序包的装置。
24.一种系统,包括
一个具有(a)处理器、(b)存储器和(c)包括虚拟机任务的运行环境的客户机;
一个具有(a)处理器、(b)存储器、(c)接口任务、(d)链接编辑器任务和(e)成份文件的服务器;以及
将客户机和服务器进行互连的网络。
CN99107382.7A 1998-03-20 1999-03-19 用于为远程执行链接程序的方法 Expired - Lifetime CN1205537C (zh)

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
US044904 1998-03-20
US044,904 1998-03-20

Publications (2)

Publication Number Publication Date
CN1233010A true CN1233010A (zh) 1999-10-27
CN1205537C 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015027733A1 (zh) * 2013-09-02 2015-03-05 深圳市华傲数据技术有限公司 一种分布式java程序运行方法、装置和系统
CN110795200A (zh) * 2018-08-01 2020-02-14 北京钛云物联科技有限公司 一种适用于Java运行环境的装置及其实现方法

Families Citing this family (32)

* 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
US6199196B1 (en) * 1998-03-20 2001-03-06 Sun Microsystems, Inc. Methods and apparatus for linking a program for remote execution
US6493870B1 (en) * 1998-03-20 2002-12-10 Sun Microsystems, Inc. Methods and apparatus for packaging 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
CA2448962C (en) * 2001-05-30 2009-10-06 Research In Motion Limited A mobile communications device application processing system
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
US7293262B2 (en) * 2003-01-27 2007-11-06 Bea Systems, Inc. Web based interface 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
US7308684B2 (en) * 2003-06-16 2007-12-11 Microsoft Corporation Classifying software and reformulating resources according to classifications
US7210124B2 (en) * 2003-06-16 2007-04-24 Microsoft Corporation Reformulating resources with nodes reachable from defined entry points
US20040268302A1 (en) * 2003-06-26 2004-12-30 Microsoft Corporation Framework for determining and exposing binary dependencies
US7496904B2 (en) * 2003-06-26 2009-02-24 Microsoft Corporation Mining dependencies for testing and risk management
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

Family Cites Families (12)

* 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
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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015027733A1 (zh) * 2013-09-02 2015-03-05 深圳市华傲数据技术有限公司 一种分布式java程序运行方法、装置和系统
CN110795200A (zh) * 2018-08-01 2020-02-14 北京钛云物联科技有限公司 一种适用于Java运行环境的装置及其实现方法

Also Published As

Publication number Publication date
JP2000029714A (ja) 2000-01-28
EP0950950A2 (en) 1999-10-20
EP0950950A3 (en) 2007-03-07
CN1205537C (zh) 2005-06-08
US6199196B1 (en) 2001-03-06
US6453467B2 (en) 2002-09-17
US20010000047A1 (en) 2001-03-15

Similar Documents

Publication Publication Date Title
CN1205537C (zh) 用于为远程执行链接程序的方法
CN1154040C (zh) 封装程序供远程执行的方法和装置
US6272674B1 (en) Method and apparatus for loading a Java application program
US6542908B1 (en) Technique for automatically and transparently transforming software components into software components capable of execution in a client/server computing environment
US6560618B1 (en) On-demand generation, packaging, and delivery of archive files
US6083279A (en) Platform independent technique for transferring software programs over a network
CN1113290C (zh) 为应用程序透明地加载只读存储器中的资源的系统和方法
US20050186625A1 (en) Process and system for sharing program fragments
US9183066B2 (en) Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US20010049713A1 (en) Method and apparatus for dynamic distributed computing over a network
US9058131B2 (en) Specification files for call translation and trace
CA2343437A1 (en) Method and system for cross platform, parallel processing
USRE45021E1 (en) Method and software for processing server pages
WO2006111209A1 (en) Process and system for sharing program fragments
US7178140B2 (en) Speeding up application downloading from a remote server
CN1592887A (zh) 一种移动通信设备应用程序处理系统
US7512664B1 (en) System and method for loading resolved java class files to a client device
EP1136910A2 (en) A method of compiling code in an object oriented programming language
KR20010041226A (ko) 분산 시스템에서 원격 프로시져 호출에 연관된 프로세싱을 수행하기 위한 다운로드 가능한 스마트 플락시
Newsome et al. Proxy compilation of dynamically loaded Java classes with MoJo
CN1542631A (zh) 高性能受管理的运行时环境应用程序管理器
CN1932760A (zh) 开发和执行平台
CN116974653B (zh) 类加载方法及系统
KR100305981B1 (ko) 암시적에이전트재배치를사용하여원격네트워크콤포넌트에대한액세스를자동으로로컬라이징하는시스템및방법
CN116483366A (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

Granted publication date: 20050608

CX01 Expiry of patent term