Facilitating the interoperability of virtual machines
AssigneeRed Hat, Inc.
InventorMladen Turk
Life of this patent
Estimating the term…
Abstract
The interoperability between objects in multiple virtual machines that are written to support different languages, such as .NET and Java is managed. In particular, objects or programs running inside a virtual machine are allowed to create, control, and destroy objects running inside a separate virtual machine. The virtual machines interoperate using a proxy mechanism that utilizes function calls, rather than data passing, to run and access the desired objects.
Claims27
A method comprising:
- receiving, by a shadow object running within a source virtual machine on a first device, a request from a local object running within the source virtual machine for access to a foreign object running in a target virtual machine on at least one of the first device or a second device, wherein the shadow object was created in view of at least one of source code or binary code of the foreign object, and wherein the local object is one of either a first object operable in a first virtual machine or a second object operable in a second virtual machine and the foreign object is the other one of the first object or the second object;
- calling, by the shadow object running in the source virtual machine, the foreign object running in the target virtual machine in response to the request, the calling comprising making a local function call;
- and
- receiving, by the shadow object, data from a native class wrapper running in the target virtual machine, the data originating from the foreign object and being related to the request, wherein the native class wrapper was created in view of at least one of the source code or the binary code of the foreign object.
A method comprising:
- receiving, by a local object running in a target virtual machine on a first device, a call from a shadow object running in a source virtual machine on at least one of the first device or a second device, wherein the shadow object was created in view of at least one of source code or binary code of the local object;
- receiving, by a native class wrapper running in the target machine, data from the local object responsive to the call, wherein the native class wrapper was created in view of at least one of the source code or the binary code of the local object;
- and
- forwarding the data to the shadow object by the native class wrapper, wherein the shadow object will forward the data to a remote object running in the source virtual machine that requested access to the local object, wherein the local object is one of either a first object operable in a first virtual machine or a second object operable in a second virtual machine and the remote object is the other one of the first object or the second object.
A non-transitory computer readable storage medium having instructions that, when executed by a first device, cause the first device to perform operations comprising:
- receiving, by a shadow object running within a source virtual machine on the first device, a request from a local object running within the source virtual machine for access to a foreign object running in a target virtual machine on at least one of the first device or a second device, wherein the shadow object was created in view of at least one of source code or binary code of the foreign object, and wherein the local object is one of either a first object operable in a first virtual machine or a second object operable in a second virtual machine and the foreign object is the other one of the first object or the second object;
- calling, by the shadow object running in the source virtual machine, the foreign object running in the target virtual machine in response to the request;
- and
- receiving, by the shadow object, data from a native class wrapper running in the target virtual machine, the data originating from the foreign object and being related to the request, wherein the native class wrapper was created in view of at least one of the source code or the binary code of the foreign object.
A non-transitory computer readable storage medium having instructions that, when executed by a first device, cause the first device to perform operations comprising:
- receiving, by a local object running in a target virtual machine on the first device, a call from a shadow object running in a source virtual machine on at least one of the first device or a second device, wherein the shadow object was created in view of at least one of source code or binary code of the local object;
- receiving, by a native class wrapper running in the target machine, data from the local object responsive to the call, wherein the native class wrapper was created in view of at least one of the source code or the binary code of the local object;
- and
- forwarding the data to the shadow object by the native class wrapper, wherein the shadow object will forward the data to a remote object running in the source virtual machine that requested access to the local object, wherein the local object is one of either a first object operable in a first virtual machine or a second object operable in a second virtual machine and the remote object is the other one of the first object or the second object.
A system comprising:
- a first device comprising a memory to store instructions for a shadow object and for a source virtual machine and a processor, coupled to the memory, to execute the instructions for the shadow object and for the source virtual machine, wherein the shadow object is to:
- receive a request from a local object running within the source virtual machine for access to a foreign object running in a target virtual machine on at least one of the first device or a second device, wherein the shadow object was created in view of at least one of source code or binary code of the foreign object, and wherein the local object is one of either a first object operable in a first virtual machine or a second object operable in a second virtual machine and the foreign object is the other one of the first object or the second object;
- call the foreign object running in the target virtual machine in response to the request;
- and
- receive data from a native class wrapper running in the target virtual machine, the data originating from the foreign object and being related to the request, wherein the native class wrapper was created in view of at least one of the source code or the binary code of the foreign object.
Dependencies are inferred from the claim text.