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.
IKVM.NET consists of several components.
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.
What's the relation between Mono and this project?
IKVM.NET and Mono are separate projects, but the IKVM.NET binaries are shipped as part of Mono.
How compatible is it?
The goal is to (almost) fully implement the JVM spec and to be compatible with Sun's JDK reference implementation and to provide performance comparable to the HotSpot Client VM. There is a list of currently not implemented packages and a list of compatible libraries.
Where can I get it?
How can I get support?
Take a look on our support page.
How can I contribute to IKVM.NET ?
There are multiple options to contribute.
How can I build IKVM from repository?
How does class loading work?
While IKVM.NET tries hard to make things "just work", Java and .NET class loading are fundamentally different and this can sometimes cause complications that require some extra care. See ClassLoader for more information.
I receive a ClassNotFoundException?
See at ClassNotFoundException for more information.