There is much to consider when developing Applications for mobile devices. Mobile devices in general have limitations in terms of e.g. screen size, battery, and network interfaces. Also, mobile devices come in many shapes, manufactured by different vendors, equipped with different hardware, and running different operating systems. There are also often big dissimilarities between older and more recent versions of the same operating system, both in terms of functionally and which applications they support. When developing mobile applications, two main alternatives exist regarding implementation technology: either you go for native applications, or you deliver mobile web in the shape of web apps. A native application is developed for a specific platform, i.e. pre-defined device models and a set range of operating system versions. As the platform is known to the developer, the application can be optimized to the device OS and hardware, e.g. built-in cameras, GPS, and the OS’s standard applications. A web application on the other hand is developed using web technologies, thus accessible from a mobile web browser, at least in theory independent of device model or operating system. A key technology is the emerging HTML5 standard along with related frameworks, providing developers with functionality that was traditionally reserved for applications created with native applications.
As the platform is not specified, exploiting or even accessing hardware functionality is generally harder for a web application compared to a native counterpart. Mobile computing is about providing data access anywhere, anytime. The accessed data can be very heterogeneous in its nature, e.g. static textual information, audio or video connections (multimedia sessions), mobile e-services, or context data gathered by GPS or sensors. Location is one of the most important context parameters in mobile computing. Especially relevant is user location. Informing the system about the user’s current location can improve the quality of service, delivering customized solutions to the individual user. Consider e.g. applications offering discounts to users depending on what stores they are near, emergency services, or navigation services that emanate from the user, compared to similar services.