This section discusses several important concepts about
the capabilities and limitations of IKVM.NET.
IKVM.NET fully supports dynamic Java class loading, both in Java applications running in the ikvm
JVM, as well as in Java applications which have been converted to .NET CIL using ikvmc.
Class Loading in Dynamically Interpreted Java Applications
When you run a Java application using ikvm, ikvm finds and loads Java .class files much like
other Java VM's. See the ikvm notes for details.
Class Loading in ikvmc-compiled Java Applications
When you convert a Java application to CIL using ikvmc, it executes as "native" .NET code. Each .NET assembly will have its own
Java class loader instance (typically of the type ikvm.runtime.AssemblyClassLoader). This class loader will load classes using the following algorithm:
- The corresponding assembly is searched first. Thus, if the class exists in the assembly, it will be found there.
- All assemblies directly referenced by corresponding assembly are searched.
For more details see these two articles: Class Loading Architecture, Writing a Custom Assembly Class Loader
Java applications converted to CIL using ikvmc with the -debug option can be debugged using standard .NET / Mono debugging
tools. Remember to compile the Java source code using the appropriate debug option (javac: -g or jikes: -g:lines,vars,source).
by Stephen Schaub