I’ve been fighting with myself over the past few months about what I should devote time and effort into learning to use to program for the iPhone and other mobile platforms. Seriously, I have been thinking about this since the summer of 2009, and there are honestly a number of ways to accomplish this.
Of course the big one is learning Objective-C, and then using X-Code on a Mac to write native code using the iPhone SDK. The drawback is you have to submit every update to the app store, and this stuff only works on iPhones, iPads, and iPod Touches. However, if you were gonna pick one platform to develop for, this would be the one.
The other option is going with java byte code (or whatever they call it) and writing for the Android platform. Same problem here as well. Whatever you write here only works on android devices.
There are a few third party SDKs and languages that allow you to write using their software kit, and then they have compilers that will make the same code work on multiple platforms, like android and iPhone for instance. This is actually a cool solution, especially if you find an SDK that actually has the features your looking for. The big problem here is that when Apple or Google invents some new feature in their software package, you can bet your app is NOT gonna have it for a while because you gotta wait on your third-party SDK to build that in. No go for me.
So what does that leave? The web.
Theres a handful of platforms for web based applications out there, and every single one of them works on every modern internet connected device on the planet. In fact, when you think about it, the stuff people *really* care about is all web-based. Ever heard of Facebook? GMail? Google Maps? You get the point. The drawback with this is that you don’t get all of the bells and whistles and speed that a native app for a device would give you, but the new HTML5 is rapidly changing all that. HTML5 isn’t just about streaming video. Don’t believe me? Check out SproutCore and Cappuccino, two VERY good web frameworks for desktop applications, on the web.
Take a look at some of the demos and examples. You’ll be impressed.