在.NET/Mono 上运行 Java:Jeroens Frijters 谈 IKVM.NET

  • Jeff Martin
  • 张龙

2012 年 5 月 10 日

话题:Java.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 承认还有很多工作要做以提升新指令的性能。

查看英文原文:Running Java on NET/Mono: Jeroens Frijters Discusses IKVM.NET

Java.NET语言 & 开发