With the pervasiveness of computers, network access, and Internet usage in daily personal and business-related activities, many users desire mobility and flexibility in their computing activities. As users physically move from location to location, and shift from activity to activity, they typically seek convenience and familiarity in performing computing activities. Users may carry one or more mobile computing devices—such as a smartphone, personal digital assistant, laptop or notebook computer—to provide a personalized computing experience as they move from location to location. Many users also use a portable storage device, such as a flash drive, to carry files, documents or applications in a convenient and portable manner. With such a storage device, a user accesses desired files or documents from publicly available computers to which the portable storage device can connect.
Many widely available modern computer desktop applications include rich graphical user interfaces (GUI) that have been developed for use on conventional personal computers, workstations, laptops, or other computing devices, typically have large displays, keyboard and mouse, etc. In contrast, mobile devices are often designed to be small enough to fit in a pocket, have relatively small displays, and some (often limited) means for data input such as telephone keypad, full keyboard, touch screen, stylus, etc. When it comes to supporting desktop or enterprise applications on mobile devices, limiting factors include the small display size and meager computational capacity. Various methods have been developed to run some desktop applications on mobile devices, but the results typically range from cumbersome and clumsy to not feasible or cost-prohibitive. The most common examples include rewriting applications, in whole or in part, to accommodate mobile device limitations, providing limited or “lite” versions of applications, scaling the application's graphics to fit on the mobile device display, and using zooming and scrolling to turn the mobile device display into a “virtual lens” to view sub-regions of the application at a time.