IKVM.NET
 
   

Frequently Asked Questions

What is IKVM.NET?

IKVM.NET is a JVM for Mono and the Microsoft .NET framework.

What do you mean by JVM for .NET?

The goal of IKVM.NET is two-fold:

  • To be able to run any Java existing application ("dynamic mode").
  • To be able to statically compile Java libraries into .NET assemblies ("static mode"). Note that you can also statically compile Java applications, but if the application depends on the exact Java class loading semantics, it might need to be adapted. Dynamic mode supports the full Java class loader model, but in static mode there are necessarily some limitations. A mixed model is also possible, for example, statically compiled code can instantiate a class loader and use it to dynamically load classes.

Why this project?

There are several answers to this. First of all, it's a fun thing to work on. Second, it just seems obvious that something like this should exist. Third, I want to migrate some of my Java code to .NET and J# and JUMP just aren't good enough.

How compatible is it?

The goal is to fully implement the JVM spec and to be compatible with Sun's JDK 1.4 reference implementation. At the moment we're not quite there yet, but many things are working already. Note that this refers to the JVM, not the class libraries. For details on the completeness of the class libraries, please visit the GNU Classpath site.