Windows には「インポート ライブラリ」別名「implibs」の概念があります。コードを動的ライブラリにリンクする場合は、.dll 自体に対してリンクするのではなく、.dll を呼び出すサンクを含む特別な静的ライブラリに対してリンクします。 . まあ、それは間違いなく Windows の特異性ですが、場合によっては、その考えはそれほど悪くありません。
たとえば、それぞれ平均 2MB の 100 個の動的ライブラリと、このシステムの 10 個のバージョンで構成される複雑なシステムがあるとします。したがって、すべてのバージョンでこのようなシステムを完全にサポートするために出荷する SDK は、リンクするライブラリだけで 2GB になります。シンボルと小さなサンクのみを含む Implib を使用すると、はるかに少なくなります。
implibs の概念は、通常の Unixish 共有ライブラリに非常に簡単に適用できます。シンボルをダンプし、それらから C で単純なサンクを作成し、コンパイルして、ほら、オリジナルの代わりにそのライブラリにリンクできます。
ここで、同じ考えを Java に拡張したいと思います。したがって、理想的には、jar を取り、その中のバイトコード クラスを書き直してメソッドの本体を削除し、空の (可能な限り) 本体を持つメソッド定義のみを残すツールを探しています。そのようなツールが存在しない場合は、そのようなツールを簡単に作成できる Java バイトコード変換フレームワークへのポインタを探しています。それができない場合は、少なくとも jar からすべてのメソッド シグネチャをダンプできるツールを探して、ネイティブ共有ライブラリの場合と同様のアプローチに従います (当然、空の Java を追加することはできなかったので、より複雑になります)。代わりに、有効な型の値を返す必要があります)。