35

誰かがC#コードをJavaアプリケーションに統合するための良い解決策を持っていますか?

コードが小さいので、Javaで書き直すこともできますが、可能であればコードを再利用したいと思います。繰り返さないでください。

また、C#をWebサービスなどとして公開できることはわかっていますが、セキュリティ/暗号化機能が含まれているため、可能であれば緊密に統合しておくことをお勧めします。


編集:サーバーベースのアプリで実行されるため、別のランタイムを「ダウンロード」することは関係ありません。

4

10 に答える 10

32

Java Native Interface を使用して、DLL にコンパイルされた C# コードを呼び出します。

少量の C# であれば、Java に移植する方がはるかに簡単です。量が多い場合は、この方法が適しているかもしれません。

以下にその概要を示します。

http://en.wikipedia.org/wiki/Java_Native_Interface

もう 1 つのオプションは、C# コードから COM アセンブリを作成し、J-Interop を使用してそれを呼び出すことです。

http://sourceforge.net/projects/j-interop/

于 2008-09-08T19:01:06.040 に答える
22

私は、JVMとCLR間のオープンソースのプロセス内ブリッジであるjni4netの作成者です。これは、JNIとPInvokeの上に構築されています。C /C++コードは必要ありません。お役に立てば幸いです。

于 2009-10-31T18:25:22.010 に答える
7

短い場合は、Javaでコードを書き直したほうがいいと思います。50Mbのランタイムを1つダウンロードするだけでは十分ではありません。

于 2008-09-08T18:50:16.190 に答える
4

IL から Java Bytecode へのコンパイラであるGrassHopperが役に立つかもしれません。試したことはないけど。

ただし、Javaでコードを書き直すことを検討します

編集:Grasshopperはもう利用できないようです。

于 2008-09-08T19:06:52.267 に答える
3

これにはJNBridgeを使用しましたが、うまく機能しました。Java->.NET およびその逆をすべてインプロセスで処理します。

于 2008-09-09T18:46:27.923 に答える
2

hadleをプロセス間通信として書き換えたくない場合は、次のいずれかを選択します。

  • 名前付きパイプ
  • ソケット
  • 石鹸
于 2008-09-08T21:01:06.377 に答える
0

あまり面倒でなければ書き直します。Webサービスは機能しますが、小さなコードを再利用するだけでも、かなりのオーバーヘッドが発生するようです。

于 2008-09-08T18:50:35.860 に答える
0

http://www.infoq.com/articles/in-process-java-net-integrationでは、CLR と JVM を同じプロセス空間で実行し、呼び出しをやり取りすることを提案しています。とても効率的に聞こえます。私はそれを試してみて、うまくいくならJaceに統合するつもりです。

于 2009-04-21T20:44:41.557 に答える
0

コマンド ライン ユーティリティとして公開できるコードの場合は、他のホスト言語でシステム コールを使用してユーティリティを実行するだけです。

C# アプリで Java を呼び出す必要がある場合は、適切なコマンド ライン引数を受け取り、テキスト出力を返す特別な Java メインをコンパイルします。

最も古く、最も単純な方法です。

于 2010-03-08T08:31:35.223 に答える