The present invention relates to the field of distributed computer systems. More specifically, the present invention relates to a virtual machine or device that facilitates interoperability between two or more computers included in the computer system. According to one aspect of the present invention, a pair of software devices enables two or more dissimilar computers to run the same exact software program without modification or recompilation of the software program.
Several services within the U.S. Military often need to interoperate, i.e., interact and communicate, with one another to carry out Joint Missions. More specifically, the participants in a Joint Mission must be able to share information including text data, images, and, more importantly, various computer generated displays of consolidated tactical information.
It will be appreciated that the various components of the U.S. Military use a heterogeneous collection of computers running a wide variety of operating systems, e.g., MS-DOS, Windows 3.1, Windows-95, Windows-NT, O/S-2, Macintosh O/S, and several versions of UNIX. The number of different systems which must be interconnected varies with each Joint Mission, making it extremely difficult for the components of the U.S. Military to interoperate. In particular, it is extremely difficult for the various military components to share a homogeneous view of tactical information. The degree of difficulty is often increased when the various military components are physically separated from one another over long distances. Although communication channels are available to interconnect the various computers, wide geographic separation generally dictates the use of a narrow band communications link.
Military components can share text data, maps and/or photographs used in conveying tactical data, after a fashion, even when using dissimilar computers. For example, map data may be displayed using a particular computer program, assuming that a version of the particular computer program tailored to run on each variation of the individual computers forming a computer system is available. It should be mentioned, however, that each branch of the service often uses branch-specific symbols in displaying information; the Army may designate ground troops using one symbol while the naval vessels providing fire support may use a completely different symbol to represent the identical ground troops. Moreover, the U.S. Military is often required to expend manpower and finds to generate a computer program for each variation of computer used in the Joint Mission.
It will be appreciated that the foregoing discussion assumes that several versions of the same program can be installed on the various computers being networked to one another; the problem is exacerbated when the computer systems which must be networked are running incompatible operating systems. For example, the Joint Mission parameters often dictate that a UNIX computer acting as a server, i.e., the computer providing data, be interconnected to various desktop computer and workstation clients, i.e., the computers receiving the data, which clients are running several other incompatible operating systems.
The advent of the Internet, and particularly the World Wide Web (the Web), has provided at least two technical advances which promise to preserve the investment made by large computer operators such as the U.S. Military in hardware, software and training. In particular, these two technical advances provide techniques for distributing applications, or pseudo-applications within hypertext markup language (HTML) documents sent by the server to at least one client over the public Internet or a private Intranet. The latter case will be discussed first.
It is now possible for servers to provide clients with HTML documents having expanded capabilities by virtue of their use of a scripting language such as JavaScript.TM., i.e., a limited programming language designed to extend the capabilities of another application. For example, the numerical clock illustrated in FIG. 1 was generated by the JavaScript.TM. routine also illustrated in FIG. 1. The JavaScript.TM. routine is downloaded to a client running an appropriate JavaScript.TM. Interpreter, which causes the client computer to display, by way of another example, an order form (not shown) in the downloaded Web page. It will be appreciated that the data generated using the JavaScript.TM. form is transferred to a common gateway interface (CGI) program in the conventional manner.
Alternatively, the server may provide clients with Java applications (Applets) embedded into the HTML document. It will be appreciated that a Java Applet is a small program which can be run automatically as soon as the associated HTML document is transferred from the server to the client(s); several Java Applets may be transferred to a client within a single HTML document.
It should be mentioned that Java Applets are compiled applications just as word processing programs are compiled applications. The programmer generates the needed Java program and then compiles the program using a dedicated Java Compiler. Errors in the program code will require debugging, as in any compiled program. Once the program has been compiled, the program is stored on the server and a corresponding tag is inserted into the HTML document which will eventually be used to transfer the Java Applet from the server to the client(s). After the HTML document is transferred, the JAVA Applet is invoked and starts to run on a JAVA Virtual Machine associated with a JAVA-enabled Web browser on the client(s).
Thus, current technology is moving away from fat clients, i.e., full programs, to thin clients, i.e., JAVA Applets. The principal advantage to the latter approach is in program configuration control, i.e., just the server side program is updated; the client automatically receives the latest version, for example, of the JAVA Applet when the associated HTML document is transferred to the client(s). However, the programmer must still develop one or more new JAVA Applets for each server application being run. Thus, for a server storing several different databases needed during a Joint Mission, the programmer must write at least one JAVA Applet so that the client(s) can effectively interface with each database. Moreover, when the data is not simple alphanumeric data, it may be necessary for the programmer to develop specific versions of the JAVA Applets for each command, each service branch, etc., so that branch-specific symbology can be displayed.
In short, an unacceptable amount of time and money is still required to ensure interoperability between the participants of the Joint Mission, even after moving from the fat client approach to the thin client approach to facilitate configuration control. Although one could rely solely on JavaScript for simple data presentation applications, the capabilities of JavaScript.TM. would quickly be exhausted. While the JavaScript-enhanced Web pages save programming time over the programming of JAVA.TM. Applets, principally because JavaScript-extended HTML documents do not require repeated compilation and debugging, the number of serious applications which can be performed solely by means of a JavaScript-extended HTML document is severely limited. Thus, JAVA.TM. applets and JavaScript-extended HTML documents occupy two different ends of the spectrum of GUI presentation options. JAVA.TM. applets must be compiled for each platform and, thus, do not provide an avenue to significant cost savings while permitting decreased development time. JavaScript-extended HTML documents, while eliminating compilation time and the shortening development cycle, are incapable of providing versatile GUIs for presenting complex information to a wide variety of diverse computers.
What is needed is a computer network or system wherein various miliary components can use the same computer program and share information beyond the visualization of a map, text or photograph regardless of variations in the individual components of the system. Moreover, what is needed is a practical device which enables each military component to quickly and easily personalize the client, i.e., user, front end, which front end presents graphical user interface (GUI) objects to the user, without the need to modify the same software program application used by all of the other military components connected to the same network. In short, what is needed is a computer system and corresponding method of operation wherein the Government achieves military component interoperability and cost savings irrespective of computer variation and architecture.