The convergence of two technological developments has made mobile computing a reality. In the last few years, Canada and other developed countries have spent large amounts of money to install and deploy wireless communication facilities. Originally aimed at telephone services (which still account for the majority of usage), the same infrastructure is increasingly used to transfer data. The second development is the continuing reduction in the size of computer hardware, leading to portable computation devices such as laptops, palmtops, or functionally enhanced cell phones. With existing technology, a scenario such as the one depicted below is fast becoming a realistic possibility.

In this scenario, a user runs a set of applications on a portable device, such as a laptop, communicating over a variety of communication links, depending on his/her current location. Working in the office, the user uses a docking station, gaining access to the wired corporate LAN at a nominal bandwidth of 10 Mbps or more. Roaming within the office building (attending meetings or dropping in on a colleague), connectivity is provided by an indoor wireless LAN product such as WaveLAN, which operates at 1-2 Mbps. Working from home or during trips to a downtown shopping mall, connectivity is provided by PCS wireless-IP packet data networks that cover a metropolitan area and provide bandwidths of a few tens of kbps. This scenario indicates that applications executing in such an environment face radically different bandwidths and network qualities. Similarly, the set of available services will also vary depending on a user's location. These variations in bandwidth and services, depending on a user's location, will also exist in future wireless environments. The next figure depicts a typical cell layout for third-generation cellular systems, such as the ones under study by the International Telecommunication Union (International Mobile Telecommunications 2000) and the European Union's ACTS program (Universal Mobile Telecommunications Systems).

Unlike second-generation cellular networks, future cellular systems will cover an area with a variety of non-homogeneous cells that may overlap. This allows the network operators to tune the system layout to subscriber density and subscribed services. Cells of different sizes will offer widely varying bandwidths: very high bandwidths with low error rates in pico-cells, very low bandwidths with higher error rates in macro-cells. Again, depending on the current location, the sets of available services might also differ. It is generally argued that applications should "adapt" to the current environment, for example by filtering and compressing data or by changing the functionality offered to the user.

The majority of end-user applications are based on the client-server paradigm. Ideally, a user would execute the same client applications he/she is familiar with on the desktop. These clients, however, are not particularly well suited to a mobile environment. They typically assume that they have sufficient bandwidth, memory, battery power, and computational power at their disposal, which is unlikely. As users roam, the clients encounter execution environments characterized by varying bandwidths and services. It is generally argued that applications should "adapt" to the current environment, for example by filtering and compressing data. Given the amount of money invested in the existing infrastructure, it is unrealistic to expect that this infrastructure will change to accommodate mobile users overnight. In particular, servers deployed worldwide will not change in the near future. To facilitate access to existing services, only the client side of the application can be adapted to function better in the dynamic and resource-constrained mobile environment.