首先,Sun没有动力在JVM上实现C#编译器,因为它们具有非常相似的称为Java编程语言的东西.
它也不像实现编译器那么简单,因为Java标准类库与.net基类库不同.您最终必须将所有.NET API调用更改为Java API调用.
Micrsoft有一个名为J#的产品,用于Java到.NET的转换,但最终没有人使用它,因为API仅限于Java 2之前的API,因此它几乎没用.如果Sun实现了.NET BCL的部分内容,那将是相同的,因为只有它的核心部分是标准化的和免版税的.像ASP.NET和WPF,WCF等部分不是ECMA标准的一部分,所以Sun需要微软的许可才能实现这些API.
如果有足够多的客户希望java版本具有商业意义来将您的应用程序移植到java然后执行它,那么您将无法通过C#到JVM编译器从Sun获得任何帮助.
首先,Sun没有动力在JVM上实现C#编译器,因为它们具有非常相似的称为Java编程语言的东西.
它也不像实现编译器那么简单,因为Java标准类库与.net基类库不同.您最终必须将所有.NET API调用更改为Java API调用.
Micrsoft有一个名为J#的产品,用于Java到.NET的转换,但最终没有人使用它,因为API仅限于Java 2之前的API,因此它几乎没用.如果Sun实现了.NET BCL的部分内容,那将是相同的,因为只有它的核心部分是标准化的和免版税的.像ASP.NET和WPF,WCF等部分不是ECMA标准的一部分,所以Sun需要微软的许可才能实现这些API.
如果有足够多的客户希望java版本具有商业意义来将您的应用程序移植到java然后执行它,那么您将无法通过C#到JVM编译器从Sun获得任何帮助.
Joe Erickson写道:
在Java平台上运行C#代码更容易,这意味着更多的开发人员和更多的平台软件.
这是一个不真实的陈述.在JVM上运行C#代码不会创建Java程序员,它会创建可以在JVM上执行的C#程序员.它只扩展了C#的范围,假设JVM还将任何微软特定的调用(即win32)转换为平台中立的东西.因此,如果Sun将IL转换为Java字节码,那么它唯一可以帮助的是:Microsoft.而且,鉴于Sun在最初的C#-Java分裂/ Visual J ++诉讼中与微软的历史......
此外,无论您是否愿意,您都必须面对技术上的不可行性.字节码的执行方式存在根本区别,这些问题远比是否存在无符号长数据类型更重要.
如果您必须在非Microsoft平台上安装C#,请使用Mono
为什么Microsoft不对C#进行Java字节码编译?为什么不,你做了吗?每边都有开放的规格......
"因此,我们希望构建一个Java版本的核心引擎,理想情况下不需要维护单独的Java源代码库."
基本上,您希望编译未修改的C#代码,并使其在仅Java环境中运行.
IKVM 不是你想要的. IKVM 主要有三个方面.
一个.ikvm - Java虚拟机的CLI实现(请注意,这为Java类库使用Classpath(现为OpenJDK)).
湾 ikvmc - 将java字节码编译为CLI字节码.
C.ikvmstub - 生成调用CLI代码的java存根类.
请注意,所有这些工具都在运行时依赖于CLI.你想要的是与IKVM完全相反的东西,它当然是MVKI(最尊敬的Kompiler Intermediary):):
一个.mvki - CLI虚拟机的Java实现(可能会使用Mono或DotGNU作为类库).
湾 mvkic - 将CLI字节码编译为Java字节码.
C.mvkistub - 生成调用Java的CLI存根类
请注意,这些都不需要在运行时现有的.NET Framework实现,因此它们应该让您的Java客户满意.
不幸的是,据我所知MVKI不存在,所以你最好做一个手动端口(这将不可避免地更干净,虽然更多的工作).
编辑:根据Mainsoft 的描述,它似乎与MVKI相似,虽然我不确定他们为类库做了什么,而且与IKVM不同,它不是FOSS.
http://jsc.sourceforge.net/是ac #cross编译器,可以将.NET代码转换为Java(以及其他内容).
将您的.NET API公开为ASMX Web服务,您应该很高兴.
编辑:对于更多繁重的使用场景,值得研究Windows Communication Foundation(WCF).它具有内置的可配置支持,可用于安全性,流式传输,不同的传输方案(HTTP,TCP/IP,本地命名管道).您不仅限于SOAP消息编码,但这可能是与Java互操作的最简单方法.
我不太确定你的具体情况,但是如果你正在处理大文件并且.NET代码和Java代码都在本地运行,你可以使用.NET将文件保存到用户的硬盘驱动器然后获取它来自您的Java应用程序.