Your opinion matters! Please fill in the InfoQ Survey!

Update on IKVM, a JVM for the Common Language Runtime

| by Jonathan Allen Follow 250 Followers on Jan 20, 2010. Estimated reading time: 1 minute |

A note to our readers: As per your request we have developed a set of features that allow you to reduce the noise, while not losing sight of anything that is important. Get email and web notifications by choosing the topics you are interested in.

The goal of IKVM is to add Java support to the Common Language Runtime in two ways. In dynamic mode Java byte code is reinterpreted as IL code at runtime. In static mode, Java source code is compiled into IL instead of Java byte code. Running in either mode, IKVM seeks to be a nearly full implementation of the Java specification. Aside from some libraries that are not yet implemented, the major difference is that class loading in static mode will not exactly match the JVM behavior.

IKVM consists of a number of components.

  • ikvm: A started executable used in dynamic mode. One could think of it as the CLR version of java.exe
  • ikvmc: A static compiler that is used to compile Java classes and jars into .NET assemblies under the static mode paradigm.
  • ikvmstub: This tool is used to create class files that act as stubs for .NET classes that a Java program needs.
  • IKVM.Runtime.dll: This is the VM runtime itself. In addition to the just-in-time byte code to IL converter it handles the mapping between the Java and .NET object model.
  • IKVM.OpenJDK.*.dll: This is the “compiled version of the Java class libraries, plus some additional IKVM.NET specific code.”
  • ikvm-native.dll: A unmanaged C library needed for the JNI interface.
  • IKVM.AWT.WinForms.dll: This contains the AWT and Swing peers.

IKVM is currently in release candidate 3. You can see the current list of known issues and incompatibilities on the IKVM blog.

Rate this Article

Adoption Stage

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

IKVM rocks by mikhail franco

I had to use IKVM to port a complex project using Jetty, JAXB and countless other 3rd party libraries - it just worked.

The coverage and completeness was way beyond my expectations. It was also simple to understand, configure and start using. It was such a pleasure (and a relief) to find something that delivered so much value without any Sturm und Drang.

Total respect to the IKVM team.


Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

1 Discuss

Login to InfoQ to interact with what matters most to you.

Recover your password...


Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.


More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.


Stay up-to-date

Set up your notifications and don't miss out on content that matters to you