From a physical point of view, a pervasive computing environment consists of heterogeneous devices
connected by networks of varying quality. Virtual machines are a well-known means to providing a uniform
platform for program development across different hardware, as witnessed by the popularity of the Java
platform. Mobile agents facilitate a style of programming for distributed systems that reduces the dependence
on stable network connections. The POM project combines research in these technologies to provide an underlying
architecture for pervasive computing applications, embodied by the POM virtual machine.
A virtual machine provides a virtual execution platform. Programs are typically represented by bytecodes,
that can be interpreted or compiled to native code for efficiency. The virtual machine can provide additional
services, such as memory management, threading, and an API for accessing external resources (files, network,
GUI, etc.). The POM virtual machine is a minimal Smalltalk virtual machine that provides a range of operations
appropriate for use in a pervasive computing environment, such as migration and an optimizing proxy mechanism.
A mobile agent is normally designed to function autonomously. Hence, complex remote operations can
be performed by migrating a mobile agent to the remote site and then let it perform the operations on-site.
Robustness is improved because the agent does not rely on a network connection once it has been transferred.
Efficiency can be improved when the reduction in communication traffic becomes greater than the cost of
transferring the agent. The POM virtual machine functions as an agent execution platform, and is intended
to provide services normally needed in an agent environment.