IKVM.NET is a JVM for the Microsoft .NET Framework and Mono. It can both dynamically run Java classes and can be used to convert Java jars into .NET assemblies. It also includes a port of the OpenJDK class libraries to .NET.
IKVM works great. I just had one problem. I have a Java class that reads audio. However, I was unable to send the audio from C# to Java. Apart from that, it is excellent. :)