Year 2008, Google rocked international mobile market with release of Android operating system which not only is limited to mobile but is also pretty challenging option for other devices (like printer, car dashboard, etc.). And guess what, android is made functional on Apple I-Phone too. Android is a Linux based operating system. And it brings the awesomeness of Linux too. For developers android provides Java programming environment. So if you are ready to walk down android then you should have good knowledge of java programming language. But more than being master of Java programming language you should have good understanding of working on mobile devices. Android as well as java being open source provides huge number of supporting APIs for huge number of requirements which makes developers life easy.
Challenges of mobile development
Doesn’t matter whether you are n-year experienced on designing and implementing large scale server applications or whether you are fresh meat out of college ready to face the challenges, developing mobile application is not like anything you ever imagined. Those who are already into mobile application development know what I am talking about. Few of the challenges that you face in everyday development are as follows
Small screen size
I got to admit, the thing that annoys me most about mobile devices is its small screen size. My personal mobile has screen size of 240×360 and I find it really difficult to fit my UI into that tiny space. To give you little taste of what I am talking about, let us imagine developing an application to manage all your community accounts (like facebook, twitter, google buzz, yahoo buzz, etc) and updates on them. Now I assume you all have already seen how these sites actually look like and how much information they display on each web page. Just imagine fitting all those information on screen size 240×360. One option is to stuff everything on single screen and provide a magnifying glass to your user and run hide in your backyard. Or you can redesign the way this information actually appears on screen. Break them into different screens and make them as less annoying and as friendly as possible. I am sure UI designer are sweating already.
Limited input devices
So where were we? Ah, yes. We were managing our community accounts. So how do you think you are going to let user put some comments on their friend’s profile? Does your user have a key board? I don’t know. But yea I have 3 keys on my mobile. But wait a second, how the heck are we going to get let’s say simple English input from user with 3 keys? Oh yea, I forgot, I have virtual keyboard, QWERTY one. What a relief right? But imagine those who don’t have QWERTY keyboard. Even if they have virtual keyboard it isn’t that easy to use them. You certainly got to touch the keys to type anything. And more than that, you got to display keyboard and the input box both on same screen. Ok let’s stuff them both on same screen and let user use its fancy stylus to type. But hey, I’ve already lost my stylus. What are you going to do now? Well there is nothing you can do. I have to use my fingers in place of stylus. Thank god I don’t have thick fingers otherwise imagine me using multi-touch screen. Even if you have not lost your stylus, how are you going to display options on screen like we get on right click on desktop? Well it is already taken care of but I am sure I made my point clear when I said it is lot different to work on mobile applications.
“Processors and memory on mobile devices are pathetically limited.” Well that is one rude statement. But before you start hating me or mobile device let me tell you the reason behind all these limitations. It is very simple and straight. “Power”, yes power is the reason behind all these limitations. What do you think stops engineers from stuffing GSM/GPRS stack on your desktop or laptop and make it able to receive calls? Well there are not any technical reason for that it’s just that it’s not too easy to hold your laptop/desktop up to your year while walking in park. Therefore GSM/GPRS stack is kept in small device with less, very limited power supply. To accomplish this, new processors were designed which could utilize very less power. Now since you know the story, I hope you understand the reason why we have limited memory and processing speeds on mobile device. And yes we have to live with that for now.
Each mobile platform has its own development environment and you have no other option. I personally used to work on Symbian/Windows mobile devices prior to moving to android. And I am diehard fan of C++ programming language. But android only provides Java development. So I ended up learning java too. But good thing is Java isn’t much different from C++. Though internal operations are not at all alike and you might find yourself strangled in the restrictions introduced in Java. Hey, Java isn’t much different from C++. Moreover, applications running on mobile device must not forget the fact that they are running on mobile. Mobile users are already irritated with limited features of mobile devices and they would certainly not like it if your application locks the CPU and restrict it from receiving calls, or always stay on top, or crashes mobile operating system by memory leakage. Sincerely I don’t want to scare you, but it is very important to understand the difference between application development for desktop and mobile. While working on mobile, you must keep the limited resources in mind. Mobile applications must be very resource efficient. Resource allocation and release must be done very carefully. Developers should follow really secure programming methodologies.