IKVM.NET介紹
摺疊編輯本段IKVM.NET技術特性
摺疊編輯本段IKVM.NET的組成
IKVM.NET包含以下的部分:
IKVM.Runtime.dll: VM運行時和所有支持代碼。
它包括以下的功能:
Byte Code JIT 編譯器和驗證器: 使用JIT將Java Byte Code編譯爲CIL(C中間語言)。
對象模式映射結構: 將.NET中的System.Object,System.String,System.Exception映射爲java代碼中的java.lang.Object, java.lang.String,java.lang.Throwable。
管理本地方法(在Classpath中)的.NET重新實現。
*IKVM.GNU.Classpath.dll: 被編譯的GNU Classpath版本,它是由自由軟件基金會實現的java類庫和一些IKVM.NET附加代碼組成的。注意:這裏的GNU Classpath不是IKVM.NET的一部分,但是前者被用在IK.VM.NET中。
IKVM.JNI.[Mono|CLR-Win32].dll: 通過實現JNI接口管理C++彙編。作爲一個可選部分,只在程序使用自己的本地庫時才被用到。而對於純java程序來講是不會被用到的。
ikvm.exe: 與java.exe很類似的啓動執行程序(動態模式)。
ikvmc.exe: 靜態編譯器,被用來編譯java類和jar使其成爲.NET彙編(靜態模式)。
ikvmstub.exe: 一個從.NET彙編生成存根類的工具,就如javap一樣反編譯.NET彙編。IKVM.NET瞭解如何存根並用實際的.NET類型引用替換對存根的引用。
IKVM.AWT.WinForms.dll: 非常有限的零散AWT實現。
摺疊編輯本段IKVM.NET的不足
此項目目前正在開發,將最大化實現與JDK1.4的兼容,但是仍存在一些漏洞(尤其在Classpth API
AWT和Swing還未有功能。
安全性是IKVM平臺的一個大遺漏。此問題將依靠.NET平臺提供的舊有的、但功能強大的安全模式而被解決。 雖然這樣,目前項目已具備能成功運行大型java項目的能力。IKVM目前不成熟的地方在以下幾個方面:
1.對AWT和Swing沒有提供支持,在IKVM的開發計劃中,這項優先級別不高。
2.對Java的安全模型沒有實現。
摺疊編輯本段IKVM.NET的適用場合
一般來說我們可以在以下3種情況下使用IKVM:
1.直接在IKVM下運行Java程序,比如:ikvm -jar myapp.jar
2.用IKVM來把Java類庫轉換成.NET類庫,比如:ikvmc -target:library mylib.jar ?可以生成: mylib.dll
3.使用ikvmstub 來用Java開發.NET程序。