Rover is one of the first architectures that supports the construction of both mobileadaptive applications and mobile-adaptive proxies for mobile-transparent applications. To excel in the harsh conditions of a mobile environment, mobile-adaptive applications are aware of and take an active part in adapting to those conditions. The mobile-transparent approach is appealing because it allows applications to be run without alteration. The contributions of this thesis include the Rover architecture and a reference implementation, the Rover Toolkit. Together, the architecture and toolkit support a set of programming and communication abstractions that enable and simplify the construction of both mobile-adaptive proxies for mobile-transparent applications and new mobile-adaptive applications. The programming abstractions include Relocatable Dynamic Objects, a form of code-and data-shipping, along with remote invocation and method logging, that allows mobile-adaptive applications to dynamically adapt to environmental changes, and programming language extensions for reliable execution of applications at servers. The communication abstractions are based upon Queued Remote Procedure Call, a form of remote invocation that provides asynchronous, reliable delivery of requests and results. Using the Rover abstractions, applications obtain increased availability, concurrency, resource allocation efficiency, code reuse, fault tolerance, data consistency, application adaptation to environmental changes, and more efficient scheduling and utilization of communication channels. Experimental evaluation of a suite of mobile applications built with the toolkit demonstrates that such application-level control can be obtained with relatively little programming overhead and allows correct operation, increases interactive performance, and reduces network utilization under intermittently connected conditions. John Guttag also deserves thanks for mentoring me over the years. I thank him for the guidance he has given me, especially when I was changing research groups and during my search for a job.I thank David Gifford for his efforts during the design stages of the Rover toolkit, in particular his ideas for the semantics of QRPC.I thank my parents for the motivation they instilled in me, for all the support they have provided, and for their faith in me.I owe a lot of thanks to the rest of the Rover project team: Joshua Tauber, George Candea, Constantine Cristakos, Alan F. deLespinasse, and Michael Shurpik. Special thanks go to Josh for all the great design arguments/discussions we shared that helped shape the Rover architecture and for his help in building and debugging applications.I thank the Parallel and Distributed Operating Systems group for reading many drafts of the papers behind this thesis (thanks Massimiliano Poletto, Eddie Kohler, and Greg Ganger) and for providing me with a fun, exciting, and sometimes loud (thanks David Mazieres and Emmett Witchel), research environment. Thanks also to Neena Lyall for making the administ...