从Java调用C#代码?

从Java调用C#代码?,c#,java,java-native-interface,C#,Java,Java Native Interface,有没有人有一个很好的解决方案来将一些C代码集成到java应用程序中 代码很小,所以我可以用java重新编写,但如果可能的话,我宁愿重用代码。不要重复你自己的话等 此外,我知道我可以将C#作为web服务或其他任何东西公开,但它有一些安全/加密功能,因此如果可能的话,我宁愿将其紧密集成 编辑:它将在一个基于服务器的应用程序上,因此“下载”另一个运行时是不相关的。如果它很短,我认为您最好用java重新编写代码。下载一个50Mb的运行库已经够糟糕的了。如果不太麻烦的话,我会重写它。 web服务是可以工

有没有人有一个很好的解决方案来将一些C代码集成到java应用程序中

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

此外,我知道我可以将C#作为web服务或其他任何东西公开,但它有一些安全/加密功能,因此如果可能的话,我宁愿将其紧密集成



编辑:它将在一个基于服务器的应用程序上,因此“下载”另一个运行时是不相关的。

如果它很短,我认为您最好用java重新编写代码。下载一个50Mb的运行库已经够糟糕的了。

如果不太麻烦的话,我会重写它。
web服务是可以工作的,但仅仅重用一点代码似乎会带来很大的开销。

您可以使用Java本机接口调用编译成DLL的C代码

如果只是少量的C#,那么将其移植到Java就容易多了。如果很多,这可能是一个很好的方法

以下是it的高级概述:

您的另一个选择是从C代码创建COM程序集,并使用J-Interop调用它


有一个IL-to-Java字节码编译器,可能对您有用。不过我从来没有试过

不过,我会考虑用Java重写代码


编辑:注意Grasshopper似乎不再可用。

如果不想将hadle重写为,请选择以下选项之一:

  • 命名管道
  • 插座
  • 肥皂

我们使用它,效果非常好。它在进程中处理Java->.NET,反之亦然。

建议在同一进程空间中运行CLR和JVM,并来回传递调用。听起来很有效率。如果它运行良好,我将尝试一下并将其集成到中。

我是《JVM和CLR之间的开源进程内桥梁》的作者。它建立在JNI和PInvoke之上。不需要C/C++代码。我希望它能对您有所帮助。

如果它是一段可以作为命令行实用程序公开的代码,我只需要让其他宿主语言使用系统调用来执行该实用程序

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

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

您可以通过桥接库调用您的c#类(在dll中编译),可以使用各种库,每个库都有自己的特点JNBridge生成代理类,您可以调用这些代理类来管理java类中的代码JCOBRIGE允许您加载c#类并使用调用机制从java使用它,也javonet允许您导入java类并使用调用机制调用java代码
所有探索的解决方案都是商业解决方案,通过图形用户界面集成和其他便利设施,您可以从.NET调用java代码,反之亦然。

链接
java-.NET网桥开发者和部署许可证模式,30天免费试用
java-.NET网桥开发者和部署许可证模式,无限制试用

java-.NET bridge Research and Professional license schema注册后30天无限制试用

如果基于服务器,平台是什么?我不知道COM互操作与单声道的工作有多好,所以这是另一个需要考虑的因素。是的,这是一个商业产品。草皮链接断了。可能不再有用了,看起来很酷,你有没有找到支持Linux和Windows的方法?第二个链接被破坏了。