Mono coming to the iPhone
The Mono developers have announced a limited beta and September release of MonoTouch, an edition of Mono for the Apple's iPhone and iPod Touch devices. The open source .NET implementation has had some hurdles to overcome to be able to work within Apple's technical and legal requirements.
Apple requires that developers not introduce just-in-time engines or scripting, to reduced exposure to malware; because of this there are few alternative languages for developing native applications on the iPhone without using Apple's Objective-C tools on Mac OS X. The Mono developers have avoided the Apple restrictions by creating a static compiler which converts .NET executables and libraries into native code. By using Mono's Ahead Of Time (AOT) compilation, a feature of Mono's runtime code generator, the compiled code can be pre-optimised for faster start up, better memory sharing and improved performance. The limitation of this process is that dynamic code generation using
System.Reflection.Emit is, of course, not available.
A MonoTouch UIKit library provides developers with access to the iPhone's underlying user interface components including the accelerometer and virtual keyboard. Mono developers will need to use this library extensively in their code to make full use of the iPhone's capabilities. The beta release is available to developers who want to try out the API library, a plug-in for the Xcode IDE and associated tools. Interested developers are invited to apply online to participate.
The roadmap for MonoTouch has a 1.0 version planned which will allow developers to deliver standalone Mono applications using the UIKit or OpenTK support (for accessing OpenGLES 3D graphics on the iPhone). A 2.0 version on MonoTouch is also mentioned; this will include a Silverlight to iPhone compiler, XCode debugging and LINQ support.