IKVM.NET






IKVM.NET介紹


http://baike.haosou.com/doc/3854965.html

IKVM.NET的是開源的基於.NET CLR 的Java虛擬機。

基於.NET的Java虛擬機意味着我們可以讓Java程序跑在.NET上,可以通過虛擬機這個中介讓Java程序和.NET應用程序一起協同工作。更難能可貴的是,IKVM同時支持微軟的.NET Framework 和 Mono。

摺疊編輯本段IKVM.NET技術特性

IKVM的技術特性包括:

1.可以靜態和動態(運行時)把Java的字節代碼轉換爲.NET 的IL形式;

2.包括了一個Java的標準庫,這個標準庫已經靜態編譯成了.NET IL的形式;

3.提供了JNI 接口,可以讓Java程序通過.NET 或者 Mono 訪問本地資源。

4.提供了一個供Java調用.NET 類的Stub。

摺疊編輯本段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程序。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章