Advances in mobile hardware and operating systems have made mobile a first-class development platform. Activities such as web browsing, casual game play, media playback, and document reading is now as common on mobile devices as on full-sized desktop systems. However, developers are still constrained by the inherent resource limitations of mobile devices.
Unlike full-sized desktop systems, mobile devices must sacrifice performance in favor of smaller form factors and greater power-efficiency. Opportunistic offloading of computation from a mobile device to remote server infrastructure (i.e., "code offload") offers a promising way to overcome mobile devices' resource constraints and to expand the set of applications that run well on devices.
This dissertation demonstrates that many important applications can reap significant benefits from code offload by asking developers to identify several characteristics of their applications to the underlying runtime. I have investigated my thesis through the design and implementation of two code-offload systems: MAUI and Kahawai. MAUI is a general-purpose offload framework that only requires developers to identify methods that can be run remotely. Kahawai is designed for fast-action games with heavy GPU workloads and only requires developers to identify sources of non-determinism in their game logic. Both systems allow developers to benefit from code offload with very little additional effort.