Я поддерживаю JAVA-приложение прежней версии, которое использует Jacob или Мост Java-COM, для совершения вызовов через COM-интерфейсы MS VBA и MS Word. Я смотрел на com4j от Sun, и это выглядит многообещающим.
Причина это выглядит хорошим мне, состоит в том, что это использует vtable привязку к методам вместо IDispatch. Принятие всех COM-объектов, мы управляем существующими vtable интерфейсами, это кажется инструментом для очистки для использования их вместо IDispatch. Назад в дни, когда COM и CORBA, где горячие двоичные интерфейсные технологии, я, кажется, помню, что раннее связывание через vtable дало лучшую производительность, чем позднее связывание через IDispatch.
Кто-либо мигрировал от Jacob на com4j? Если так, что были изучены ловушки и уроки?
Я использовал как jacob, так и com4j во время интеграции против простого объекта COM. Я оказался с COM4J в основном, потому что Джейкоб просочился слишком много памяти. По сравнению с Джейкобом, я думаю, что COM4J был более прямым после того, как он будет настроен. Если я правильно помню, Jacob требуется гораздо больше настроить и печатать, прежде чем делать фактический COM Call. В то время как в COM4J вы просто будете использовать предоставленный завод.
COM4J работает нормально для нас, но мы наступили на несколько ударов в пути. Во-первых, сгенерированные интерфейсы не были правильно генерированы, и нам нужно было их вручную настроить их. Основные проблемы, которые я помню, заключался в том, что мы не могли получить аннотацию @returnvalue
, чтобы работать правильно. Также нам нужно было вручную исправить @VTID
перечисление.
Еще одна крупная вещь, которую мы столкнулись, заключалась в том, что мы не могли использовать класс (Params)
(Params) Class
S. Мы оказались зарабатывать Delphi Wrapper Converting от целочисленного вместо того, чтобы делать какие-либо изменения в COM4J.
Наконец, я помню, что я немного беспокоился о состоянии проекта, пока я интегрировал. Кажется, нет регулярных обновлений (два года сейчас после последнего выпуска технического обслуживания).