zoukankan      html  css  js  c++  java
  • IKVM Practice Java to C#

    Introduction:

    IKVM.NET is an implementation of Java for Mono and the Microsoft .NET Framework. It includes the following components:

    • A Java Virtual Machine implemented in .NET
    • A .NET implementation of the Java class libraries
    • Tools that enable Java and .NET interoperability

    IKVM.NET is a JVM for the Microsoft .NET Framework and Mono. It can both dynamically run Java classes and can be used to convert Java jars into .NET assemblies. It also includes a port of the OpenJDK class libraries to .NET.

    Official Website:http://www.ikvm.net/

    Uses for IKVM.NET

    IKVM.NET is useful for several different software development scenarios. Here is a sampling of some of the possibilities.

    IKVM提供2种主要的方式在.NET平台上运用Java项目。

    动态方式,即通过IKVM .NET实现的JVM直接运行Java项目,这种方式需要动态的将Java的class或者jar等文件编译成.NET的CIL, 所以启动的时候会比较慢。

    静态方式,即使用IKVM的工具先将class、jar文件编译为.NET的CIL程序集,然后在.NET framework上运行这些程序集,这种方式可以在.NET开发中直接使用Java的类库
    项目组件、程序集介绍参考这里:

    IKVM对于2中状况比较有用:

    一种Java中的一些项目没有.NET实现的。

    另一种是某些Java开源项目存在相应的.NET port,但Java的项目很活跃一直在完善更新,而.NET port则停滞了。

    对于纯粹基于JDK的Java项目,IKVM目前应该能够处理的比较完善了, 对于使用了Swing和JNI的Java项目,IKVM也有提供支持,但不了解支持程度以及稳定性等方面。
    项目使用的lisence值得考虑,IKVM.OpenJDK.*.dll使用GPL V2,其他的IKVM项目文件使用的lisence应该是BSD之类的。

    Download IKVM from official website and unpack to special directory

    IKVM.NET  Component

    • IKVM.Runtime.dll 是虚拟机运行时和所有支持的代码。包含如下:

    1)Byte Code JIT 编译器/验证器。JIT 把 Java Byte Code编译成 CIL(C中间语言)。

    2) 重映射基础结构的对象模型。

       将.NET中的System.Object,System.String,System.Exception映射为JAVA代码中的java.lang.Object, java.lang.String,java.lang.Throwable。

    3) 在 Classpath 中重实现托管的.NET 的本地方法。

    • ikvm.exe 是相当于精简的、可执行文件 java.exe(“dynamic mode”)。
    • ikvmc.exe 是静态编译器。用来把 Java 类和 jar 包编译成 .NET 程序集(“static mode”)。
    • ikvmstub.exe 是从 .NET 程序集生成 stub 类文件的一个工具,这样,Java 代码就可以被编译成 .NET 代码。IKVM.NET 根据stub,引用被真正的 .NET 类型的引用替换。
    • 为.NET程序集生成Java class的代理文件,以便在Java中使用.NET程序集的功能
    • Compiling a Jar Into An Assembly
  • 相关阅读:
    NConsoler 介绍
    HOWTO:批量删除存储过程和表
    HOWTO:使ASP.NET网站Forms验证可以指定多个登录页面
    [架构模式实践]如何不让第三方服务/组件的故障阻碍开发和测试进度
    GDI+学习笔记
    脚印: SD2C 2009 参会小记(非技术篇)
    Expression Web使用问题,相关资源及今日阅读
    HOWTO:FirePHP乱码问题解决
    [ECSHOP挖寶]用戶注銷過程
    励志好文
  • 原文地址:https://www.cnblogs.com/yefengmeander/p/2972016.html
Copyright © 2011-2022 走看看