com4j по сравнению с jacob для вызова методов COM от Java

Я поддерживаю JAVA-приложение прежней версии, которое использует Jacob или Мост Java-COM, для совершения вызовов через COM-интерфейсы MS VBA и MS Word. Я смотрел на com4j от Sun, и это выглядит многообещающим.

Причина это выглядит хорошим мне, состоит в том, что это использует vtable привязку к методам вместо IDispatch. Принятие всех COM-объектов, мы управляем существующими vtable интерфейсами, это кажется инструментом для очистки для использования их вместо IDispatch. Назад в дни, когда COM и CORBA, где горячие двоичные интерфейсные технологии, я, кажется, помню, что раннее связывание через vtable дало лучшую производительность, чем позднее связывание через IDispatch.

Кто-либо мигрировал от Jacob на com4j? Если так, что были изучены ловушки и уроки?

8
задан Stephen Harmon 14 January 2010 в 18:00
поделиться

1 ответ

Я использовал как jacob, так и com4j во время интеграции против простого объекта COM. Я оказался с COM4J в основном, потому что Джейкоб просочился слишком много памяти. По сравнению с Джейкобом, я думаю, что COM4J был более прямым после того, как он будет настроен. Если я правильно помню, Jacob требуется гораздо больше настроить и печатать, прежде чем делать фактический COM Call. В то время как в COM4J вы просто будете использовать предоставленный завод.

COM4J работает нормально для нас, но мы наступили на несколько ударов в пути. Во-первых, сгенерированные интерфейсы не были правильно генерированы, и нам нужно было их вручную настроить их. Основные проблемы, которые я помню, заключался в том, что мы не могли получить аннотацию @returnvalue , чтобы работать правильно. Также нам нужно было вручную исправить @VTID перечисление.

Еще одна крупная вещь, которую мы столкнулись, заключалась в том, что мы не могли использовать класс (Params) (Params) Class S. Мы оказались зарабатывать Delphi Wrapper Converting от целочисленного вместо того, чтобы делать какие-либо изменения в COM4J.

Наконец, я помню, что я немного беспокоился о состоянии проекта, пока я интегрировал. Кажется, нет регулярных обновлений (два года сейчас после последнего выпуска технического обслуживания).

13
ответ дан 5 December 2019 в 12:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: