IKVM.NET プロジェクトは,Mono プラットフォームおよび Microsoft .NET フレームワーク用 Java インプリメンテーションの バージョン7をリリースした。Jeroen Frijters 氏が開発したこのプロジェクトは,JVM と .NET プラットフォームの間にあるギャップを埋めるために設計されたもので,Microsoft .NET フレームワークと Mono 2.0 を対象に Java ベースのアプリケーションを .NET で実行する機能を提供する。
以下のコンポーネントが IKVM.NET プロジェクトを構成する。
.NET 上の Java 仮想マシン実装
Java クラスライブラリの .NET 実装
Java と .NET の相互運用を可能にするツール群
最新のリリースでは,OpenJDK 7 b147 ベースのサポート組込みと Java7 JVM の変更点を中心に,いくつかの新機能が提供されている。前回のリリース以降に実施された改良点は,次のようなものだ。
- 静的コンパイルされたコード上の Java アノテーションが java.lang.reflect.Proxy オブジェクトとして返されるようになり,これを前提として記述されたコードとの互換性が改善された。
- java.lang.reflect.InvocationHandler から ikvm.runtime.Delegates へのデリゲート変換が追加された。
- ビルド処理と JNI コードが Windows x86 と x64 バージョンで異なるネイティブ DLL 名称を使用するように変更された。
- ikvmc でコンパイルされたコードにリフレクションフィールドの順序を維持するようにした (仕様で要求されたものではないが,この順序に依存するコードとの互換性向上のため)。
- java.lang.AutoCloseable と System.IDisposable 間の相互運用。
- java.io.FileOutputStream が追加モードでアトミック append を使うように修正。
- ikvm.exe に -Xnoglobbing オプションを追加。
- デュアルスタック・ソケットの実装 (Windows Vista 以降のみ)。
- プラットフォーム MBean サーバの実装。
- SocketChannel.sendOutOfBandData() の実装。
- DatagramChannel マルチキャストメソッドの実装。
- System.Security.VerificationException から java.lang.VerifyError へのマッピングを削除。
- IKVM.Reflection: マネージド PE 機能の大部分をサポートする, (System.Reflection.Emit よりもはるかに) 大規模な機能強化。
リリースノートによると,今回のリリースは 32bit および 64 bit 両方の Windows 上で,.NET Framework 2.0 SP2 と .NET 4.0 を使用してテストされた。