从Java运行C#代码,反之亦然

从Java运行C#代码,反之亦然,c#,java,.net,C#,Java,.net,我有一个用Java制作的游戏服务器。我想制作一个插件系统,加载一个.NET DLL并调用该DLL中的事件/函数,然后在这些DLL中调用游戏服务器(Java)中的函数。目前唯一给我带来麻烦的部分是如何连接java和.NETDLL 我一直在搜索并找到一些东西,但它们都是基于产品的,我想为此制作自己的界面。啊,更不用说它需要高性能,如果必须的话,代码会在一秒钟内被调用很多次。有人能指出或给我一些想法吗?我该如何解决这个问题 编辑: 为了使其更加明确: 游戏服务器(Java应用程序)调用.NETDLL中

我有一个用Java制作的游戏服务器。我想制作一个插件系统,加载一个.NET DLL并调用该DLL中的事件/函数,然后在这些DLL中调用游戏服务器(Java)中的函数。目前唯一给我带来麻烦的部分是如何连接java和.NETDLL

我一直在搜索并找到一些东西,但它们都是基于产品的,我想为此制作自己的界面。啊,更不用说它需要高性能,如果必须的话,代码会在一秒钟内被调用很多次。有人能指出或给我一些想法吗?我该如何解决这个问题

编辑:

为了使其更加明确:

  • 游戏服务器(Java应用程序)调用.NETDLL中的函数
  • java刚刚调用的.NET函数从游戏服务器(java应用程序)调用多个函数
  • 看看你是否瞄准了Windows。这是一个alpha质量的版本,但已经在Java运行时内使用它运行.NET机器人

    另一种选择是使用高性能消息传递方法。您将需要第二个进程—可能是一个.NET插件主机。然后,该进程与主Java游戏进程交换消息。像这样的消息传递库速度非常快,但可能还不够快。此外,您还必须创建大量的消息管道,这可能会在成本/时间上造成阻碍。

    如果您的目标是Windows,请看一看。这是一个alpha质量的版本,但已经在Java运行时内使用它运行.NET机器人


    另一种选择是使用高性能消息传递方法。您将需要第二个进程—可能是一个.NET插件主机。然后,该进程与主Java游戏进程交换消息。像这样的消息传递库速度非常快,但可能还不够快。此外,您还必须创建大量的消息管道,这可能会在成本/时间上造成阻碍。

    如果您只调用了一些方法,那么您可能只需要使用JNI,自己动手,而不是使用第三方工具(尽管我承认我不知道jni4net的详细信息)。提醒一下,我参与的项目也做了类似的事情(C#->C/C++->通过JNI的Java),我们只遇到了一些问题。问题主要是因为JavaAPI没有任何好的文档,所以这可能是它的一部分。如果可能的话,试着保持一种语言,但如果不可能,确保你做了大量的错误检查。当应用程序崩溃时,很难发现问题(除非您同时拥有java和C#sutff)。就我的$0.02…

    如果你只调用了几个方法,你可以使用JNI,自己动手,而不是第三方工具(尽管我承认我不知道jni4net的细节)。提醒一下,我参与的项目也做了类似的事情(C#->C/C++->通过JNI的Java),我们只遇到了一些问题。问题主要是因为JavaAPI没有任何好的文档,所以这可能是它的一部分。如果可能的话,试着保持一种语言,但如果不可能,确保你做了大量的错误检查。当应用程序崩溃时,很难发现问题(除非您同时拥有java和C#sutff)。仅我的$0.02…

    尝试使用iKVM:

    IKVM.NET是针对Mono和Microsoft.NET的Java实现 框架它包括以下组件:

    • 在.NET中实现的Java虚拟机
    • 支持Java和.NET的Java类库工具的.NET实现 互操作性
    尝试使用iKVM:

    IKVM.NET是针对Mono和Microsoft.NET的Java实现 框架它包括以下组件:

    • 在.NET中实现的Java虚拟机
    • 支持Java和.NET的Java类库工具的.NET实现 互操作性

    托管.NET中的所有内容并通过IKVM运行Java部件的可能重复比尝试将.NET纳入JVM限制要容易得多。托管.NET中的所有内容并通过IKVM运行Java部件的可能重复比尝试将.NET纳入JVM限制要容易得多。