i came across ahead-of-time (aot) compilation in some writing by Miguel de Icaza about producing applications for iphone using mono. It sounds like what results is native code. Is this so or what is the difference?
When you use aot=full (only supported on a few platforms) then no code will be JITed at runtime.
But you still require a runtime to provide many of the features that your application uses. Mono's runtime includes support for garbage collection, thread management, the IO-layer, the IOremapping layer, the interface to the operating system, support for the decimal type, reflection (so you can still do things like type.GetMethods () for example).