从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来调用它。
我是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主程序,它将采用适当的命令行参数并返回文本输出。
这是最古老,最简单的方法。