IKVM 旨在向 CLR 中增加 Java 支持,实现手段有两种:动态模式和静态模式。在动态模式下,Java 字节码会在运行期被重新解释成 IL 代码;在静态模式下,Java 源代码会被编译成 IL 代码而非 Java 字节码。无论哪种方式,IKVM 都致力于成为 Java 规范的完整实现。除了尚未实现某些程序库以外,这两种方式的主要差别在于静态模式下的类装载并不完全符合JVM 行为。
IKVM 具有大量的组件:
- ikvm:动态模式下的起始执行点。大家可以把它看作是 CLR 版本的 java.exe。
- ikvmc:这是一个静态编译器,用于在静态模式下将 Java class 和 jar 编译成.NET 程序集。
- ikvmstub:该工具用于创建 class 文件,创建好的 class 文件作为 Java 程序访问.NET 类的桩。
- IKVM.Runtime.dll:这是 VM 运行时本身。除了可以即时将 Java 字节码转换成 IL 代码外,它还会处理 Java 和.NET 对象模型之间的映射关系。
- IKVM.OpenJDK.*.dll:这是“Java 程序库编译后的版本,外加一些 IKVM.NET 特有的代码”。
- ikvm-native.dll:JNI 接口所需的一个非托管 C 程序库。
- IKVM.AWT.WinForms.dll:包含了 AWT 和 Swing 对等的组件。
目前的 IKVM 的版本是 RC3。感兴趣的读者可以在 IKVM 的博客上查看当前已知问题和不兼容情况的完整列表。
查看英文原文: Update on IKVM, a JVM for the Common Language Runtime
评论