Small SQL

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.

Static compiler. Used to compile Java classes and jars into a .NET assembly ("static mode"). There are different classloader options.

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):

  • Byte Code JIT compiler/verifier: Just-in-time compiles Java Byte Code to CIL.
  • Object model remapping infrastructure: Makes System.Object, System.String and System.Exception appear to Java code as java.lang.Object, java.lang.String and java.lang.Throwable.
  • Managed .NET re-implementations of the native methods in Classpath.

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.


Wiki: ClassLoader
Wiki: FAQ
Wiki: Ikvm
Wiki: Ikvmc
Wiki: Ikvmstub
Wiki: User's_Guide

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

No, thanks