Mobile Applications are rapidly developing segment in the global mobile sector. Developing mobile applications targeting different mobile platforms such as Windows Phone, iOS, Android, Blackberry and Bada(Samsung’s Proprietary OS) is the trend setter now.
Quoting from Wikipedia
Why is it so different from other application development?
Why do we need to give special care when doing mobile development?
Mobile devices have certain limitations in terms of hardware, they have limited screen display, limited space for applications to operate and network capabilities. These limitations will vary in different models as the Mobile ecosystem is very large and there is innumerous amount of devices in the world. So we need to give special care in developing the mobile applications ensuring the compatibility across all the platforms.
Some of the things we need to consider when we do mobile development are:
- Small screen size and mobile ecosystem – This makes it difficult or impossible to see text and graphics dependent on the standard size of a desktop computer screen.
- Lack of windows/ multi-tasking – On a desktop computer, the ability to open more than one window at a time allows for multi-tasking and for easy revert to a previous page. Historically on mobile web, only one page can be displayed at a time, and pages can only be viewed in the sequence they were originally accessed. Latest mobile platform releases such as iOS, Android and Windows Phone are supporting multi tasking capability, which allows you to run more than one applications parallel, yet only one application can be displayed on the screen.
- Navigation – Most mobile devices do not use a mouse like pointer, but rather simply an up and down function for scrolling or touch inputs, thereby limiting the flexibility in navigation.
- Hardware and Resource limitation – all the upcoming mobile devices are having Dual Core or Quad core mobile processors with decent amount of memory. But still if you need you device to function well and be responsive, you should develop application in such a way it will be using low memory foot print.
- Targeting Or Supporting wide variety Mobile Platforms/ Execution environments – this is the most complicated or important feature set we should be taking in to consideration when developing an application. Android, iOS, BlackBerry, HP webOS, Symbian OS, Bada from Samsung, and Windows Mobile support typical application binaries as found on personal computers with code which executes in the native machine format of the processor (the ARM architecture is a dominant design used on many current models).
Also read this article on 7 Limitations when designing for mobile: http://baymard.com/blog/mobile-design-limitations
For Technical point of view we can differentiate mobile applications in to three categories
1. Native Applications
Native applications developed against native platform APIs and It would be having full(or limited for some platforms) access to the device capabilities. Each of the platforms for mobile applications also has an integrated development environment which provides tools to allow a developer to write, test and deploy applications into the target platform environment.
Examples are using Applications developed using Native/Platform Mobile SDK’s such as iOS SDK, Android SDK, Windows Phone SDK etc. Windows Mobile, Android, HP webOS and iOS offer free SDKs and integrated development environments to developers. These applications will be able to utilize or interact with all device capabilities.
Five reasons for developing Native Applications:
- Offline Mode
- Findability / Discoverability ( through a central location such as Apple’s AppStore , Google’s Market, Windows Phone Market etc)
- Device Attributes
The disadvantage is obviously the development cost. No two mobile platforms can share the same mobile application, and there are too many Mobile operating systems (or platforms) existing in the market. If you develop a mobile application to market it widely, you need to develop that in Symbian, Mac iPhone, Android, Blackberry and Windows mobile.
2. Mobile Web Applications / Browser based Applications
Mobile Web applications are web sites that are scaled down/optimized to display on a mobile web browser. Mobile web applications are developed in such a way keeping in mind less payload delivery per each request. These applications are typically a scale down version of actual website which you can browse over any desktop browser such as Internet Explorer, Chrome, Firefox and Opera.
Every action mobile web application makes a round trip to server.
The advantages of having mobile web application is that:
- Server Driven – we have full control on the website. and we can customize it any time, so that user will get the latest look and feel.
- Targeting multiple platforms & connectivity – most of the mobiles and smartphones have a browser. One-third of humankind currently has access to the Internet through a mobile device. That makes it easy to deliver our applications in any platform.
- It enables services to take advantage of mobile device capabilities such as clicking on a phone number to call it or add it to the device address book. It can provide location-sensitive content. Location technologies can enable location-sensitive information be provided to a user. This can reduce the steps required for the user to reach useful content, and so makes it accessible with the least amount of effort.
- For users, they don’t have to download an application or any maintenance updates, but instead “call up” a URL via their mobile browser which instantly delivers the most up-to-date application to their device.
- Cross platform compatibility.
- low development cost.
and the disadvantage is the bandwidth limitations and the limitations of Mobile websites, which does not access your Phone’s components like your Address book, Camera, etc.
The Mobile Web refers access to the world wide web, i.e. the use of browser-based Internet services, from a handheld mobile device, such as a smartphone, a feature phone or a tablet computer, connected to a mobile network or other wireless network.
Traditionally, access to the Web has been via fixed-line services on large-screen laptops and desktop computers. The shift to mobile Web access has been accelerating with the rise since 2007 of larger multitouch smartphones, and of multitouch tablet computers since 2010.
Both platforms provide better Internet access and browser- or application-based user Web experiences than previous generations of mobile devices have done.
Mobile Web access today still suffers from interoperability and usability problems. Interoperability issues stem from the platform fragmentation of mobile devices, mobile operating systems, and browsers. Usability problems are centered around the small physical size of the mobile phone form factors (limits on display resolution and user input/operating).
3. Hybrid Mobile Applications
Appcelerator Titanium is a platform for developing mobile, tablet and desktop applications using web technologies.
Key to successful Hybrid Apps:
- Make the experience feel like a native application.
- Take advantage of the enhanced features.
- Don’t simply release a hybrid version of the mobile web site.
- Optimize performance
Mobile world is growing and you can see lots of opportunities for innovation. If you are a fan of building mobile applications go ahead and develop something that is in your dreams and leave it over to the rest of the world to carry forward.
Resources for Developing mobile applications:
Appcelerator Titanium is a platform for developing mobile, tablet and desktop applications using web technologies. Appcelerator Titanium is developed by Appcelerator Inc.
Android Application Development: http://developer.android.com/index.html
Apple iOS Application Development: https://developer.apple.com/
Windows Phone Development: http://create.msdn.com/en-US/
Blackberry Application Development: https://bdsc.webapps.blackberry.com/devzone/
Bada Development: http://developer.bada.com
Symbian Development: http://www.developer.nokia.com/Devices/Symbian/
HP WebOS Development: https://developer.palm.com/
jQuery Mobile: Touch-Optimized Web Framework for Smartphones & Tablets
and some interesting learning resources