私はSkype4Java(スカイプ用のJava API)を読んでいて、スカイプクライアントにアクセスするためにjniを使用していることに気づきました。
直感的には、他のプロセスにアクセスするための OS 依存の jni 実装を持つ Java の標準ライブラリが既に存在すると思います。探すように設定しましたが、見つかりませんでした。
そのような図書館はありますか?そうでない場合、必ずしもSkypeクライアントではなく、OSの別のプロセスにアクセスするためのベストプラクティスはありますか?
私はSkype4Java(スカイプ用のJava API)を読んでいて、スカイプクライアントにアクセスするためにjniを使用していることに気づきました。
直感的には、他のプロセスにアクセスするための OS 依存の jni 実装を持つ Java の標準ライブラリが既に存在すると思います。探すように設定しましたが、見つかりませんでした。
そのような図書館はありますか?そうでない場合、必ずしもSkypeクライアントではなく、OSの別のプロセスにアクセスするためのベストプラクティスはありますか?
Java 1.4 以降では、メモリ マップ ファイルを使用して、別のプロセスと任意の情報を交換できます。詳細については、java.nio.MappedByteBuffer を参照してください。
これはあなたが探しているものとはまったく異なりますが、おそらく大いに役立つでしょう: java.netのJava Native Accessプロジェクト。
ソケットを忘れないでください...
「アクセス」があなたにとって何を意味するのかを定義する必要があると思います。昔ながらのプロセス間通信について話している場合は、ソケットまたは JNI が本当に最善の策です。
メモリ マップド ファイルの使用に関する Garth のコメントは興味深いものです。私は C アプリケーション間の IPC に MMF と仮想ファイルを何度も使用しましたが、Java の MMF 実装がネイティブ OS の仮想ファイル システムと互換性があるとは思いもしませんでした。これらの種類の仮想ファイルは通常、自明ではないセットアップを必要とするため、うまくいくとは驚きです...
とはいえ、アプリ間で大量のデータをやり取りする場合を除き、ソケットを使用するのがおそらく最も普遍的で効果的な方法です。ホスト OS と Java VM の間のエンディアンを考慮してください :-)