IKVM.NET 7.0 Released

| by Jeff Martin Follow 17 Followers on Dec 09, 2011. Estimated reading time: 1 minute |

The IKVM.NET project has released version 7 of its implementation of Java for the Mono platform and Microsoft .NET Framework. This project, developed by Jeroen Frijters, is designed to bridge the gap between the JVM and the .NET platform. IKVM.NET provides the capability to run Java-based applications on .NET, and supports both Microsoft's .NET Framework and Mono 2.0.


The following components compose the IKVM.NET project:

A Java Virtual Machine implemented in .NET 

A .NET implementation of the Java class libraries

Tools that enable Java and .NET interoperability


The latest release brings about several new features including a focus on incorporating support based on OpenJDK 7 b147 and Java 7 JVM changes. Selected improvements made since the previous release include:

  • Java annotations on statically compiled code are now returned as java.lang.reflect.Proxy objects for compability with broken code that assumes this is always the case.
  • Added delegate conversion for java.lang.reflect.InvocationHandler to ikvm.runtime.Delegates.
  • Changed build and JNI code to use different names for the Windows x86 and x64 versions of the native dll.
  • Retain reflection field ordering for ikvmc compiled code (not required by spec, but to improve compatibility with broken code).
  • Interop between java.lang.AutoCloseable and System.IDisposable.
  • Fixed in append mode to use atomic append.
  • Added -Xnoglobbing option to ikvm.exe.
  • Implemented dual stack sockets (Windows Vista and up only).
  • Implemented platform MBean server.
  • Implemented SocketChannel.sendOutOfBandData().
  • Implemented DatagramChannel multicast methods.
  • Removed mapping of System.Security.VerificationException to java.lang.VerifyError.
  • IKVM.Reflection: Massive enhancements to support a very large portion of the managed PE capabilities (much more than System.Reflection.Emit).

Release notes indicate that this release has been tested on both 32-bit and 64-bit versions of .NET Framework 2.0 SP2 and .NET 4.0 under Windows.


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

Let's ask the obvious by M Vleth

Why would you ever want to run Java code on the CLR? What's the practical use here?

Re: Let's ask the obvious by Jonathan Allen

IKVM is offered for the same reason the CLR has p/invoke and COM interop, specifically that it is easier than porting some random Java library that your .NET or Mono application needs.

Re: Let's ask the obvious by ryan martin

Perhaps to utilize libraries/frameworks that have no .net counterpart and would take too long and cost too much to implement?

Re: Let's ask the obvious by Matej Tymes

For example it was used for porting scala to CLR.

Subject by Lyndon Samson

I think it's used for port of the SAXON XSLT/xquery engine to dotnet.

Re: Let's ask the obvious by peter lin

I used IKVM so that I could use Java's concurrent libraries in the past. This was before microsoft released .Net's concurrent libraries. Sometimes it is very handy and IKVM is a solid project. I've been following it for many years. The author of IKVM has submitted many bug reports to Microsoft, so it has helped make .Net better.

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

6 Discuss