The IKVM.NET consists of multiple files:
Components of IKVM.NET
Starter executable, comparable to java.exe ("dynamic mode"). The Java application will start slow because all classes need to converted on the fly.
A tool that generates stub class files from a .NET assembly, so that Java code can be compiled against .NET code. IKVM.NET understands the stubs and replaces the references to the stubs by references to the actual .NET types.
The VM runtime and all supporting code. It contains (among other things):
This are a compiled version of the Java class libraries, plus some additional IKVM.NET specific code.
Small unmanaged C library that is used by the JNI interface. This is an optional part, and on Windows it is only required when an application uses it's own native libraries. When running on Mono, this library is also used by the NIO memory mapped files implementation. This library ships as part of the Mono distribution and has been designed not to require any changes between IKVM versions, so if you download or compile a new version of IKVM, you don't necessarily need to update this native library.
This are the AWT and Swing peers. This include the java.awt.Toolkit, fonts, images and more GUI stuff.