
Today, Novell released MonoTouch, the Mono edition for Apple's iPhone and iPod Touch devices. According to the release, MonoTouch allows developers to:
- create C# and .NET based applications that run on the iPhone
- take advantage of the iPhone APIs
- reuse both code and libraries that have been built for .NET
- reuse existing .NET skills
According to Mono leader Miguel de Icaza, MonoTouch brings garbage collection, thread management, type safety, and web services to the iPhone. Sounds like a step in the right direction.
At the Institute for Cyber Security, we develop mobile applications in our incubator and research operations, and iPhone is one of the platforms we target. As we have discussed before, Apple's SDK allows for developers to use Objective-C, which is essentially the C language with message passing (a la Smalltalk) thrown in. While the language is relatively open and limited libraries exist for socket communication, cryptography, and general utility functions, Objective-C is still a lower-level language than C# or Java, although Apple provides an IDE to assist in the creation of applications.
Early on, Sun had wanted to port the its Java virtual machine (JVM) to the iPhone, and had planned to offer it for free at the Apple Store.From the iPhone SDK Agreement:
"3.3.2 — An Application may not itself install or launch other executable code by any means, including without limitation through the use of a plug-in architecture, calling other frameworks, other APIs or otherwise. No interpreted code may be downloaded or used in an Application except for code that is interpreted and run by Apple’s Documented APIs and built-in interpreter(s)."
Short of jailbreaking the device, a virtual machine, Java or otherwise, still isn't allowed on the iPhone. However, while a high-level language like Java would be welcome to the iPhone (Google's Android uses Java, for example), Sun has shown no interest thus far in bringing "J" without the "VM". And Java's largest competitor, Microsoft's .NET Framework, has never considered porting its .NET VM off of a Windows environment.
Mono, of course, has shown exactly that interest, and since MonoTouch uses "ahead-of-time" compiling (i.e., regular old compiling) to transform C# to binary code, it doesn't need a VM to run, giving developers a familiar, high-level language to code for.
Mono sells different versions of its product, but will offer a free evaluation copy later this week. It will be exciting to see how Apple and the development community react to MonoTouch!
Erhan J. Kartaltepe,
erhan.kartaltepe-at-utsa.edu

