Here it comes: .NET for the iPhone
The big payoff for Novell's investment in an open-source version of a platform created by its rival in the operating system category, Microsoft, may come in the unlikeliest of places: Today, Novell begins shipping the 1.0 edition of MonoTouch, its commercial software development platform that extends the .NET Framework and the C# language...to Apple's iPhone.
Although this effort is itself an extension of Mono, the open source .NET extension for Linux and Mac that's funded by Novell, MonoTouch is somewhat different: First, it includes an exclusive, Mac-based development environment for iPhone. Second, it requires the iPhone SDK, which means MonoTouch is being marketed for registered Apple iPhone developers. Third, it ain't free -- a five-developer license costs $3,999.
"We debated internally what exactly Mono for the iPhone would be," blogged Mono creator Miguel de Icaza this morning. "We considered doing a Windows.Forms port, to bring Compact Framework apps to the iPhone, but that would have required a complete new back end for Windows.Forms and would have required also a 'theme' engine to make it look like the iPhone. We discarded this idea early on. We decided instead to go with a native binding the iPhone APIs. It would not be a cross platform API and it would tie developers to the iPhone platform, but it would also mean that applications would look and feel native, and developers would get closer to the iPhone."
Previously, it was possible for Mac developers using the Unity game development environment -- the one that originally used Java and that moved to Mono 2.0 for OS X last year -- to produce bytecode that does run on the iPhone, de Icaza noted, and several iPhone apps have already been produced that way. But the next logical step appeared to have been a binding for Objective-C, the object-oriented C language already familiar to Mac developers. While that's possible for the Mac -- a tool called Monobjc already does this -- there's no way to extend that bridge to the iPhone, wrote de Icaza, since its kernel actively prevents the use of just-in-time (JIT) compilers.
That's actually a bit of a problem for MonoTouch too, and the Mono team has actually posted a page of the various ways Apple has been no help. Because of what the iPhone prevents developers from doing by their own means, there's not only no JIT compilation but no way to do high-level debugging -- finding problems at the source code level through testing prior to compilation.
Still, it's the quality of the compiled code that de Icaza believes could move iPhone developers to MonoTouch anyway. The same degree of size reduction and speed boosts seen by Unity when it moved from Java, he said, may be possible for iPhone developers moving from Objective-C. Compensating for the iPhone's lack of debugging support, de Icaza's team built an iPhone simulator called mtouch, so developers can debug off of the iPhone, prior to deployment. The mtouch tool serves not only as a staging area but as a deployment vehicle, building the .app bundle that gets transferred to the device itself (the documentation for this feature has apparently yet to be written).
The Personal Edition of MonoTouch, with a single license and the MonoDevelop IDE for Mac, is somewhat cheaper, selling for $399. Individual developers interested in deploying their apps through the iPhone App Store will need to invest in the Enterprise Edition, however, which sells for $999.