IKVM.NET_08_开发者指南

本文内容

  • 概述
  • 概念
  • .NET中使用Java API

 

概述

IKVM.NET 使得可以在 Java 环境下开发 .NET 应用程序,也可以在任何.NET语言编写的应用程序中,使用现存的 Java API 和库。本文对于那些想把 Java 作为首选的 .NET 开发语言,以及那些想在 C# 或 VB.NET 应用程序中使用 Java 类库的那些开发者,提供了一些有益的信息。

 

概念

本小节讨论关于 IKVM.NET 的功能和限制的一些重要概念。

  • 加载字节码
  • 支持调试
加载字节码

IKVM.NET 完全支持动态地加载 Java 字节码,无论是运行在 ikvm JVM 上的 Java 应用程序,还是已经利用 ikvmc 转换成 .NET CIL的 Java 应用程序。

  • 已动态地解释 Java 应用程序来加载字节码。

当你使用 ikvm 运行一个 Java 应用程序时,ikvm 查找并加载 Java 字节码文件,就像 Java 虚拟机一样。

  • 已 ikvmc 编译 Java 应用程序来加载字节码

当你使用 ikvmc 把一个 Java 应用程序转换成 .NET 公共中间语言时,转换的代码作为 "native" .NET 代码来执行。每个 .NET 程序集(DLL文件)都将拥有它自己的Java字节码装载器的实例(特别是 ikvm.runtime.AssemblyClassLoader 装载器)。这个字节码装载器将通过下面方式加载类:

1) 首先,查找相应的程序集文件。若这个类在程序集中,那么就找到了。

2) 再搜索这个程序集直接引用的程序集。也就是这个DLL文件引用的其他DLL文件。

支持调试

使用 ikvmc 的 "-debug" 选项把 Java 应用程序转换成公共中间语言时,可以通过标准的 .NET / Mono调试工具调试该 Java 应用程序(javac: -g or jikes: -g:lines,vars,source)。

 

.NET 应用程序中使用 Java APIs

本小节讨论在 .NET 应用程序中使用 Java API。

  • 概述
  • Java 与 .NET 互操作性问题
  • Subclassing Java Code
概述

IKVM 使得用 Java APIs 来开发 .NET 应用程序变得非常容易。

IKVM 是在 .NET 中实现 Java 类库。为了使用 Java APIs,只要将 IKVM.OpenJDK.ClassLibrary.dll 的引用添加到 Mono / .NET 项目即可。

若想使用 Java APIs,你可以采用下面方法中的一个:

1) 用 ikvmc 将 Java APIs 转换成 .NET 公共中间语言(CIL)。你就可以把生成的 .NET dll 文件的引用添加到你的项目。

2) 使用 Java 反射 APIs,通过 IKVM 字节码解释器,来动态加载和执行 Java 字节码。比如,你的应用程序可以通过网络连接来加载Java字节码,并动态执行。

Java 与 .NET 互操作性问题

当你在 .NET 语言,如 C#,调用 Java APIs 时,你需要知道如何解决 .NET 与 Java 对象模型之间的差别。例如,Java 和 .NET 都有自己的 String 类,基本的封装类,异常的继承关系等等。你可以使用下面资源。

1) IKVM WebLog 有很多帮助的条目。

2) 看下 IKVM 的Demo。

3) IKVM 源代码是最后的参考资料。

Subclassing Java Code

略。

posted @ 2011-08-28 20:28  船长&CAP  阅读(586)  评论(2编辑  收藏  举报
免费流量统计软件