Methods and apparatus for linking a program for remote...

Data processing: software development – installation – and managem – Software program development tool – Translation of code

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C717S152000

Reexamination Certificate

active

06199196

ABSTRACT:

BACKGROUND OF THE INVENTION
A. Field of the Invention
Embodiments of the invention generally relate to distributed computer systems and, more particularly, to methods and apparatus for packaging a computer program for remote execution.
B. Description of the Related Art
In today's society, the Internet has become an important medium for information exchange. Although the Internet is now very popular among the general public, it initially began as a system (or network) of interconnected computers used by government and academic researchers. An early problem of this network stemmed from the fact that the interconnected computers were not the same; they employed different hardware as well as different operating systems. Information exchange on such a heterogeneous network posed a communication problem. This problem was resolved through agreement on common standards, including protocols such as Transmission Control Protocol/Internet Protocol (TCP/IP) and HyperText Transfer Protocol (HTTP). These protocols enabled varied interconnected machines to share information in the form of static text or graphic documents.
These protocols, however, represented only two steps in the evolution of the Internet. Although users can exchange information documents among varied computers connected to the Internet, they cannot exchange executable application programs written in conventional languages such as C or C++, which are designed to interface with a particular processor (e.g., the Intel Pentium processor) and/or a particular operating system (e.g., Windows 95 or DOS). This problem was solved with the advent of the Java™ programming language and its related runtime system.
The Java programming language is an object-oriented programming language that is described, for example, in a text entitled “The Java™ Tutorial” by Mary Campione and Kalhy Walrath, Addison-Wesley, 1996.
1
Importantly, the Java programming language is an interpreted language that is platform-independent-that is, its utility is not limited to one particular computer system. Using the Java programming language, a software developer writes programs in a form commonly called Java source code. When the developer completes authoring the program, he then compiles it with a Java compiler into an intermediate form called bytecode. Both the Java source code and the bytecode are platform-independent.
1
Sun, Sun Microsystems, the Sun Logo, Java, the Java Virtual Machine, and the Java Runtime Environment are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.
The compiled bytecode can then be executed on any computer system that employs a compatible runtime system that includes a virtual machine (VM), such as the Java Runtime Environment (JRE) that includes the Java Virtual Machine (JVM) and Java class libraries. The JVM is described in a text entitled “The Java Virtual Machine Specification,” by Tim Lindholm and Frank Yellin, Addison Wesley, 1996. The Java VM acts as an interpreter between the bytecode and the particular computer system being used. By use of platform-independent bytecode and the Java VM, a program written in the Java programming language can be executed on any computer system. This is particularly useful in networks such as the Internet that interconnect heterogeneous computer systems.
Before a Java program can be executed, certain requisite classes must be loaded into the memory of the computer executing the program. These classes may be loaded from the computer's disk, but are more commonly transferred across a network from a server. Customarily, these classes are loaded as late during the program's execution as possible; in otier words, they are loaded on-demand, when first referenced during the program's execution. When such loading occurs, it is also customary to load an entire class whenever any part of that class is necessary.
According to a conventional approach, when a user on a machine issues a request to execute the program resident on a remote server, the class file containing the main method is loaded from the server to the client across the network. This class file contains the program bytecode. The virtual machine then begins execution by invoking the main method of the program.
Execution continues until the program references a component, for example a component referred to as “F.” In response to this reference, the entire class that contains component F is transferred from class files on the server to the client via the network. The referenced component F is used and execution then continues until another component, for example a component referred to as “G,” is referenced. In response to this reference, the entire class containing component G is transferred from class files on the server to the client via the network. Execution then continues to completion. Once the execution has completed, the series of connections between the client and the server over the network may finally be terminated.
This description demonstrates two significant disadvantages with the conventional approach. First, it requires repeated connections between the client and the server throughout the course of program execution. Such a lengthy period during which connections must be made may be problematic for situations such as mobile computing. Second, whenever a component is referenced, for example, component F, this approach requires that the entire class containing that referenced component be loaded from the server. If, however, only a few of the components within the class are ultimately used, the bandwidth required to transfer the unused components from the server to the client has been wasted. This is problematic in situations involving limited bandwidth, i.e., slow connection speeds or high-latency connections, between the client and the server.
There is therefore a need for a system that alleviates these problems by packaging together only the necessary components of an entire program and delivering it to the client before execution begins. Prepackaging software for remote execution has been employed using other compiled computer languages requiring machine compatibility, such as Cobol, C and Fortran. It has not, however, been employed using an object-oriented languages, such as the Java programming language, which provide additional benefits, such as extracting necessary components from their parent classes.
SUMMARY OF THE INVENTION
In accordance with the present invention, a method for packaging a program component for execution in a distributed system comprises the steps of determining a component referenced by a program, extracting the component from a stored class, and generating a package that includes the program and the extracted component.
In accordance with the present invention, a computer-readable medium contains instructions for packaging a program component for execution in a distributed system by deternining a component referenced by a program, extracting the component from a stored class, and generating a package that includes the program and the extracted component.
In accordance with the present invention, an apparatus for packaging a program component for execution in a distributed system comprises means for determining a component referenced by a program, means for extracting the component from a stored class, and means for generating a package that includes the program and the extracted component.
In accordance with the present invention, a system comprises a client, a server, and a network. The client has a processor, a memory, and a runtime environment including a virtual machine task. The server has a processor, a memory, an interface task, a linkage editor task, and a component file. The network interconnects the client and the server.


REFERENCES:
patent: 5519866 (1996-05-01), Lawrence et al.
patent: 5553290 (1996-09-01), Calvert et al.
patent: 5590331 (1996-12-01), Lewis et al.
patent: 5603031 (1997-02-01), White et al.
patent: 5727147 (1998-03-01), Hoff
patent: 5790796 (1998-08-01), Sadowsky
patent: 5802514 (199

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Methods and apparatus for linking a program for remote... does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Methods and apparatus for linking a program for remote..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Methods and apparatus for linking a program for remote... will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-2499900

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.