IKVM.NET 项目是对 Mono 和 Microsoft.NET 的 Java 实现,最近发布了 7.0 版本。这个项目是由 Jeroen Frijters 开发的,设计初衷是为了架起 JVM 和.NET 平台之间的桥梁。IKVM.NET 提供了在.NET 上运行 Java 应用程序的功能,并支持微软的.NET 框架和 Mono 2.0。
IKVM.NET 项目由以下组件构成:
.NET 中实现的 Java 虚拟机
对 Java 类库的.NET 实现
让 Java 和.NET 可互操作的工具
最新的版本中增加了多项新特性,包括专注于互操作的支持,这是基于 OpenJDK 7 b147 和 Java 7 JVM 的变更做出的。与上次发布的版本相比,此次做出的改善包括:
- 在静态编译代码上的 Java 注解现在会返回为 java.lang.reflect.Proxy 对象,从而与假设总是如此的代码保持兼容。
- 增加了从 java.lang.reflect.InvocationHandler 到 ikvm.runtime.Delegates 的托管转换(delegate conversion)。
- 对构建和 JNI 代码的变更,以针对 Windows x86 和 x64 版本的本地 dll 使用不同的名称。
- 保留 ikvmc 编译代码使用的反射字段(这并不是必须的,只是为了与之前被破坏的代码保持兼容)。
- java.lang.AutoCloseable 和 System.IDisposable 之间的互操作。
- 修正了 append 模式中的 java.io.FileOutputStream,以使用原子级的 append。
- 为 ikvm.exe 增加了 -Xnoglobbing 选项。
- 实现了双堆栈(dual stack)sockets(仅对 Windows Vista 及以上版本)。
- 实现了 MBean 服务器。
- 实现了 SocketChannel.sendOutOfBandData()。
- 实现了 DatagramChannel 的 multicast 方法。
- 删除了从 System.Security.VerificationException 向 java.lang.VerifyError 的映射。
- IKVM.Reflection: 多项改善,以支持大部分托管的 PE 功能。(比 System.Reflection.Emit 要强大很多)。
发布声明声称,这个版本已经在 Windows 下通过了 32 位和 64 位的.NET Framework 2.0 SP2 和.NET 4.0 的测试。
查看英文原文: IKVM.NET 7.0 Released
评论