从Java调用C#代码?

有没有人有一个很好的解决scheme,将一些C#代码集成到一个Java应用程序?

代码很小,所以我可以用java重新编写代码,但如果可能的话,我宁愿重新使用代码。 不要重复自己,等等

另外,我知道我可以将C#作为一个Web服务或任何其他的东西公开,但是它里面有一些安全/encryption的东西,所以如果可能的话,我宁愿保持它的紧密集成。


编辑:它将在一个基于服务器的应用程序,所以“下载”另一个运行时是无关紧要的。

有一个IL到Java的Bytecode编译器GrassHopper可能对你有用。 我从来没有尝试过。

我想看看在Java中重写你的代码

编辑:请注意,蚱蜢似乎不再可用。

您将使用Java本地接口来调用编译为DLL的C#代码。

如果只有less量的C#,那么把它移植到Java就容易多了。 如果它很多,这可能是一个很好的方法来做到这一点。

这是一个高层次的概述:

http://en.wikipedia.org/wiki/Java_Native_Interface

你的另一个select是从C#代码创build一个COM程序集并使用J-Interop来调用它。

http://sourceforge.net/projects/j-interop/

我是JVM和CLR之间的开源内部网桥jni4net的作者。 它build立在JNI和PInvoke之上。 没有C / C ++代码需要。 我希望这会帮助你。

如果它很短,我认为你最好在java中重写代码。 下载一个50Mb的运行时间已经足够了。

我们为此使用了JNBridge ,而且效果很好。 它处理Java – >。NET,反之亦然,所有进程。

如果您不想将hadle重写为进程间通信 ,请select以下其中一项:

  • 命名的pipe道
  • 套接字
  • 肥皂

如果不是太麻烦,我会重写它。 该Web服务将工作,但似乎这将是一个很大的开销,只是重用一些代码。

http://www.infoq.com/articles/in-process-java-net-integrationbuild议在相同的进程空间中运行CLR和JVM,并来回传递调用。; 这听起来非常有效。 如果运行良好的话,我会尝试将它整合到Jace中 。

如果它是一段可作为命令行实用程序暴露的代码,则只需使其他主机语言使用系统调用即可执行该实用程序。

如果您的C#应用​​程序需要调用Java,请编译一个特殊的Java主程序,它将采用适当的命令行参数并返回文本输出。

这是最古老,最简单的方法。