从Java调用C#代码?

时间:2020-03-05 18:49:35  来源:igfitidea点击:

有没有人能将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并返回文本输出。

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