Recently, smart phones had a big step in the market.. providing very interesting features that changed the way we're using the phones, and introducing new era for operating systems.
From now, every operating system MUST have touch-screen capabilities, Camera with high Resolution lens, Internet, WiFi and finally ability to develop & install custom apps, that’sit, the ability to develop and install custom and 3ed party apps is most important feature because smart phones are being multi-purpose device not only to make phone calls; end users are now communicate, organize their stuff , buy something, read a book, write a note, play a game, navigate through GPS ...etc by their devices, and sure that’s not a new news!
For us -developers- we have the opportunity to be part of this new era and make a forward step to build programs for smart phones! IT software companies have this opportunity too by simply make the ability to access their systems from smart phone clients so people can simply do tasks from anywhere by his device.
OK, there are many operating systems in the market which one is better? and how to write apps for all?
let us list the most used OS with its pros/cons:
1. Apple iOS: the first touch-based mobile phone introduced by Apple in early 2007, its powerful device, high quality for both hardware & software:
SDK Language: C, C++ Objective-c & Javascript.
Pros:
- Widely used around the world, most prestigious device.
- Support for Multi-tasking.
- Support for folders.
Cons:
- Its not easy to unlock the phone
- Flash not supported.
- No copy-paste functionality.
- SDK can only be installed on Apple-branded computers.
- Developer must subscribe to the iPhone Developer Program which a step requiring payment and Apple's approval.
2. Google Android: is an open source OS, based on Linux kernel.
SDK Language: Java
Pros:
- Quick and powerful.
- Integrated with most of Google services such as Gmail, Gtalk and picasa.
- Supported by many hardware vendors like Sony Ericsson, Motorola, LG, HTC... and others.
- SDK is free and can be installed on Mac OS X, Linux and windows.
- Support for Multi-tasking
Cons:
- OS still not mature enough, many bugs were raised and fixed.
- Poor support for Arabic, right-to-left, connected characters (Custom app may resolve the problem).
- Poor support for getting to internet through firewall (Custom app may resolve the problem).
- Phones comes with a limited access permissions to the phone "root", so end-user cannot use applications that requires these permissions.
- OS update must be enrolled by hardware manufacturers only, so OS update cannot be done just like windows update.
3. Microsoft WP7: Just released in October 21, 2010. but it has 2% of the market share in just first ~ 3 months, i think it deserve to mention.
Since i didn't test a phone powered by WP7, so I can't recommend it or not, I'll just qout this paragraph from Wikipedia: "Applications and games for Windows Phone 7 must be based on XNA or Silverlight 4 only. Microsoft offers Visual Studio 2010 Express and Expression Blend for Windows Phone (phone development versions of larger applications) for free. On November 29th 2009, Microsoft announced the Release to web (RTW) version of its Visual Basic Developer Tool, to allow development in Visual Basic"; which means the SDK library is free and uses silverlight which is based on XAML.
For developers, i would like to suggest this link to know more about this OS, http://en.wikipedia.org/wiki/Windows_Phone_7.
4. Other choices:
I have tested a tool that gives the ability to write an app in Adobe Flash Builder & ActionScript and it translates it to a native code for Android, iOS, Windows Mobile, Symbian. It's very interested but it requires to have the native SDK of the target platform. you can find it here!
While iOS is very restricted environment and many things are out of developer control; iPhone will be a headache & costly choice, also i don't like to have a locked device; this will minimize the area that I can "play in". I think Android has more advantages for developers with less cost.