A developer’s perspective – J2ME, S60, iPhone, Android, BlackBerry, WindowsMobile
General, Mobile Development, Software Development, WEB/WAP Development Add comments
Gone are the good days when PocketPC was the only smart phone platform worth developing for, or when developing an application in J2ME will cover a major share of the devices.
Now you have to cover as many platforms and take care of device fragmentation if your application or service has to give you good coverage across various markets and regions.
I had developed for WindowsMobile since the PocketPC 2002 days, for J2ME since its inception, and Symbian S60 since the first device was released, but I never was doing mobile device development as a full time job or even hobby, I did however, develop applications and snippets that the usual mobile developers did not venture to.
My most work was on J2ME which I did take up on professional level apart from a few projects in S60, where I found out that I knew much more about mobile device development than I thought I would. I was able to port most of my J2ME stuff to BlackBerry with added features using native classes and APIs. Unintentionally I knew the S60 API inside out without developing many applications and even the versioning issues and workarounds when a specific API was not working as intended under particular circumstances.
Then the dreaded iPhone was launched, an expensive mega mobile device with features unheard of and NO J2ME. Well it was only Web / AJAX development for the first few months. The requirement of owning a Mac for iPhone development is too huge a commodity, not that S60 development could be done on a Mac (out of the box), but Android has nailed it with support for not only these two but my favourite platform, Linux.
As a user, I like the Nexus One, but some things I can only do on the Nokia N97, even if its the most inferior looking to some out of the above devices. The Fuze / TouchPro was my biggest disappointment and hence no other WM phone is going to land in my pocket any time soon.
Now lets go through each of them briefly (trying to be in chronological order, omitting revisions):
Windows Mobile (PocketPC):
Supported by Microsoft it is one of the oldest platforms around in relatively similar shape. Although the .NET framework has changed it a lot but the main goal remains the same as always, to keep development similar to desktop Windows development. I am not sure about other developers but I do not think that worked for me, I was not a Windows developer ever, and Visual C++ or VB where alien terms for me, and knowledge of all things Linux never helped, my applications remained to eVB (embedded VB) because of its visual interface designer. I have later done C# applications as well but the memory management and background running things annoyed me more than any segfault on Linux.
Pros: Windows API, .NET, Familiar languages and constructs, Microsoft Tools, great on device debugging, can run J2ME applications
Cons: Mostly for Windows developers, SDK / Tools only for Windows OS.
Symbian S60:
Symbian also has its roots to older PDAs but in my opinion has changed too much from that era, I have done a few professional projects and know my way around its usually difficult documentation. With Carbide C++ getting better and now free its a good platform outselling most in some regions. All devices run J2ME with multi-tasking, leaving C++ to be used at will and when certain aspects of the phone are to be used.
Pros: Getting OpenSource, Carbide C++ free, Some Linux development possible, Ajax / J2ME applications work
Cons: Variant of C++, Troublesome signing, not so easy to set on device debugging
J2ME (Java):
J2ME is as close to normal Java as it could be on mobile devices, this approach has its own drawbacks but got developers attracted easily and applications rolling. Although the fragmentation with respect to screen colors, dimensions, and keypads killed the enthusiasm as quickly as it began. Although color screen devices with or without touch and any kind of keypad, keyboard, or the lack of it could be handled in one single application and all my applications were based on this. Most of my mobile device work is on this platform ranging from general purpose APIs to stock market and streaming media applications.
Pros: Familiar language and constructs, Cross Platform development, major device share
Cons: device fragmentation, tricky on device debugging, RMS is evil.
BlackBerry:
RIM used J2ME as its starter and provided APIs for native additions, this approach worked well for BlackBerry devices and enough professional applications are out there as this platform targets such users. I liked the native APIs for trackball, special keys, and network integration, etc. I ported some of my J2ME work with native APIs others were just re-packaged to work on RIM devices.
Pros: Similar to J2ME, native APIs and Classes.
Cons: tricky packaging and deployment
iPhone:
The most hyped platform, restricted by Apple and available to the masses unlocked and jailbrocken by I would like to know who. The one iPhone I had corrupted and had to reflash, jailbreak, unlock to get it to work again makes me think that the whole process is not anything like discovering X-rays or the sorts, there is simply no logic behind the precisely timed steps and so on. I have flashed official and not so official operating systems and ROMs to nearly all devices I ever owned (number goes into dozens) so I understand how you can accidentally hit a bootloader and how you need inside info to know it.
Owning a Mac is another bottleneck for iPhone development, its just too expensive compared to similar specification machine of vendors for Windows or Linux. So being unsure if I would do anything commercial I used a Hackintosh, but do not promote it, once you feel you are going to earn from it, go buy a Mac.
The final nail in the coffin, pay US$99 to get on device debugging to work, my foot, ok go ahead and google a free way around, I am still not impressed, the device itself has not seen any changes. Good thing is developers do not need to worry about device fragmentation but iPhone was supposed to be all about innovation, which we have not see between 2G, 3G, and 3GS.
Pros: Hot Platform, First AppStore
Cons: Mac OS X only, built upon antiques, costly on-device debugging / deployment, too much hype.
Android:
Aah, the new kid on the block, but this is how a mobile device platform should be like in this day and age, needs a bit more work on the usage side and I have high hopes associated with FroYo / Android 2.2. Has the best support for development on all platforms (Mac / Win / Linux) on-device debugging was so painless that I could not believe myself if its really my application or if HelloWorld! was installed by Google itself
Java in its full glory with APIs having access to anything on the device and then a Native Development Kit (NDK) for those who want to dive deeper, fixed a bug in the OS, fix it yourself (well a bit more difficult than that, but you got what I mean). Flashing a different OS / ROM does not feel like doing anything risky or potentially harmful to the device. Great work google. The applications maybe low in numbers but with more users jumping on with a better user OS, this is bound to change. Market has potential to attract developers, for the passion and of course the money.
Pros: Familiar language and constructs, vast and well organized API, superb on device debugging, Cross Platform development, OpenSource, use og XML resources.
Cons: low market share of devices,
These are my opinions. Other developers can have their own. Feel free to comment to discuss, but please avoid flaming just because I do not like what is dear to you. You can write about it on YOUR blog, thanks
Recent Comments