Method and system for customized programmatic dynamic creation of interoperability content
First Claim
1. A method for generating self-distributing and self-contained cross-device application packages that are configured to self-deploy and self-customize across a plurality of devices having heterogeneous characteristics or in configurations that were not known at the time the application packages were first built or first deployed, the method comprising:
- forming the or each application package as a plurality of linear binary parts that include executable parts and data parts including all executable application program instructions and are self-contained, pre-compiled, and pre-linked so as not to require any further compilation or linking for execution;
beginning executing a first application package on a first device including executing a first runtime;
during execution of the first application package on the first device identifying a second device and collected conditions of the second device;
generating a new application package customized for the second device on the first device using the received collected conditions, wherein the collected conditions of the second device include at least one collected condition that was not known at the time the first application package was first built or first deployed to the first device and which at least one collected condition requires a modification or customization of the first application package in the new application package for execution in the second device;
sending the new custom application package customized for the second device to the second device for execution on the second device;
executing the new custom application package on the second device while continuing execution of the first application package on the first device; and
extending the execution and effective single unified runtime of all application packages across the plurality of devices including the first application package executing on the first device and the new customized application package executing on the second device.
5 Assignments
0 Petitions
Accused Products
Abstract
System, device, method, and computer program and computer program products for providing communicating between devices having similar or dissimilar characteristics and facilitating seamless interoperability between them. Computer program software and methods of and systems and devices for sharing of content, applications, resources and control across similar and dissimilar permanently or intermittently connected electronic devices. Devices, systems, appliances, and the like communicating and/or interoperating within the framework provided. Creationism provides a method used by applications or Darts to dynamically generate applications or Darts highly customized for a particular target device and/or communications session and/or purpose. Instructions in the instruction set exist for programmatic generation of Darts from parts of the running Dart itself and any information that can be collected or computed by the running Dart.
100 Citations
22 Claims
-
1. A method for generating self-distributing and self-contained cross-device application packages that are configured to self-deploy and self-customize across a plurality of devices having heterogeneous characteristics or in configurations that were not known at the time the application packages were first built or first deployed, the method comprising:
-
forming the or each application package as a plurality of linear binary parts that include executable parts and data parts including all executable application program instructions and are self-contained, pre-compiled, and pre-linked so as not to require any further compilation or linking for execution; beginning executing a first application package on a first device including executing a first runtime; during execution of the first application package on the first device identifying a second device and collected conditions of the second device; generating a new application package customized for the second device on the first device using the received collected conditions, wherein the collected conditions of the second device include at least one collected condition that was not known at the time the first application package was first built or first deployed to the first device and which at least one collected condition requires a modification or customization of the first application package in the new application package for execution in the second device; sending the new custom application package customized for the second device to the second device for execution on the second device; executing the new custom application package on the second device while continuing execution of the first application package on the first device; and extending the execution and effective single unified runtime of all application packages across the plurality of devices including the first application package executing on the first device and the new customized application package executing on the second device.
-
-
2. A method as in claim 1, further comprising generating an arbitrary plurality of customized application packages for an arbitrary plurality of heterogeneous devices;
- and extending the execution and effective single unified runtime to an arbitrary plurality of devices.
-
3. A method as in claim 1, wherein the during execution of the first application package on the first device identifying a second device and conditions and characteristics of the second device further comprises:
-
communicating a conditions discovery application portion of the first application package to a second device for execution on the second device; executing the discovery application portion on the second device to discover and collect conditions of the second device; sending by the second device to the first device, the collected conditions of the second device; and receiving by the first device, the collected conditions of the second device.
-
-
4. A method as in claim 1, wherein the new custom executable package of parts are formed using a part packaging instruction set of the software or hardware executing instructions in the application package to either (i) modifying an existing application package subset(s) of parts, or (ii) create a new dispatchable package(s) of parts of the application by inserting parts into a new application package or by deleting parts from the application package.
-
5. A method as in claim 1, further comprising:
- (c) extending the execution and effective single runtime of the application package across the plurality of devices including the first device and the second device by sending over a communication link the customized package of parts to run on a device as part of the team of devices that is to carry out an intent of the application package.
-
6. A method as in claim 5, wherein the extending of execution from the first device to the second device is an extending of execution of the already running inter-device application package running on the first device.
-
7. A method as in claim 6, wherein the extending of execution is extending without re-linking or recompiling of the application program to be executed.
-
8. A method as in claim 1, wherein the application package dynamically adapts itself to conditions encountered during its own execution on the first device by computationally forming new custom executable packages of parts to send to execute on other of the plurality of devices including on the second device that are unified as a team acting as a single unified device by the receipt and execution of the new custom executable packages of parts cross device event driven runtime that is to carry out an intent of the original application package.
-
9. A method as in claim 1, wherein said collected conditions are selected from:
- device processor or CPU speed, RAM memory available, storage available, characteristics of communications protocol, setup time, reliability, communication rates, traffic types, security, configuration of devices in the team of devices, a user input, a characteristics of media or data, a size of media or datasets being processed, a number of media elements or data set elements, a complexity of media or data sets, a format of media or data sets, mode or state of application, failures of devices already in the team, a failures of devices already in the team, and any failures of communications between devices.
-
10. A method as in claim 1, wherein said collected conditions include processor or CPU speed, available RAM memory, characteristics of communications protocol, a characteristics of media or data, a size of media or datasets being processed, a number of media elements or data set elements, a complexity of media or data sets, a format of media or data sets, and mode or state of the application to be executed.
-
11. A method as in claim 4, wherein the part packaging instructions are configured to perform the following operations:
-
create or copy an existing application package or subset of the application package to generate a new application package with a new identifier; copy an existing dispatchable Dart Rendition having a unit of parts to the created or copied new application package; add new Dart Rendition to package; add a part to a new Dart Rendition; save new package of Dart Renditions to physical or logical file; and send the new physical or logical package file to run on another device while extending the runtime of the original application package to include the new package sent to run on another device as part of the unified team.
-
-
12. A method as in claim 4, wherein
said customized application package of parts conforms to the Dart Format; -
said customized application package of parts is a single Dart Rendition or set of Dart Renditions packaged to conform to the Dart Format; said event-driven cross-device runtime is the Dart Runtime; and said deployment of customized packages is carried out using the method of Dart Recruitment.
-
-
13. A method as in claim 1, wherein said new custom application package includes only executable instruction code that existed in the original application package.
-
14. A method as in claim 1, wherein said application package is an application package having a Dart Format comprising a fiat linear contiguous binary multi-device application package database image comprising:
-
(i) one contiguous linear program executable code part with an assigned address space used to index into the code when the code is running; (ii) one contiguous linear program addressable data part assigned address space used by the said executable code part to read and write data to storage; (iii) zero or many contiguous media or binary data parts; (iv) one linear contiguous parts table indicating where each contiguous linear binary part is to be found in the said flat linear binary image; (v) one or more contiguous list of part ids for looking up the beginning and length of a specified part in the parts table that indicates all the parts needed to serve as a dispatchable executable package to be deployed on another device as an extension of the application package runtime, to be called a rendition; and (vi) one contiguous list of the part identifiers (IDs) of the renditions lists.
-
-
15. A method as in claim 1, wherein the application package includes application parts and executes a Dart Instruction Set that is a Turing complete computer executable instruction set and includes the following required additional instruction elements and features:
-
(i) instructions used to logically or physically add or delete said parts into a Dart Format binary image; (ii) instructions used to logically or physically add rendition lists and rendition part id lists to a Dart Format binary image; (iii) instructions for exposing new application program interfaces (APIs), state and device characteristics to running cross-device application packages loaded from a Dart Format image; (iv) instructions for deploying renditions across communicating devices; and (v) instructions for synchronizing events that drive and manage the operations of a multi-device application package that is running across devices.
-
-
16. A method as in claim 15, wherein said Dart Format comprises a flat linear contiguous binary multi-device application package database image comprising:
-
(i) one contiguous linear program executable code part with an assigned address space used to index into the code when the code is running; (ii) one contiguous linear program addressable data part assigned address space used by the said executable code part to read and write data to storage; (iii) zero or many contiguous media or binary data parts; (iv) one linear contiguous parts table indicating where each contiguous linear binary part (as in (i), (ii), and (iii)) is to be found in the said flat linear binary image; (v) one or more contiguous list of part ids for looking up the beginning and length of a specified part in the parts table that indicates all the parts needed to serve as a dispatchable executable package to be deployed on another device as an extension of the application package runtime, to be called a rendition; and (vi) one contiguous list of the part identifiers (IDs) of the renditions lists.
-
-
17. A method as in claim 1, wherein said single runtime comprises a Dart Runtime that provides cross rendition flow of events signaled and processed across a deployed running multi-device application package so that the application package functions when running on a plurality of devices including on said first device and said second device as if it were running on one logical device.
-
18. A method as in claim 12, wherein said Dart Recruitment procedure is configured as an executable code procedure that is sent to run on the second device as a candidate devices to evaluate how or whether the application should be spread to it by sending rendition parts of the application package itself to extend the application package'"'"'s execution to the second device.
-
19. A method as in claim 15, wherein said Dart Instruction Set is adapted for execution in a device having a Dart Engine that includes a computer program for execution in a processor and memory coupled to the processor of the device and that executes the Dart Instruction Set and carries out the called for operation.
-
20. A computer program product stored in a computer readable media for use in conjunction with a computing device or information appliance having a processor for executing computer instructions, the computer program product comprising a computer readable storage medium and a computer program mechanism embedded therein, the computer program mechanism comprising:
-
a program module that directs the device or information appliance to function in a specified manner for enabling generating self-distributing and self-contained cross-device application packages that are configured to self-deploy and self-customize across a plurality of devices having heterogeneous characteristics or in configurations that were not known at the time the application packages were first built or first deployed, the program module including instructions for; forming the or each application package as a plurality of linear binary parts that include executable parts and data parts including all executable application program instructions and are self-contained, pre-compiled, and pre-linked so as not to require any further compilation or linking for execution; beginning executing a first application package on a first device including executing a first runtime; during execution of the first application package on the first device identifying a second device and collected conditions of the second device; generating a new application package customized for the second device on the first device using the received collected conditions, wherein the collected conditions of the second device include at least one collected condition that was not known at the time the first application package was first built or first deployed to the first device and which at least one collected condition requires a modification or customization of the first application package in the new application package for execution in the second device; sending the new custom application package customized for the second device to the second device for execution on the second device; executing the new custom application package on the second device while continuing execution of the first application package on the first device; and extending the execution and effective single unified runtime of all application packages across the plurality of devices including the first application package executing on the first device and the new customized application package executing on the second device.
-
-
21. A device for generating self-distributing and self-contained cross-device application packages that are configured to self-deploy and self-customize across a plurality of devices having heterogeneous characteristics or in configurations that were not known at the time the application packages were first built or first deployed, comprising:
-
means for forming the or each application package as a plurality of linear binary parts that include executable parts and data parts including all executable application program instructions and are self-contained, pre-compiled, and pre-linked so as not to require any further compilation or linking for execution; means for beginning executing a first application package on a first device including executing a first runtime; means for identifying a second device and collected conditions of the second device during execution of the first application package on the first device; means for generating a new application package customized for the second device on the first device using the received collected conditions, wherein the collected conditions of the second device include at least one collected condition that was not known at the time the first application package was first built or first deployed to the first device and which at least one collected condition requires a modification or customization of the first application package in the new application package for execution in the second device; means for sending the new custom application package customized for the second device to the second device for execution on the second device; means for executing the new custom application package on the second device while continuing execution of the first application package on the first device; and means for extending the execution and effective single unified runtime of all application packages across the plurality of devices including the first application package executing on the first device and the new customized application package executing on the second device.
-
-
22. A computer implemented method comprising:
-
executing a cross-device application package of linear binary parts on a first device that dynamically adapts itself to conditions encountered during its execution by computationally forming new custom executable packages of parts to send to execute on other devices that are to be part of a formed team of devices to be included in the cross device event driven runtime that is to carry out an intended function of the original application package; collecting conditions encountered during execution; using the part packaging instruction set of the software or hardware carrying out the said application package instructions to modify existing package subsets of parts, or create new dispatchable packages of parts of the application to insert and delete parts; and extending the execution and effective runtime of the application package across at least one of the other devices by sending over a communication link the customized package of parts to run on the other device as part of the formed team of devices that is to carry out an the intended function of the application package.
-
Specification