Native or Cross-Platform Framework?
I have been researching how to develop for the iPhone platform for a while now. My day job is developing VoIP software at Interactive Intelligence (ININ). I do this development in C++ and C# on the Windows platform. I also do scripting in Ruby (and Perl in previous jobs).
I have spent a decent amount of time reading about Objective-C and I am starting to feel comfortable about it. I really like some of the features of the language, but going back to manual memory management doesn’t appeal to me. Even in C++, I use smart pointers to relieve the drudgery of memory management. I have considering using Objective-C++ but I am concerned about getting off the beaten path. Even with all of this, there is the problem with porting any application written for the iPhone to other platforms. Realistically this may not be all that big of problem if the iPhone is going to take over the mobile development. Still, I don’t like to put all my eggs in one basket.
I have several apps that I would like to start on. However, ININ is providing an iPhone and AT&T service for me to start on an iPhone client app for our Customer Interaction Center (CIC) using the Interaction Client Mobile Edition (ICME) infrastructure. ICME currently is implemented for Windows Mobile. I have spent a decent amount of time already on it, but nothing really to show for the work. The issue has been integration with the back-end, which is a SOAP service written using Windows Communication Foundation (WCF). I have also been helping a separate project getting started with development of a BlackBerry client based on my research on the iPhone client.
You would thing that it would be straight forward to integrate with SOAP! After all, it is supposed to be the ubiquitious integration framework. It is just HTTP and XML, right? Wrong. Even with the ICME web service conforming to WS-I basic profile, it still doesn’t work out-of-the-box with JSR-172 (the web service definition for J2ME used on the BlackBerry). I have also had trouble generating stubs from the WSDL using wsdl2objc for the iPhone. The WSDL is pretty substantial and there are parts that are just not supported by the stub generators for these two platforms. And what about the other mobile platforms?
So, you end up having to write some intermediate translation. So this has made me step back and rethink my approach to this application. While researching alternatives, I ran across several cross-platform frameworks for iPhone, BlackBerry, Android, Symbian, and Windows Mobile. The ones that look most promising are RhoMobile and PhoneGap. I am currently researching RhoMobile since there seems to be more back-end tooling and Ruby is the development language. I have been impressed with the Ruby on Rails stack and I really like developing in Ruby.
Hopefully, I can make some progress with RhoMobile. I am a little concerned that it will get in the way of new iPhone 3.0 features like push. It could be my opportunity to contribute back to the community!