iPhone vs Windows Mobile Development

Posted by Jake Good
on Oct 10, 08

WARNING This post will be technical, so feel free to turn away from this post if writing software for mobile devices is not interesting to you :)

After spending a few weeks working with code on my iPhone, I've come to the conclusion that I don't think the SDK is where it needs to be before the "killer application" comes to the iPhone. Here's why...

There are ways to build frameworks that let people quickly get tasks done with as little code as possible, for actions that are simplistic in nature. Adding contacts, playing a single sound file, connecting via Bluetooth, drawing boxes on screen, drawing 3d boxes on screen, or other situations... You have one action in mind and you want a simple way to do it, but you also want controls that allow you to go further with it.

It's the balance of writing any framework (or SDK)... and I wish i could combine the iPhone SDK and the Compact Framework (CF) into one solid API... Maybe the Android platform does this and if so, I should probably look at it in more detail... but alas, I can't use those examples in context because I don't know anything about it and I won't pretend TO know anything about it...

Here are the core concepts that need to have very very high level APIs in order for more developers to use them effectively... I know there are lots of wrappers and classes out there that can help you do this, but the core frameworks should have a bare minimum super high level implementation.

  • Sound - both frameworks fail at this... it's incredibly low level to record and play back sound. Audio Services feels too low level for me. Compact Framework has Waveform Audio framework which is just about the same as Audio Services. It would be nice to just point to a file and say Play Now...

  • Drawing - Direct3D Mobile is a step forward... as well as the iPhone having OpenGL ES 2.0 Both are really well documented and are about as good as you're going to get for any kind of non-standard-form development on a phone. Props to both frameworks for providing nice libraries for this. They aren't incredibly high level, but they do provide you with what you need and are well documented.

  • Contact Data - Both platforms have interesting interfaces to contacts...

  • Networking - Here's where I think CF rules over iPhone frameworks. I think that they both have good basic HTTP traffic handling capabilities, but I think outside of that, the CF has easier means to do any kind of TCP traffic interaction at high levels... while the iPhone treats them more like low level, posix compliant, tcp sockets... That includes bluetooth and bonjour. I mean seriously, look at the examples on the iPhone for networking and look at them in the CF, you'll notice large differences....

  • Phone Actions - I'm talking contacts, emails, and phone dialing capabilities... They are both about even on this level.

  • Photos - Using the phones camera on both frameworks is almost identical. They have standard Camera Taking and Photo Access means. You hand off the request to the OS to say, give the user the ability to take a picture and report back to me with the picture if they take one. Protection of the Camera is nice...

  • Forms and UI Control - Here's where the iPhone clearly wins. The MVC pattern on the iPhone is really a fresh (and correct) way to look at UI development. In CF world, you treat it just like you do in the desktop world, which is nice, but can lead to some very ugly code. Though I do find the iPhone's standard control library very very slim... I do think that they could do better.

  • Input - Obviously the iPhone and Windows Mobile have touch sensing capabilities and keyboards... I think the iPhone wins on keyboard control, but I think that Windows Mobile wins for input devices and capturing the events. In Windows Mobile world, you tell the object that the user can touch to tell you directly when it happens... in an explicit fashion... In the iPhone world, you say, hey... I can handle input messages, please send them my way if you happen to get something... in a declarative fashion...

So I guess it comes down to the fact that the iPhone SDK is young... the CF has been around for 5 years or so... and eventually they will start to look more and more similar...

It will come down to the devices and I do strongly feel that the iPhone is a better starting platform than the Windows Mobile phones... but I miss writing in the Compact Framework... When I'm dealing with iPhone like stuff, I keep asking myself how I would do it in the Compact Framework...

Here's an idea... why don't the Mono guys port the Compact Framework over to Objective-C and get something similar running on top of the iPhone :)

Or Apple, get Ruby working on the iPhone... How I would love to use Ruby on the iPhone...

Comments

Leave a response

  1. JohnNov 11 08 @ 12:44PM
    I'd love to see Mono running on the iPhone. That way, as a Windows user I could at least develop for the iPhone without having to pony up for a Mac. I could run a Linux VM that way which would be sweet. I love the iPhone, but unless an SDK is available to develop on Windows I have to stick with Windows Mobile.
Comment