誰かがC#コードをJavaアプリケーションに統合するための良い解決策を持っていますか?
コードが小さいので、Javaで書き直すこともできますが、可能であればコードを再利用したいと思います。繰り返さないでください。
また、C#をWebサービスなどとして公開できることはわかっていますが、セキュリティ/暗号化機能が含まれているため、可能であれば緊密に統合しておくことをお勧めします。
編集:サーバーベースのアプリで実行されるため、別のランタイムを「ダウンロード」することは関係ありません。
誰かがC#コードをJavaアプリケーションに統合するための良い解決策を持っていますか?
コードが小さいので、Javaで書き直すこともできますが、可能であればコードを再利用したいと思います。繰り返さないでください。
また、C#をWebサービスなどとして公開できることはわかっていますが、セキュリティ/暗号化機能が含まれているため、可能であれば緊密に統合しておくことをお勧めします。
編集:サーバーベースのアプリで実行されるため、別のランタイムを「ダウンロード」することは関係ありません。
Java Native Interface を使用して、DLL にコンパイルされた C# コードを呼び出します。
少量の C# であれば、Java に移植する方がはるかに簡単です。量が多い場合は、この方法が適しているかもしれません。
以下にその概要を示します。
http://en.wikipedia.org/wiki/Java_Native_Interface
もう 1 つのオプションは、C# コードから COM アセンブリを作成し、J-Interop を使用してそれを呼び出すことです。
私は、JVMとCLR間のオープンソースのプロセス内ブリッジであるjni4netの作成者です。これは、JNIとPInvokeの上に構築されています。C /C++コードは必要ありません。お役に立てば幸いです。
短い場合は、Javaでコードを書き直したほうがいいと思います。50Mbのランタイムを1つダウンロードするだけでは十分ではありません。
IL から Java Bytecode へのコンパイラであるGrassHopperが役に立つかもしれません。試したことはないけど。
ただし、Javaでコードを書き直すことを検討します
編集:Grasshopperはもう利用できないようです。
これにはJNBridgeを使用しましたが、うまく機能しました。Java->.NET およびその逆をすべてインプロセスで処理します。
hadleをプロセス間通信として書き換えたくない場合は、次のいずれかを選択します。
あまり面倒でなければ書き直します。Webサービスは機能しますが、小さなコードを再利用するだけでも、かなりのオーバーヘッドが発生するようです。
http://www.infoq.com/articles/in-process-java-net-integrationでは、CLR と JVM を同じプロセス空間で実行し、呼び出しをやり取りすることを提案しています。とても効率的に聞こえます。私はそれを試してみて、うまくいくならJaceに統合するつもりです。
コマンド ライン ユーティリティとして公開できるコードの場合は、他のホスト言語でシステム コールを使用してユーティリティを実行するだけです。
C# アプリで Java を呼び出す必要がある場合は、適切なコマンド ライン引数を受け取り、テキスト出力を返す特別な Java メインをコンパイルします。
最も古く、最も単純な方法です。