As computing technology advances, the number of personal devices, communications protocols, and diversity of connectivity choices may increase. In particular, these devices may include, for example, a desktop personal computer (PC), a laptop computer, a personal data assistant (PDA), a cellular telephone, a GPS in-car navigation system, a digital camera, a MP3 player, and other devices. The choice of protocol may include, for example, Hypertext Transfer Protocol (HTTP), File Transfer Protocol (FTP), Simple Network Management Protocol (SNMP), Internet Inter-Orb Protocol (IIOP) in Common Object Request Broken Architecture (CORBA), Simple Object Access Protocol (SOAP) with Extension Markup Language (XML), or any other appropriate protocol. The choice of connectivity may include, for example, Ethernet, Bluetooth, IEEE 802.11 a/b/g (WiFi), ZigBee, Infrared Detection and Acquisition (IrDA), General Packet Radio Service (GPRS), Code Division Multiplexed Access (CDMA), and Global System for Mobile Communication (GSM).
These devices, however, may not communicate directly with each other, because, for example, they may not support a common communication protocol or they may be implemented in different programming languages. As devices become smaller, less expensive, prolific, and more focused on a single application, device interoperability may pose a greater challenge. Even if a device can communicate via multiple protocols, the ability to move to new standards may remain problematic and difficult to achieve.
Each of the devices may have different computation power, screen sizes, computation power, and connection capabilities, and hence connecting these devices to each other and other networks, such as, for example, the Internet or any other network, may require a significant amount of programming and manual synchronization to achieve consistent states. Providing services to these devices may be difficult and may demand a significant programming effort and infrastructure.
For rapid application development, a standard platform may be desired so that programmers may focus on application development rather than dealing with multiple languages and/or multiple connectivity issues. In this regard, the underlying operating system and system libraries of the standard platform may provide an abstraction or simplified interface to shield the multiple connection protocols and hardware-specific details. However, a suitable standard platform for devices may be lacking in that for each new software application written, a significant amount of programming effort may be required to deal with device-specific details, which may prolong application development and limit the deployment of the application to other devices.
Other challenges may exist as well to provide services to devices. In particular, providing services to mobile devices via a wireless network may also pose a challenge, due to delay and availability constraints, for example. In particular, delay constraints may arise due to limited bandwidth, packet loss, and backbone delay, which may present difficult challenges to engineers who may have limited or no control over these constraints. Public backbones, such as, for example, the Internet or cellular networks, may be highly latent and may provide only limited coverage. Hence, mobile applications may be required to work in a not-always-on environment, using a network only when it's available.