Как выбрать мост Java-COM? - PullRequest
23 голосов
/ 23 августа 2010

Мне нужно создать приложение, которое автоматизирует Outlook и Word, и я хочу использовать Java для этой задачи. (Единственной допустимой альтернативой будет VB6, так что ...)

После быстрого опроса Google я нашел несколько библиотек, но я не уверен, какую из них использовать:

Понятия не имею, как сравнить эти библиотеки и принять обоснованное решение. Кажется, что COM4J немного устарел, JACOB теряет память (предположительно), а jacoZoom коммерческий Кажется, что каждому требуется много стандартного кода для выполнения простого вызова метода. (Что может быть неизбежно, учитывая дизайн COM)

Кроме того, я понятия не имею, как выбрать один из них. Какой из них лучше?

Ответы [ 5 ]

8 голосов
/ 24 августа 2010

Мы используем Джейкоба в производственной среде, и это работает довольно хорошо.Тем не менее проекты кажутся не очень активными.

Кстати, активность: J-Interop - это преимущество.Мы также попробовали проект, и он, кажется, работает довольно хорошо с еще лучшими сообщениями регистрации.Я думаю, что мы могли бы выбрать J-Interop для новых проектов.

COM4J кажется устаревшим, вы правы.

5 голосов
/ 12 августа 2015

Как разработчик, опытный в Java / Linux, но не знающий Windows, вот мой опыт (август 2015) ...

Резюме:

  1. Перейти с com4j ... с оговоркой, что:
  2. Возможно, вам потребуется собрать последний (неизданный) код, чтобы получить некоторые важные недавние исправления.

Более длинная история:

Поначалу склонность к коду, в котором JNI неожиданно рушился, заставила меня искать решение без JNI. J-Interop , казалось, отвечал всем требованиям.

Однако, когда я попытался заставить работать j-interop, все разрешения Windows DCOM и всякое дерьмо в реестре сделали его полноценным PITA. Это отличается для разных версий Windows, необходимые изменения должны быть сделаны от имени администратора и т. Д. Я не понимаю ничего из этого дерьма Windows, и это все равно заставляет меня рвать.

Затем я попробовал com4j, и он работал как чемпион. Этот проект очень красиво оформлен. Он автоматически генерирует интерфейсы Java из используемых вами библиотек DLL. Детали соглашения о вызовах COM объявляются с использованием аннотаций Java на интерфейсных методах, что позволяет настраивать их при необходимости (в моем случае никаких настроек не требовалось).

На github есть несколько разработчиков, которые разработали проект и внесли исправления, что является хорошим признаком.

Единственное предостережение в том, что вам могут потребоваться некоторые из последних исправлений, которые по состоянию на август 2015 года включены в проект, но не содержатся в последнем выпуске (выпущенном в марте 2014 года).

Так что, возможно, вам придется самостоятельно создавать сборку, которая включает в себя сборку DLL в Visual Studio и т. Д. Даже будучи ненавистником / невежественным Windows, я смог это сделать.

4 голосов
/ 26 июля 2012

COM4J по-прежнему активен - он был перемещен на Github и имеет новую домашнюю страницу: http://com4j.kohsuke.org/tutorial.html

3 голосов
/ 06 февраля 2013

J-Integra от Intrinsyc Software http://j -integra.intrinsyc.com / - ваш лучший вариант.Это скрывает сложность необходимости знать незнакомый язык программирования.Это не зависит от JNI, поэтому вам не нужно знать JNI.J-Integra также активно поддерживается и поддерживается, и Intrinsyc предлагает чистую 64-битную версию для тех, кто хочет работать в чистой 64-битной среде.

Intrinsyc предлагает бесплатные пробные версии, так что вы можете проверить их и увидетьесли он работает до совершения какой-либо покупки.

Такие компании, как HP, IBM, SAP и Oracle, используют его, чтобы вы знали, что он будет быстрым, стабильным и хорошо поддерживается.

0 голосов
/ 04 сентября 2013

Появляется bridj также может выполнять COM-взаимодействие: https://code.google.com/p/bridj/wiki/COM#Example

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...