IKVM.NET
 
   

IKVM.NET Home Page

Introduction

IKVM.NET is an implementation of Java for Mono and the Microsoft .NET Framework. It includes the following components:

  • A Java Virtual Machine implemented in .NET
  • A .NET implementation of the Java class libraries
  • Tools that enable Java and .NET interoperability

Read more about what you can do with IKVM.NET.

IKVM.NET Components

IKVM.NET consists of several parts:

  • IKVM.Runtime.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.
  • IKVM.GNU.Classpath.dll: compiled version of GNU Classpath, the Free Software Foundation's implementation of the Java class libraries, plus some additional IKVM.NET specific code. Note that GNU Classpath isn't part of IKVM.NET, but it is used by IKVM.NET
  • ikvm-native.dll: Unmanaged C library that implements a small part of the JNI interface and some platform specific code on non Windows platforms. On Windows this is an optional part, only required when an application uses its own native libraries. This is not needed for pure Java applications. On non-Windows platforms it is required, but it is included with the Mono distribution so it usually doesn't need to be installed seperately.
  • ikvm.exe: Starter executable, comparable to java.exe ("dynamic mode").
  • ikvmc.exe: Static compiler. Used to compile Java classes and jars into a .NET assembly ("static mode") .
  • ikvmstub.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.
  • IKVM.AWT.WinForms.dll: Very limited and broken implementation of a few AWT peers. This is a low priority issue for me.

Project Status

This project is currently in active development. Compliance with JDK 1.4 is largely implemented, but there are some holes (particularly in the Classpath API's). In particular,

  • AWT and Swing are not presently functional. This is a low priority item for the project developers.
  • Security is another fairly large hole missing from the IKVM platform. This will be solved by relying on the sophisticated and powerful security model offered by the .NET platform.

Still, enough functionality is in place that several large Java projects run successfully.

Related Work

The following projects are related to IKVM.NET in some way:

Valid HTML 4.01!Valid CSS!Built with Apache Forrest logo