8

私は、 Jacobまたは Java-COM Bridge を使用して MS VBA および MS Word の COM インターフェイスを介して呼び出しを行う従来の Java アプリケーションを維持しています。私はSun のcom4jを見てきましたが、有望に見えます。

私には良いように見える理由は、IDispatch ではなく、メソッドへの vtable バインディングを使用しているためです。操作するすべての COM オブジェクトに vtable インターフェイスが存在すると仮定すると、IDispatch の代わりにそれらを使用する方がクリーンに見えます。COM と CORBA がホット バイナリ インターフェイス テクノロジを使用していた時代にさかのぼると、vtable を介した早期バインディングは、IDispatch を介した遅延バインディングよりも優れたパフォーマンスを発揮したことを覚えているようです。

Jacob から com4j に移行した人はいますか? もしそうなら、落とし穴と学んだ教訓は何でしたか?

4

2 に答える 2

13

単純な COM オブジェクトに対する統合中に、Jacob と Com4j の両方を使用しました。主にジェイコブがあまりにも多くのメモリをリークしたため、Com4j を使用することになりました。ジェイコブに比べると、Com4j は一度設定するとより単純だったと思います。私の記憶が正しければ、Jacob は実際の COM 呼び出しを行う前に、さらに多くの設定と入力が必要でした。Com4j では、提供されたファクトリを使用するだけです。

Com4j は問題なく動作していますが、途中でいくつか問題が発生しました。まず、生成されたインターフェイスが正しく生成されなかったため、手動で微調整する必要がありました。@ReturnValue私が覚えている主な問題は、注釈を適切に機能させることができなかったことです。また、@VTID列挙を手動で修正する必要がありました。

Holder私たちが直面したもう 1 つの大きな問題は、 (out params) クラスをshortsに使用できないことでした。Com4j に変更を加える代わりに、Integer から Short に変換する Delphi ラッパーを作成することになりました。

最後に、プロジェクトのステータスについて少し心配しながら統合したことを覚えています。定期的な更新はないようです (最後のメンテナンス リリースから 2 年が経ちました)。

于 2010-01-14T19:05:42.207 に答える
0

非常に古い質問ですが、Com4j はより安定しているため、新しい人にも Com4j を使用することをお勧めします。Com4j にはアクティブなコミュニティがあり、Java クラスを生成するための Maven プラグインさえあります。ただし、「j-interop」も参照してください。

于 2015-05-06T11:26:26.953 に答える