CN1233009A - 封装程序供远程执行的方法和装置 - Google Patents
封装程序供远程执行的方法和装置 Download PDFInfo
- Publication number
- CN1233009A CN1233009A CN99107381.9A CN99107381A CN1233009A CN 1233009 A CN1233009 A CN 1233009A CN 99107381 A CN99107381 A CN 99107381A CN 1233009 A CN1233009 A CN 1233009A
- Authority
- CN
- China
- Prior art keywords
- composition
- program
- client computer
- linkage editor
- computer
- 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
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
- G06F9/44521—Dynamic 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)
- Information Transfer Between Computers (AREA)
- Multi Processors (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和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.如权利要求6所述的方法,还包括向链接编辑器提供附加成份的文件位置的标识的步骤。
8.如权利要求1所述的方法,还包括下列步骤:
从链接编辑器接收一个程序包;以及
向客户机发送所述程序包。
9.如权利要求8所述的方法,还包括将一个程序包成份增加到已经存在于客户机上的成份中的步骤。
10.一种计算机可读介质,包含用于为分布式系统中的执行封装程序成份的指令,所述封装通过如下步骤完成:
接收为一个客户机上的远程执行封装程序的请求
识别在客户机可得到的程序中引用的任何类;以及
向一个链接编辑器提供一个对于所识别类的引用。
11.如权利要求10所述的计算机可读介质,其特征在于,识别步骤还包括根据存储在一个存储器中的信息确定任何可得到的类的步骤。
12.如权利要求10所述的计算机可读介质,其特征在于,识别步骤还包括根据包含在封装程序请求内的信息确定任何可得到的类的步骤。
13.如权利要求10所述的计算机可读介质,其特征在于,提供步骤还包括下列步骤:
接收对包括在程序中的成份的引用;
接收对程序成份的文件位置的引用;以及
向链接编辑器提供程序成份和文件位置的标识。
14.如权利要求10所述的计算机可读介质,其特征在于,提供步骤还包括下列步骤:
确定程序的开始点;以及
向链接编辑器提供开始点的标识。
15.如权利要求10所述的计算机可读介质,其特征在于,提供步骤还包括下列步骤:
接收对要增加到程序包中的附加成份的引用;以及
向链接编辑器提供附加成份的标识。
16.如权利要求15所述的计算机可读介质,还包括向链接编辑器提供附加成份的文件位置的标识的步骤。
17.如权利要求10所述的计算机可读介质,还包括从链接编辑器接收一个程序包;以及向客户机发送所述程序包的步骤。
18.如权利要求17所述的计算机可读介质,还包括将一个程序包成份增加到已经存在于客户机上的成份中的步骤。
19.一种用于在分布式系统中执行程序的设备,包括:
用于接收为一个客户机上的远程执行封装程序的请求的装置;
用于识别在客户机可得到的程序中引用的任何类的装置;以及
用于向一个链接编辑器提供一个对于所识别类的引用的装置。
20.一种系统,包括
一个具有(a)处理器、(b)存储器和(c)包括虚拟机任务的运行环境的客户机;
一个具有(a)处理器、(b)存储器、(c)接口任务、(d)链接编辑器任务和(e)成份文件的服务器;以及
将客户机和服务器进行互连的网络。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US044900 | 1993-04-07 | ||
US09/044,900 US6493870B1 (en) | 1998-03-20 | 1998-03-20 | Methods and apparatus for packaging a program for remote execution |
US044,900 | 1998-03-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1233009A true CN1233009A (zh) | 1999-10-27 |
CN1154040C 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) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103595790A (zh) * | 2013-11-14 | 2014-02-19 | 华为技术有限公司 | 设备远程访问的方法、瘦客户端和虚拟机 |
WO2015027733A1 (zh) * | 2013-09-02 | 2015-03-05 | 深圳市华傲数据技术有限公司 | 一种分布式java程序运行方法、装置和系统 |
Families Citing this family (38)
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 |
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 |
US7853833B1 (en) | 2000-09-08 | 2010-12-14 | Corel Corporation | Method and apparatus for enhancing reliability of automated data processing |
US7747673B1 (en) * | 2000-09-08 | 2010-06-29 | Corel Corporation | Method and apparatus for communicating during automated data processing |
US6938030B1 (en) | 2000-09-08 | 2005-08-30 | Corel Corporation | Method and apparatus for facilitating accurate automated processing of data |
US6961922B1 (en) * | 2000-09-08 | 2005-11-01 | Corel Corporation | Method and apparatus for defining operations to be performed during automated data processing |
US6944865B1 (en) | 2000-09-08 | 2005-09-13 | Corel Corporation | Method and apparatus for saving a definition for automated data processing |
US6925593B1 (en) | 2000-09-08 | 2005-08-02 | Corel Corporation | Method and apparatus for transferring data during automated data processing |
US6868193B1 (en) | 2000-09-08 | 2005-03-15 | Corel Inc. | Method and apparatus for varying automated data processing |
US7296238B1 (en) | 2000-09-08 | 2007-11-13 | Corel Corporation | Method and apparatus for triggering automated processing of data |
US6850956B1 (en) | 2000-09-08 | 2005-02-01 | Corel Inc. | Method and apparatus for obtaining and storing data during 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 |
BR0209761A (pt) * | 2001-05-30 | 2006-02-07 | Research Motion Ltd | Sistema de processamento de aplicação de dispositivo de comunicação móvel |
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 |
EP1309220B1 (en) * | 2001-10-31 | 2009-08-05 | Hewlett-Packard Company, A Delaware Corporation | Data processing system and method |
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 |
CN113312109B (zh) * | 2021-06-24 | 2024-09-13 | 广州市思力智慧互联网科技有限公司 | 一种项目打包方法、装置及计算机设备 |
Family Cites Families (31)
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 |
-
1998
- 1998-03-20 US US09/044,900 patent/US6493870B1/en not_active Expired - Lifetime
-
1999
- 1999-03-18 JP JP11116931A patent/JP2000155686A/ja active Pending
- 1999-03-19 CN CNB991073819A patent/CN1154040C/zh not_active Expired - Lifetime
- 1999-03-19 EP EP99400684A patent/EP0950949A3/en not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015027733A1 (zh) * | 2013-09-02 | 2015-03-05 | 深圳市华傲数据技术有限公司 | 一种分布式java程序运行方法、装置和系统 |
CN103595790A (zh) * | 2013-11-14 | 2014-02-19 | 华为技术有限公司 | 设备远程访问的方法、瘦客户端和虚拟机 |
CN103595790B (zh) * | 2013-11-14 | 2017-01-04 | 华为技术有限公司 | 设备远程访问的方法、瘦客户端和虚拟机 |
US10042664B2 (en) | 2013-11-14 | 2018-08-07 | Huawei Technologies Co., Ltd. | Device remote access method, thin client, and virtual machine |
Also Published As
Publication number | Publication date |
---|---|
US6493870B1 (en) | 2002-12-10 |
EP0950949A2 (en) | 1999-10-20 |
CN1154040C (zh) | 2004-06-16 |
JP2000155686A (ja) | 2000-06-06 |
EP0950949A3 (en) | 2007-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1154040C (zh) | 封装程序供远程执行的方法和装置 | |
CN1205537C (zh) | 用于为远程执行链接程序的方法 | |
US6272674B1 (en) | Method and apparatus for loading a Java application program | |
US7047530B2 (en) | Method and system for cross platform, parallel processing | |
US6083279A (en) | Platform independent technique for transferring software programs over a network | |
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 | |
CN1113290C (zh) | 为应用程序透明地加载只读存储器中的资源的系统和方法 | |
US20050186625A1 (en) | Process and system for sharing program fragments | |
US6941552B1 (en) | Method and apparatus to retain applet security privileges outside of the Java virtual machine | |
US20010049713A1 (en) | Method and apparatus for dynamic distributed computing over a network | |
CN1298513A (zh) | 用于远程方法启用的方法和设备 | |
KR20030000926A (ko) | 정보 단말기의 자바 프로그램 처리 속도 향상을 위한 자바컴파일 온 디멘드 서비스 시스템 및 그 방법 | |
US20130290922A1 (en) | Specification files for call translation and trace | |
US7003764B2 (en) | Method and apparatus for dynamic configuration of a lexical analysis parser | |
WO1999008182A1 (en) | Method and apparatus for static and dynamic generation of information on a user interface | |
CN1447938A (zh) | 程序连接方法 | |
US7178140B2 (en) | Speeding up application downloading from a remote server | |
CN1592887A (zh) | 一种移动通信设备应用程序处理系统 | |
US7788649B1 (en) | Method and software for processing server pages | |
US20060242631A1 (en) | Process and system for sharing program fragments | |
US7512664B1 (en) | System and method for loading resolved java class files to a client device | |
KR20010041226A (ko) | 분산 시스템에서 원격 프로시져 호출에 연관된 프로세싱을 수행하기 위한 다운로드 가능한 스마트 플락시 | |
US20040163086A1 (en) | WebDAV servlet | |
EP1136910A2 (en) | A method of compiling code in an object oriented programming language |
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 |