从Java调用C#代码?
有没有人能将Ccode集成到Java应用程序中?
代码很小,所以我可以用Java重写,但是如果可能的话,我宁愿重用代码。不要重复自己,等等。
另外,我知道我可以为Cas提供Web服务或者其他服务,但是其中包含一些安全性/加密功能,因此,我宁愿将其紧密集成。
编辑:它将在基于服务器的应用程序上,因此"下载"另一个运行时是无关紧要的。
解决方案
回答
如果太短,我认为最好用Java重写代码。下载一个50Mb运行时足够糟糕。
回答
如果不太麻烦,我会重写它。
Web服务可以工作,但仅重用少量代码似乎会产生很多开销。
回答
我们将使用Java本机接口来调用编译为DLL的Ccode。
如果使用少量的C#,则将其移植到Java会容易得多。如果很多,这可能是一个很好的方法。
这是它的高级概述:
http://en.wikipedia.org/wiki/Java_Native_Interface
另一个选择是从Ccode创建一个COM程序集,然后使用J-Interop调用它。
http://sourceforge.net/projects/j-interop/
回答
有一个IL到Java字节码编译器GrassHopper,可能对我们有用。我从来没有尝试过。
我会看一下用Java重写代码
编辑:请注意,草Grass似乎不再可用。
回答
如果我们不想将hadle重写为进程间通信,请选择以下选项之一:
- 命名管道
- 插座
- 肥皂
回答
我们为此使用了JNBridge,效果很好。它处理Java->。NET,反之亦然,所有这些都在过程中进行。
回答
http://www.infoq.com/articles/in-process-java-net-integration建议在同一进程空间中运行CLR和JVM并来回传递调用。听起来非常有效率。如果效果良好,我将尝试将其集成到Jace中。
回答
我是jni4net的作者,jni4net是JVM和CLR之间的开源进程内桥梁。它建立在JNI和PInvoke之上。无需C / C ++代码。希望对我们有帮助。
回答
如果它是一段可作为命令行实用程序公开的代码,我只是使另一种宿主语言使用系统调用来执行该实用程序。
如果Capp需要调用Java,请编译一个特殊的Java main,该main带有适当的命令行args并返回文本输出。
它是最古老,最简单的方法。