http://weblog.ikvm.net/
让 Java 语言成为 Mono 项目的一部分将是件非常有趣的事情 .
你可能在考虑一些支持 Java 不得不考虑的问题 , 比如 Java 语言 ,Java 虚拟机等等 .
Microsoft J# 编译器可以将 Java 程序编译成 .Net 应用软件 , 但是 Mono 可以支持直接将 Java 应用移植到 .Net 平台 .
虽然建立一个本地编译器 ( 意指将 Java 语言编译成 Java 字节码的编译器 ) 是可行的 , 但是最好还是能利用现成的本地编译器 , 一个较快速的解决方案是将 Java 的 CLASS 文件直接转换成 ECMA 的 CIL 镜像文件。
这里有个好处就是我们可以利用现成的,而且经过了测试的 Java 语言编译器来生成代码,然后我们就可以使用一个自动化的代码编译器来将 Java 字节码直接转换成 CIL 字节码。
写一个语法( semantic ) 转换器来将 Java 字节码转换成 CIL 字节码将是一件非常有趣的事情,这种可能性是因为 Java 的字节码其实只是 CIL 字节码的一个子集。
首先需要创建一个语法树( semantic tree ),一旦一个语法树被创建,我们就能生成相等的 Java 代码(怀疑此处应该为 CIL 代码)。
这样一来就有大量有趣的事情:人们可以直接利用现成的 Java 编译器来编译 Java 代码,然后使用一个工具简单的将他们的 CLASS 文件直接转换成 .Net 可以使用的 Assembly 文件。
我们能使用上述的工具来将 GNU 类库( GNU Classpath Libraries )由转换到 Mono 运行时上。一些核心的数据类型将需要特殊对待,例如整型,数组和字符串。当然也可以重用现存的 .Net 类库,但是必须要使它们之间互相兼容。
这个是一个能让 Java 的字节码能在 .Net 环境下直接运行的计划。
这个项目试图从已经编译好的 Java 类文件直接生成 IL 中间码。它已经到达了代码生成的阶段。当前的问题是如何解决 IL 对象和 Java 对象之间的映射寻址问题,例如:从 java.lang.String 到 System.String 。
Gaurav Vaish 和 Abhaya Agarwal 当前正领导着这个项目的开发,这个项目当前存在于 http://sourceforge.net/projects/jilc,它的官方主页是: http://jilc.sourceforge.net.