ディスクに保存せずに JAR ファイルをダウンロードして実行する必要がある C# アプリケーションがあります。これはC#で可能ですか? WebClient経由でファイルをディスクにダウンロードして(これは投稿時に行っていることです)、保存してから削除するバッチスクリプトを介して起動できますが、何も触れないようにしてさらに一歩進めたいと思いますドライブ。
ありがとう。
ファイルからではなく、.NET プロセスからプロセス間通信 (IPC) を介してクラスをロードする特別な Java クラス ローダーを作成できます。さらに、最初にクラス・ローダーをインストールしてから、IPC を介して取得した JAR を実行する小さなランチャー JAR が必要になります。また、IPC 通信のサーバー部分を .NET アプリケーションに実装する必要があります。
しかし、それは価値がありますか?このような複雑なソフトウェアの利点は何でしょうか?
JAR ファイルは、JVM である javaw.exe によって実行される必要があります。別のプロセスには、仮想メモリ空間にアクセスしてファイル データを読み取る権限がありません。両方のプロセスが協力して共有メモリセクションを使用しない限り、そうではありません。javaw.exe からはそのような協力は得られず、ファイルが必要です。
javaw.exe は実際にメモリからファイルを読み取るため、これは Windows では問題になりません。プログラムでファイルを書き込むとき、実際にはファイル システム キャッシュに書き込みます。ファイルデータをRAMにバッファリングし、ディスクに遅延書き込みします。ファイルが大きすぎず (ギガバイト以上)、Java の起動に時間がかかりすぎず (数分)、マシンに十分な RAM (ギガバイトまたは 2 バイト) がある限り、javaw.exe はファイルからファイルを読み取ります。システムキャッシュ。ディスクではなくRAM。昔のRAMディスクと全く同じ考え方。