Over the past couple of weeks I have been slowly planning and revamping my iPhone app to address user concerns, bugs, and problems. And as part of the rework I decided to support other platforms, in addition to the iPhone, such as the iPad, Android, and Windows Phone 7. However with this new focus, I had one huge problem, how was I going to learn each new SDK.
This problem led me to struggle with if I should develop for each platform natively in its own language and SDK or use a cross platform programming language that would basically put a shim on top of the native SDK. The pros and cons of each approach where the following:
|Go Native||Not Go Native|
Eventually I came to the conclusion that I had to accept the fact that if I wanted to support all the platforms, I was going to have to use a cross platform programming language, because I am one guy with a limited amount of time and don’t really have time to learn Obj-C and Java on top of the SDK’s for iOS, Android, and Windows Phone 7. So I started browsing around and came up with the following options for developing cross platform:
- MonoTouch & MonoDroid : I would be able to share the C# code across the platforms with Windows Phone 7 app if I crafted the libraries for accessing the core data, but this choice still required me to use each platforms UI, so I would have to spend the time diving in to each individual platform.
I really found the fact that I could continue to program in C# with MonoTouch and MonoDroid very alluring. But, ultimately I decided I was going to go with jQuery Mobile and PhoneGap, because I lacked the time to even dive in to MonoX frameworks, and I already had a solid grasp of HTML and jQuery so I decided to use PhoneGap as the platform for my next release. If you have never used PhoneGap here is how they explain it on their website:
- Popup Native Alerts
- Get GPS coordinates
- Vibrate The Device