The State of Mobile Application Development
It is amazing to see the amount of enthusiasm people have for their smartphones. Many iphone users not only like their phone, but regularly put on a sales hat for Apple and convince others that the iphone stands alone in its awesomeness and to not have one is the same as losing a sense.
Android too isn’t without it’s feverish supporters, though I think most are just happy to have a decent device that isn’t an iphone. It is fun to watch and participate in such meaningless fanfare, but it’s even more fun to participate by developing an app yourself and seeing people download and use it. And it’s definitely more fun if you can make some money too.
As a developer, there are a number of things to consider when deciding which platform you want to target. One of the main things to consider is which phone OS you want to target. Many people in North America would be surprised to know that North America isn’t the world and that Symbian is still, by a large margin, the number one smartphone OS in the world:
But as the apt reader will mention, the number of Symbian handset owners that actually buy apps is far lower than iphone or Android owners. I’m sure most Symbian owners don’t even know they have a Symbian phone. Nokia Marketing has done an amazing job masking and obfuscating its products and features to its end user for many years.
Another thing to consider as a potential mobile developer is costs associated with developing for a given platform. This is where Apple truly shows their bum by requiring iphone developers pay an annual fee of $99. No other platform has this entry fee. Apple also requires you to develop on Apple computers. And of course, Apple is now infamous for blocking all 3rd party attempts to by-pass purchasing the Apple SDK. It is a shame Adobe is not allowed to release tools that compile Flash apps to run on the iphone. Now (as before) a developer with even a simple app has to re-write the app several times to reach all the big mobile platforms, and pay 99$ to port it to the iphone. But I guess when a company believes it is the future of smartphones, it doesn’t make sense to think that developers would want to port apps to other devices.
The most important consideration in my mind when choosing a mobile platform to develop for is how easy it is to develop on a given platform. I have never developed software that targets any Apple computer or phone, but by all accounts there is a bit of a learning curve, but not much. Once you get it, it’s pretty easy to work with.
I have developed for both Symbian and Android and feel that both are not fun to work with. It’s as though Nokia’s marketing department also put together the Symbian API. The first jaw-dropping shock I got from Symbian was learning that it has 7 different types of strings. Seven. I don’t recall the reasoning for this other than these 7 string types make your applications leaner. I’d be curious to know how much leaner.
I have recently done some work on Android and found that it uses (as far as I can tell) only 2 types of strings. Android apps are built on top of a custom JVM (Dalvik) and use their own set of GUI tools. The first jaw-dropping shock I got from working with Android was the total lack of any GUI designer tools. There was no drag and drop interface anywhere. I had to use DroidDraw, an opensource GUI designer tool. DroidDraw is pretty limited, but compared to the alternatives, an essential tool for any Android developer.
Android had a few other throw backs to earlier times. Most of my grips are related to its use of Java which I find has a unique way of making what should be simple tasks cumbersome and hard to look at. For example, dynamically populating a combo box (which Android decided to rename to “spinner”) was a remarkable effort partly because of the lack of documentation, but also because the code needed is ugly. If you want to make a slick looking 3d game, good luck. 3d support for Android is not good as I have mentioned in a previous post.
I find it strange that developers like to bash Symbian for being old and clunky whereas Android tries to be a new and slick platform that will soon own the smartphone market. The truth is that Android feels old and clunky too. As a user it’s hard to tell, but as a developer Android code is verbose and clunky looking.
Looking at todays mobile options vs mobile options 5 years ago, the only real difference is that there is finally a way to make money with mobile. This is a great development, hopefully with the extra money, organizations can make better mobile tools. Maybe thats worth $99 a year.
[a Cobworks commentary]