A method for offloading execution load from a resource-constrained device to
allow
the device to run a resource intensive software program. A program is accessed
using a first device and determines whether execution of the program will exceed
resources of the first device. If the execution will exceed the resources of the
first device, a load split is determined to split the program into a first portion
and a second portion. The second portion of the program is offloaded to a second
device, while the first portion of the program is retained on the first device.
The first portion and second portion communicate via a network connection. Full
program functionality is provided using the first device, wherein the functionality
is provided by the first portion and second portion executing respectively on the
first device and the second device.