在.NET/Mono上运行Java:Jeroens Frijters谈IKVM.NET
IKVM.NET(IKVM)是个面向.NET与Mono平台的JVM,用户可以通过它直接运行Java应用。近日,来自微软的Erik Meijer与IKVM创建者Jeroen Frijters讨论了该项目的几个方面。此次讨论的涉及面非常广,从IKVM的内核谈到了该项目的未来目标。其要点如下所示:
Frijters从2002年该项目启动开始就作为项目的主开发者。此次讨论首先从Frijters介绍IKVM是如何成为Mono项目的一部分 (形成一种双赢的局面,两个项目可以彼此贡献补丁)开始。从架构上来说,IKVM在.NET上完全实现出了Java的内存模型。Frijters尝试尽量 不使用包装器,在某些情况下需要通过包装器才能正确地处理Java的字符串接口。
如果代码运行在IKVM上,那么.NET开发者可以在Java代码中使用自定义属性。如果代码运行在IKVM上,那么Java与.NET这两个平台都可以使用属性。这样,开发者就可以在Java代码中使用.NET自定义属性,也可以在C#类与成员中使用Java注解。
在背后,IKVM的运行时与编译器主要都是使用C#编写的。Frijters可以使用公开的Java代码(来自于GNU Classpath与OpenJDK等)并替换掉托管代码中的原生C代码。如果用户在应用中没有使用原生代码,那么使用了IKVM的Java应用就是完全 可移植的,因为IKVM并未使用任何原生代码。
目前,IKVM已完全支持Java 7,包括对新的指令invoke dynamic的支持。然而,Frijters承认还有很多工作要做以提升新指令的性能。