IKVM.NET Weblog
The development of a Java VM for .NET
        

F.A.Q.

What is IKVM.NET?

IKVM.NET is a JVM for the Microsoft .NET framework and hopefully in the near future for Mono as well.

What do you mean by JVM for .NET?

The goal of IKVM.NET is to be able to run any Java existing application and to allow for as much interoperability between .NET and Java code as is possible.

IKVM.NET consists of several parts:

  • ik.vm.net.dll: 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.
  • classpath.dll: compiled version of GNU Classpath, the Free Software Foundation's implementation of the Java class libraries. Note that Classpath isn't part of IKVM.NET, but it is used by IK.VM.NET
  • ik.vm.jni.dll: Managed C++ assembly that implements the JNI interface. This is an optional part, only required when an application uses it's own native libraries. This will not be required for pure Java applications, this is important because this code will only run on Microsoft's .NET implementation.
  • ikvm.exe: Starter executable, comparable to java.exe
  • ikvmc.exe: Static compiler. Used to compile Classpath classes into a .NET assembly. In the future it will also be possible to compile Java applications and libraries into .NET assemblies.
  • netexp.exe: 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.
  • awt.dll: Very limited and broken implementation of a few AWT peers. This is a low priority issue for me.

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.

Where can I get it?

Latest Source code snapshot (including binaries).

Just the Binaries

SourceForge project



© Copyright 2003 Jeroen Frijters. Click here to send an email to the editor of this weblog.
Last update: 3/13/2003; 2:21:18 PM.