Я использовал Jacob и Com4j во время интеграции с простым COM-объектом. Я закончил с Com4j главным образом потому, что Джейкоб утек слишком много памяти. По сравнению с Джейкобом, я думаю, что Com4j был более прямолинейным, когда его установят. Если я правильно помню, Джейкобу потребовалось гораздо больше настройки и ввода текста перед тем, как сделать настоящий COM-вызов. В Com4j вы просто используете предоставленную фабрику.
Com4j работает хорошо для нас, но мы столкнулись с несколькими препятствиями на этом пути. Во-первых, сгенерированные интерфейсы не были сгенерированы правильно, и нам нужно было настроить их вручную. Основные проблемы, которые я помню, заключались в том, что нам не удалось заставить аннотацию @ReturnValue
работать должным образом. Также нам нужно было вручную исправить перечисление @VTID
.
Еще одна важная вещь, с которой мы столкнулись, заключалась в том, что мы не могли использовать класс Holder
(out params) для short
s. В итоге мы создали оболочку Delphi, конвертирующую из Integer в Short вместо любых изменений в Com4j.
Наконец, я помню, что я немного волновался о статусе проекта, пока интегрировался. Похоже, что регулярных обновлений нет (прошло два года с момента последнего выпуска обновления).