在.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 承認還有很多工作要做以提升新指令的性能。
查看英文原文:Running Java on NET/Mono: Jeroens Frijters Discusses IKVM.NET