|
Claims  |
|
|
We claim:
1. A device, for use in a digital computer system which provides for
objects of first and second object models and corresponding first and
second object systems using respective first and second implementations to
implement, respectively, the first and second object models, the device
for enabling the first object system to use objects of the second object
model, the device comprising:
description means for providing a description of an object of the second
object model;
proxy means for creating a proxy object that is an object of the first
object system and that corresponds to the object of the second object
model;
receiving means for receiving a manipulation of the proxy object, the
maximum rotation conforming to the first implementation; and
forwarding means for forwarding the manipulation of the proxy object to the
corresponding object of the second object model by utilizing the
description.
2. A device according to claim 1, for enabling the first object system to
use objects of a plurality of object models, wherein:
(a) the proxy means comprises means for creating a plurality of proxy
objects, each proxy being an object of the first object system and
corresponding with an object of one of the plurality of object models; and
(b) the forwarding means comprises means for forwarding manipulations of
one of the proxy objects to its corresponding object.
3. A device according to claim 2, wherein the device includes means for
adding or removing support for object systems and object models, said
means for adding or removing support adding or removing support without
compiling the device.
4. A device according to claim 2, further comprising a traditional
application or object class construction environment, said environment
comprising at least one of:
means for subclassing from object classes of a plurality of object systems;
means for utilizing or incorporating object classes of a plurality of
object systems;
means for instantiating and embedding object instances of a plurality of
object systems;
means for constructing objects which can be used according to
implementations of a plurality of object systems;
means for relocating object classes and objects among application
processes, server processes and object systems.
5. A device according to claim 1, wherein the forwarding means further
comprises:
means for transferring control flow from the digital computer system to the
device;
means for retrieving semantic information from a call stack of the digital
computer system, the semantic information and call stack being in
accordance with the proxy object and the first implementation;
means for placing the semantic information on a second call stack in
accordance with the description of the object of the second object model;
means for manipulating the corresponding object in accordance with the
manipulation of the proxy object;
means for retrieving semantic return information from the second call stack
in accordance with the description of the object of the second object
model; and
means for placing the semantic return information on the call stack of the
digital computer in accordance with the proxy object and the first
implementation.
6. A device according to claim 5, wherein the means for retrieving semantic
information further comprises means for associating the proxy object with
the description of the object of the second object model.
7. A device according to claim 6, wherein the means for placing semantic
information on the call stack further comprises means for traversing the
description of the object of the second object model, the description of
the object not being compiled into the device.
8. A device according to claim 5, wherein the means for placing semantic
information on the call stack further comprises means for converting
semantic types and language types from those used in the first
implementation to corresponding semantic types and language types of the
second implementation.
9. A device according to claim 8, wherein the means for converting semantic
types and language types further comprises:
means for converting between object types; and
means for triggering creation of a new proxy object.
10. A device according to claim 1, wherein the device further comprises at
least one of:
means for mapping between fundamental calling mechanisms; and
means for mapping between low-level calling conventions, wherein said means
for mapping between low-level calling conventions is used in combination
with at least one of:
means for mapping between differences in semantic types;
means for dynamically constructing proxy objects when required;
means for mapping between differences in errors and exceptions; and
means for mapping between differences in querying for object information.
11. A device according to claim 1, wherein the device further comprises
means for mapping between different fundamental calling mechanisms of
different object systems.
12. A device according to claim 1, wherein the device further comprises
means for mapping between fundamental calling mechanisms and means for
mapping between differences in language types.
13. A device according to claim 1, further comprising means for enabling
the first object system to use features that are provided by the second
object system, but are not provided by the first object system.
14. A device according to claim 1, further comprising means for using
features provided by the first object system which require functionality
of the proxy object, where such functionality is not implemented by the
second object system.
15. A device according to claim 14, wherein the means for using features
further comprises:
means for associating an object with one or more elements of the
description; and
means for delegating execution of a feature by the proxy object to the
associated object either before responding to a manipulation, instead of
responding to a manipulation, or after responding to a manipulation.
16. A device according to claim 1, where the corresponding object is
implemented using an interpreted language environment or runtime.
17. A method, for use in a digital computer system which provides for
objects of first and second object models and corresponding first and
second object systems using respective first and second implementations to
implement, respectively, the first and second object models, said method
for enabling the first object system to use objects of the second object
model, the method comprising:
providing a description of an object of the second object model;
creating a proxy object that is an object of the first object system and
that corresponds to the object of the second object model;
receiving a manipulation of the proxy object, the manipulation conforming
to the first implementation; and
forwarding the manipulation of the proxy object to the corresponding object
of the second object model by utilizing the description.
18. A method according to claim 17, for enabling the first object system to
use objects of a plurality of object models, wherein:
the creating step comprises creating a plurality of proxy objects, each one
being an object of the first object system and corresponding with an
object of one of the plurality of object models; and
the forwarding step comprises forwarding a manipulation of one of the proxy
objects to its corresponding object.
19. A method according to claim 18, further comprising the step of
organizing objects and classes from a plurality of object systems into a
unified namespace.
20. A method according to claim 18, further comprising at least one of the
steps of:
subclassing from object classes of a plurality of object systems;
utilizing or incorporating object classes of a plurality of object systems;
instantiating and embedding object instances of a plurality of object
systems;
relocating object classes and objects among application processes, server
processes and object systems; and
constructing objects which can be used by implementations of a plurality of
object systems.
21. A method according to claim 17, wherein the forwarding step further
comprises:
transferring control flow from the digital computer system to the device;
retrieving semantic information from a call stack of the digital computer
system, the semantic information and the call stack being in accordance
with the proxy object and the first implementation;
placing the semantic information on a second call stack in accordance with
a description of the object of the second object model;
manipulating the corresponding object in accordance with the manipulation
of the proxy object;
retrieving semantic return information from the second call stack in
accordance with the description of the object of the second object model;
and
placing the semantic return information on the call stack of the digital
computer in accordance with the proxy object and the first implementation.
22. A method according to claim 21, wherein the creating step further
comprises associating the proxy object with the description of the object
of the second object model.
23. A method according to claim 21, wherein the placing step further
comprises converting semantic and language types from the first object
system to the second object system.
24. A method according to claim 23, wherein the step of converting semantic
and language types further comprises:
converting between object types; and
triggering a creation of a new proxy object.
25. A method according to claim 17, further comprising:
mapping between fundamental calling mechanisms; and
mapping between low-level calling conventions, wherein said mapping between
low-level calling conventions is performed in combination with at least
one of the steps of:
mapping between differences in semantic types;
dynamically constructing proxy objects when required;
mapping between differences in errors and exceptions; and
mapping between differences in querying for object information.
26. A method according to claim 17, further comprising mapping between
different fundamental calling mechanisms of different object systems.
27. A method according to claim 17, further comprising the steps of mapping
between fundamental calling mechanisms and mapping between differences in
language types.
28. A method according to claim 17, further comprising the step of enabling
the first object system to use features that are provided by the second
object system, but are not provided by the first object system.
29. A method according to claim 17, further comprising the step of using
features provided by the first object system which require functionality
of the proxy object in the case that such functionality is not implemented
by the second object system.
30. A method according to claim 29, wherein the step of using features
comprises:
associating an object with one or more elements of the description; and
delegating execution of a feature by the proxy object to the associated
object either before responding to a manipulation, instead of responding
to a manipulation, or after responding to a manipulation.
31. A method according to claim 17, wherein the corresponding object is
implemented using an interpreted language environment or runtime.
32. Computer-executable process steps stored on a computer-readable medium,
the steps for use in a digital computer system which provides for objects
of first and second object models and corresponding first and second
object systems using respective first and second implementations to
implement, respectively, the first and second object models, the steps for
enabling the first object system to use objects of the second object
model, the steps comprising:
a providing step to provide a description of an object of the second object
model;
a creating step to create a proxy object that is an object of the first
object system and that corresponds to the object of the second object
model;
a receiving step to receive a manipulation of the proxy object, the
manipulation conforming to the first implementation; and
a forwarding step to forward the manipulation of the proxy object to the
corresponding object of the second object model by utilizing the
description.
33. Computer-executable process steps according to claim 32, wherein the
creating step further comprises an associating step to associate the proxy
object with the description of the object of the second object model.
34. Computer-executable process steps according to claim 32, for enabling
the first object system to use objects of a plurality of object systems,
wherein:
the creating step comprises a creating step to create a plurality of proxy
objects, each proxy being an object of the first object system and
corresponding to an object of one of the plurality of object models, and
the forwarding step comprises a forwarding step to forward a manipulation
of one of the proxy objects to its corresponding object.
35. Computer-executable process steps according to claim 34, further
comprising the step of organizing objects and classes from a plurality of
object systems into a unified namespace.
36. Computer-executable process steps according to claim 34, further
comprising at least one of the steps of:
a subclassing step to subclass from object classes of a plurality of object
systems;
a utilizing step to utilize or incorporate object classes of a plurality of
object systems; and
an instantiating step to instantiate and embed object instances of a
plurality of object systems;
a relocating step to relocate object classes and objects among application
processes and object systems;
a constructing step to construct objects which can be used by
implementations of a plurality of object systems.
37. Computer-executable process steps according to claim 36, wherein the
corresponding object is implemented using an interpreted language
environment or runtime.
38. Computer-executable process steps according to claim 32, wherein the
forwarding step further comprises:
a transferring step to transfer control flow from the digital computer
system to the device;
a first retrieving step to retrieve semantic information from a call stack
of the digital computer system, the semantic information and the call
stack being in accordance with the proxy object and the first
implementation;
a first placing step to place the semantic information on a call stack in
accordance with a description of the object of the second object model;
a manipulating step to manipulate the corresponding object in accordance
with the manipulation of the proxy object;
a second retrieving step for retrieving semantic return information from
the second call stack in accordance with the description of the object of
the second object model; and
a second placing step for placing the semantic return information on the
call stack of the digital computer in accordance with the proxy object and
the first implementation.
39. Computer-executable process steps according to claim 32, wherein the
first placing step further comprises a converting step to convert semantic
types and language types from the first object system to the second object
system.
40. Computer-executable process steps according to claim 32, wherein the
converting step to convert semantic types and language types further
comprises:
a converting step to convert between object types; and
a triggering step to trigger creation of a new proxy object.
41. Computer-executable process steps according to claim 32, further
comprising:
a mapping step to map between fundamental calling mechanisms; and
a mapping step to map between low-level calling conventions, wherein said
mapping between low-level calling conventions is performed in combination
with at least one of the steps of:
a mapping step to map between differences in semantic types;
a constructing step to dynamically construct proxy objects when required;
a mapping step to map between differences in errors and exceptions; and
a mapping step to map between differences in querying for object
information.
42. Computer-executable process steps according to claim 32, further
comprising a mapping step to map between different fundamental calling
mechanisms of different object systems.
43. Computer-executable process steps according to claim 32, further
comprising a mapping step to map between fundamental calling mechanisms
and a mapping step to map between differences in language types.
44. Computer-executable process steps according to claim 32, further
comprising a using step to use features that are provided by the second
object system but are not provided by the first object system.
45. Computer-executable process steps according to claim 32, further
comprising a using step to use features provided by the first object
system which require functionality of the proxy object in the case that
such functionality is not implemented by the second object system.
46. Computer-executable process steps according to claim 45, wherein the
step of using features comprises:
an associating step to associate an object with one or more elements of the
description; and
a delegating step to delegate execution of a feature by the proxy object to
the associated object either before acting on a manipulation, instead of
acting on a manipulation, or after acting on a manipulation.
47. A device, for use in a digital computer system providing objects of
first and second object systems using respective first and second
implementations which implement respective first and second object models,
the device for enabling the first object system to use an object of the
second object system, the device comprising:
description means for providing a description of object aspects, object
system aspects and object manipulations, said description describing first
semantic types, first aspects, or first implementations that are supported
by the first object system and not by the second object system and
describing second semantic types, second aspects or second implementations
supported by the second object system and not by the first object system;
and
forwarding means for forwarding a manipulation of a first object, the
manipulation in accordance with the first implementation, to the second
object by utilizing the description,
wherein the first object corresponds to the second object.
48. A device according to claim 47, wherein the forwarding means comprises
mapping means to map the first semantic types and the first
implementations to the second semantic types and the second
implementations dynamically during execution of the device.
49. A device according to claim 47, wherein the forwarding means comprises
mapping means to build steps for mapping the first semantic types and
first implementations to the second semantic types and second
implementations and execution means for executing the steps for mapping.
50. A method, for use in a digital computer system providing objects of
first and second object systems using respective first and second
implementations which implement respective first and second object models,
the method for enabling the first object system to use an object of the
second object system, the method comprising the steps of:
providing a description of object aspects, object system aspects and object
manipulations, said description describing first semantic types or first
implementations that are supported by the first object system and not by
the second object system and describing second semantic types or second
implementations supported by the second object system and not by the first
object system; and
forwarding a manipulation of a first object, the manipulation conforming to
the first implementation, to the second object by utilizing the
description,
wherein the first object corresponds to the second object.
51. A method according to claim 50, wherein the forwarding step comprises
mapping the first semantic types and the first implementations to the
second semantic types and the second implementations dynamically during
execution of the method.
52. A method according to claim 50, wherein the forwarding step comprises
building steps for mapping the first semantic types and first
implementations to the second semantic types and second implementations
and executing the steps for mapping.
53. Computer-executable process steps stored on a computer-readable medium,
the steps for use in a digital computer system providing objects of first
and second object systems using respective first and second
implementations which implement respective first and second object models,
the steps for enabling the first object system to use an object of the
second object system, the steps comprising the steps of:
a providing step to provide a description of object aspects, object system
aspects and object manipulations, said description describing first
semantic types or first implementations that are supported by the first
object system and not by the second object system and describing second
semantic types or second implementations supported by the second object
system and not by the first object system; and
a forwarding step to forward a manipulation of the first object, the
manipulation conforming to the first implementation, to the second object
by utilizing the description,
wherein the first object corresponds to the second object.
54. Computer-executable process steps according to claim 53, wherein the
forwarding step comprises mapping the first semantic types and the first
implementations to the second semantic types and the second
implementations dynamically during execution of the method.
55. Computer-executable process steps according to claim 53, wherein the
forwarding step comprises building steps for mapping the first semantic
types and first implementations to the second semantic types and second
implementations and executing the steps for mapping.
56. A method for utilizing a foreign object of a foreign object model
implemented by a foreign object system in the case that the foreign object
is called by a native object system implementing a native object model,
the method comprising the steps of:
creating a proxy object of the native object model, said proxy object
corresponding to the foreign object;
extracting semantically meaningful information from a call stack of the
native system;
transferring the semantically meaningful information to a call stack of the
foreign system; and
calling the foreign object.
57. A method according to claim 56, wherein
said extracting step comprises utilizing a description of the foreign
object to determine steps required to extract semantically meaningful
information from a call stack of the native object system in accordance
with the description of the proxy object, and
wherein said transferring step comprises performing the steps required to
extract the semantically meaningful information and transferring the
semantically meaningful information to a call stack of the foreign object
system in accordance with the description of the foreign object.
58. A method according to claim 57, wherein said extracting step further
comprises dynamically loading a device in order to utilize the
description.
59. A method according to claim 57, wherein, in the transferring step, the
semantically meaningful information is transferred to a call stack of any
of a plurality foreign object systems.
60. A method according to claim 57, wherein said transferring step further
comprises converting data types of the semantically meaningful information
extracted from the call stack of the native system to data types of the
foreign object model before transferring the semantically meaningful
information to the call stack of the foreign system.
61. A method according to claim 57, further comprising extracting
semantically meaningful return information from the call stack of the
foreign system by utilizing a description of the foreign object and
transferring the return information from the foreign object to the call
stack of the native system.
62. A method according to claim 57, wherein the foreign object provides
functionality to the native object system which cannot be provided by an
object of the native object system.
63. A device for utilizing a foreign object of a foreign object model
implemented by a foreign object system in the case that the foreign object
is called by a native object system implementing a native object model;
comprising;
creating means for creating a proxy object of the native object model, said
proxy object corresponding to the foreign object;
extracting means for extracting semantically meaningful information from a
call stack of the native system;
transferring means for transferring the semantically meaningful information
to a call stack of the foreign system; and
calling means for calling the foreign object.
64. A device according to claim 63, wherein
said extracting means comprises utilizing means for utilizing a description
of the foreign object to determine steps required to extract semantically
meaningful information from a call stack of the native object system in
accordance with the description, and
wherein said transferring means comprises performing means for performing
the steps required to extract the semantically meaningful information and
transferring means for transferring the semantically meaningful
information to a call stack of the foreign object system in accordance
with the description of the foreign object.
65. A device according to claim 64, wherein said extracting means further
comprises loading means for dynamically loading a device in order for the
utilizing means to utilize the description.
66. A device according to claim 64, wherein said transferring means
transfers the semantically meaningful information to a call stack of any
of a plurality foreign object systems.
67. A device according to claim 64, wherein said transferring means further
comprises converting means for converting data types of the semantically
meaningful information extracted from the call stack of the native system
to data types of the foreign object model before transferring the
semantically meaningful information to the call stack of the foreign
system.
68. A device according to claim 64, wherein said extracting means extracts
semantically meaningful return information from the call stack of the
foreign system by utilizing a description of the foreign object and said
transferring means transfers the return information from the foreign
object to the call stack of the native system.
69. A device according to claim 64, wherein the foreign object provides
functionality to the native object system which cannot be provided by an
object of the native object system.
70. Computer-executable process steps stored on a computer-readable medium,
the steps for utilizing a foreign object of a foreign object model
implemented by a foreign object system in the case that the foreign object
is called by a native object system implementing a native object model,
the steps comprising:
a creating step to create a proxy object of the native object model, said
proxy object corresponding to the foreign object;
an extracting to extract semantically meaningful information from a call
stack of the native system;
a transferring step to transfer the semantically meaningful information to
a call stack of the foreign system; and
a calling step to call the foreign object.
71. Computer-executable process steps according to claim 70, wherein
said extracting step comprises a utilizing step to utilize a description of
the proxy object so as to determine steps required to extract semantically
meaningful information from a call stack of the native object system in
accordance with the description of the foreign object, and
wherein said transferring step comprises a performing step to perform the
steps required to extract the semantically meaningful information and to
transfer the semantically meaningful information to a call stack of the
foreign object system in accordance with the description of the foreign
object.
72. Computer-executable process steps according to claim 71, wherein said
extracting step further comprises a loading step to dynamically load a
device in order to utilize the description.
73. Computer-executable process steps according to claim 71, wherein, in
the transferring step, the semantically meaningful information is
transferred to a call stack of any of a plurality foreign object systems.
74. Computer-executable process steps according to claim 71, wherein said
transferring step further comprises a converting step to convert data
types of the semantically meaningful information extracted from the call
stack of the native system to data types of the foreign object model
before transferring the semantically meaningful information to the call
stack of the foreign system.
75. Computer-executable process steps according to claim 71, further
comprising a second extracting step to extract semantically meaningful
return information from the call stack of the foreign system by utilizing
a description of the foreign object and a second transferring step to
transfer the return information from the foreign object to the call stack
of the native system.
76. Computer-executable process steps according to claim 71, wherein the
foreign object provides functionality to the native object system which
cannot be provided by an object of the native object system.
77. A device, for use in a digital computer system providing a plurality of
processes and object systems, the device for enabling a native object
system having a native implementation for implementing a native object
model and located in a first process to use an object located in a second
process via a foreign object system using a foreign object model, the
device comprising:
description means for providing a description of the object;
proxy means for creating a proxy object conforming to the native object
system that corresponds with the object located in the second process;
receiving means for receiving a manipulation of the proxy object, the
manipulation conforming to the native implementation; and
forwarding means for forwarding the manipulation of the proxy object to the
corresponding object by utilizing the description and the foreign object
system.
78. A method, for use in a digital computer system providing a plurality of
processes and object systems, the method for enabling a native object
system having a native implementation and located in a first process to
use an object located in a second process via a foreign object system
using a foreign object model, the method comprising:
providing a description of the object;
creating a proxy object conforming to the native object system that
corresponds with the object located in the second process;
receiving a manipulation of the proxy object, the manipulation conforming
to the native implementation; and
forwarding the manipulation of the proxy object to the corresponding object
by utilizing the description and the foreign object system.
79. Computer-executable process steps stored on a computer-readable medium,
the steps for use in a digital computer system providing a plurality of
processes and object systems, the steps for enabling a native object
system having a native implementation and located in a first process to
use an object located in a second process via a foreign object system
using a foreign object model, the steps comprising:
a providing step to provide a description of the object;
a creating step to create a proxy object conforming to the native object
system that corresponds with the object located in the second process;
a receiving step to receive a manipulation of the proxy object, the
manipulation conforming to the native implementation; and
a forwarding step to forward the manipulation of the proxy object to the
corresponding object by utilizing the description and the foreign object
system.
80. A device according to claims 1, 47 or 77, wherein an implementation
includes fundamental calling conventions and low-level calling
conventions.
81. (Amended) A method according to claims 17, 50 or 78 wherein an
implementation includes fundamental calling conventions and low-level
calling conventions.
82. Computer-executable process steps according to claims 32, 53 or 79,
wherein an implementation includes fundamental calling conventions and
low-level calling conventions.
83. A device according to claims 1, 47, 64, or 77, wherein a description
describes both semantic information and implementation information.
84. A device according to claim 83, wherein the device provides an
application programming interface to enable a system or an object to be
described to the device.
85. A device according to claim 83, wherein the device provides an
application programming interface to a plurality of programming languages,
the application programming interface enabling elements of a programming
language to emulate an object of an object system.
86. A method according to claims 17, 50, 57, or 78, wherein a description
describes both semantic information and implementation information.
87. A method according to claim 86, further comprising providing an
application programing interface to enable an object system or an object
to be described.
88. A method according to claim 86, further comprising providing an
application programming interface to a plurality of programing languages,
the application programming interface enabling elements of a programing
language to emulate an object of an object system.
89. Computer-executable process steps according to claims 32, 53, 71, or
79, wherein a description describes both semantic information and
implementation information.
90. Computer-executable process steps according to claim 89, further
comprising a providing step to provide an application programming
interface to enable an object system or an object to be described.
91. A method according to claim 90, further comprising a providing step to
provide an application programming interface to a plurality of programming
languages, the application programming interface enabling elements of the
language to emulate an object of an object system.
92. A device according to claims 47, 63, or 77, further comprising means
for organizing objects from a plurality of object systems into a unified
namespace.
93. A method according to claims 50, 57, or 78, further comprising
organizing objects from a plurality of object systems into a unified
namespace.
94. Computer-executable process steps according to claims 53, 70 or 79,
further comprising an organizing step to organize objects from a plurality
of object systems into a unified namespace.
95. A device according to claims 47, 63, or 77, further comprising means
for dynamically relocating objects among application processes, server
processes or object systems.
96. A method according to claims 50, 57, or 78, further comprising
dynamically relocating objects among application processes, server
processes or objec | | |