Wednesday, November 9, 2011

Mobile Devices Programming, Choose Your Platform

There has been a lot of noise in the mobile industry on the last years, and a lot of developers were drawn towards mobile device programming. So what's the big deal?

To give those who are new to this stuff a starting point, I'd like to talk about the systems you can work with to develop software for cellphones and their cousins and brothers (mainly Tablets). First thing you should know if you're interested in working with the so called "Apps" - is that there are three, maybe four, operating systems of major interest, and in general, they have little-to-none compatibility between them, making code reuse very hard.

  • Android, from Google.
  • iOS, from Apple.
  • Windows Phone 7, to take over Symbian.
  • BlackBerry OS, from RIM.

I'm planning on giving a better explanation about each platform later, but for now, let's take a look on what you'll need to choose one of them and start playing now. Considering the recent "boom" on the mobile devices industry, you can actually make money by creating not-so-complex apps, so it's interesting to think about the market share of each platform too.


I must warn you, thought, that I worked with and researched Android much more than other systems, so my opinions might be somewhat biased.


Home screen displayed
by Samsung Galaxy Nexus,
running Android 4.0 "Ice Cream Sandwich"
[Wikipedia]
Google Android is the dominant operating system, holding about half of the mobile market, and growing. They offer the best flexibility for the developer: you can use Java and C++ (although never C++ alone, because you need the Java libs to call native code) and don't need to pay for anything unless you want to publish your Apps on the Android market.

To start playing with Android development, all you need to do is get the Eclipse IDE (get the classic version), the SDK (and the NDK if you want to work with C++ libraries too), all for free. Along with the SDKs you will get an emulator, so you can test your Apps right away without having a smartphone.
Searching the Android developer website, you can find a lot of videos that will be very useful, worth the time if you're serious in the Android development thing.

If you wish to work with native code, you'll need the NDK (Native Development Kit). There are a series of reasons one might want to do such a thing; using well known C++ libraries that are not available for Java, enhancing code performance, personal preference, etc.. The support for this devkit, although very good, is not so good as for the SDK, in general Google discourages using native code, maybe for compatibility issues.

Any code you write for the Android, will run inside the Dalvik virtual machine, which is an open source adaptation of the Java VM, optimized for low system requirements, i.e., memory and processor speed.





iOS 5.0 running on an iPhone 4S
[Wikipedia]
Apple's iOS is a somewhat unknown ground for me. If you want to develop Apps for the iThings, you're going to need a MacBook and a developer account (which is paid), then you will get access to the SDKs and the xCode IDE, so you can compile your code. Apps for this platform must be written in Objective-C, and you can only work on Mac OS, so it's kind of a more restricted environment.

I'm not complaining or disapproving (maybe a little) the company's approach, but if you want to go pro on iOS Apps, unlike other platforms, you'll need some money. Finally, assuming you want to make profit from your work publishing it on Apple's market, the company will have a 30% cut on all your earnings.

Still, iOS users are a very loyal group and the apple store is very active, you will find lots of applications full of user comments. The usual apple client is used to pay for his software, unlike android's market where free apps make much much more success.





The Start screen in Windows Phone.
[Wikipedia]



Windows Phone is an interesting platform too, it shows an interface somewhat different from its competitors. You are locked into using C# or Silverlight to develop anything for this OS, what can be a pain for some people (like me). Microsoft's mobile OS doesn't have a big market share yet, but Nokia is abandoning its Symbian OS in favor of the WP, what should give this OS about 20% market share. To publish your work for profit in the MS market and make it accessible to WP users, there is (like Apple) a 30% cut too.

To start developing for the WP you'll need the SDK, that you can get from the MSDN website for free, oh yeah, you'll need MS Visual Studio too. You'll also get an emulator and access to training videos, very similar to Android's.






Last but not least, the BlackBerry OS, this system currently holds about 20% of the market and only runs Java code. I'm not getting into this one for now because I didn't touch it yet - I will update this article later with more information.

Well, thanks for checking out, I hope to bring more info on this topic later. This introductory article is far from finished, please leave your opinion bellow and subscribe.

2 comments:

  1. Hey Adan, excelent post, this area is bringing a world of new possibilities. I hope you can cover in more details each of these plataforms in your next posts! See ya!

    ReplyDelete
  2. nice site http://funmazawallpaperz.blogspot.com/

    ReplyDelete