IKVM.NET

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

基本介紹

  • 外文名:KVM.NET
  • 屬性:Java虛擬機
  • 基於:.NET CLR
  • 特性:4點
程式簡介,技術特性,組成,不足,適用場合,

程式簡介

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

技術特性

IKVM的技術特性包括:
1.可以靜態和動態(運行時)把Java的位元組代碼轉換為.NET 的IL形式;
2.包括了一個Java的標準庫,這個標準庫已經靜態編譯成了.NET IL的形式;
3.提供了JNI 接口,可以讓Java程式通過.NET 或者 Mono 訪問本地資源。
4.提供了一個供Java調用.NET 類的Stub。

組成

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實現。

不足

AWT和Swing還未有功能。
安全性是IKVM平台的一個大遺漏。此問題將依靠.NET平台提供的舊有的、但功能強大的安全模式而被解決。 雖然這樣,目前項目已具備能成功運行大型java項目的能力。IKVM目前不成熟的地方在以下幾個方面:
1.對AWT和Swing沒有提供支持,在IKVM的開發計畫中,這項優先權別不高。
2.對Java的安全模型沒有實現。

適用場合

一般來說我們可以在以下3種情況下使用IKVM:
1.直接在IKVM下運行Java程式,比如:ikvm -jar myapp.jar
2.用IKVM來把Java類庫轉換成.NET類庫,比如:ikvmc -target:library mylib.jar ?可以生成: mylib.dll
3.使用ikvmstub 來用Java開發.NET程式。

相關詞條

熱門詞條

聯絡我們