Comment choisir un pont Java-COM?

Je dois créer une application qui automatise Outlook et Word et je veux utiliser Java pour cette tâche. (La seule alternative autorisée serait VB6, donc...)

Après un rapide sondage Google, j'ai trouvé plusieurs bibliothèques, mais je ne sais pas laquelle utiliser:

Je n'ai aucune idée de comment comparer ces bibliothèques et faire un décision. Il semble que COM4J est un peu dépassé, JACOB fuit la mémoire (prétendument) et jacoZoom est commercial. Chacun semble nécessiter beaucoup de code standard pour effectuer un appel de méthode simple. (Ce qui pourrait être inévitable étant donné la conception de COM)

Outre que je n'ai aucune idée de comment choisir entre l'un d'eux. Lequel est le meilleur?

22
demandé sur Daniel Rikowski 2010-08-23 16:41:56

5 réponses

Nous utilisons Jacob dans l'environnement de production et cela fonctionne plutôt bien. Néanmoins, les projets ne semblent pas très actifs.

En parlant de cela: L'activité semble être un avantage pour J-Interop. Nous avons également essayé le projet et il semble fonctionner assez bien avec des messages de journalisation encore meilleurs. Je pense que nous pourrions choisir J-Interop pour de nouveaux projets.

COM4J semble être obsolète, vous avez raison.

8
répondu Christopher 2010-08-24 09:35:32

En tant que développeur chevronné en Java / Linux mais ignorant dans Windows, voici mon expérience (août 2015)...

Résumé:

  1. Aller avec com4j... avec la mise en garde que:
  2. vous devrez peut-être construire le dernier code (inédit) pour obtenir des correctifs récents importants.

Histoire Plus longue:

Au début, la propension du code impliquant JNI à planter inexplicablement m'a fait chercher une solution non-JNI. J-Interop semblait correspondre à la loi.

Cependant, comme j'ai essayé de faire fonctionner j-interop, toutes les autorisations Windows DCOM et la merde de registre en ont fait un PITA total. C'est différent pour différentes versions de Windows, les modifications requises doivent être apportées en tant Qu'administrateur, etc. Je ne comprends rien à cette merde de Windows et cela me donne envie de vomir de toute façon.

J'ai ensuite essayé com4j et cela a fonctionné comme un champion. Ce projet est très bien conçu. Il génère automatiquement des interfaces Java à partir des DLL que vous utilisez. Appel COM les détails de la convention sont déclarés en utilisant des annotations Java sur les méthodes d'interface, vous permettant de les modifier si nécessaire (aucun réglage n'était nécessaire dans mon cas).

Il y a plusieurs développeurs sur github qui ont bifurqué le projet et contribué à des corrections, ce qui est un signe sain.

La seule mise en garde est que vous pourriez avoir besoin de quelques-uns des correctifs récents qui, à partir d'août 2015, sont fusionnés dans le projet mais ne figurent pas dans la dernière version (qui date de Mars 2014).

Vous devrez peut-être faire vous-même une construction personnalisée, qui inclut la construction de DLL dans Visual Studio, etc. Même en tant que hater/ignorant de Windows, j'ai pu le faire.

5
répondu Archie 2015-08-12 16:05:59

COM4J semble toujours être actif - il a été déplacé vers Github et a une nouvelle page d'accueil: http://com4j.kohsuke.org/tutorial.html

4
répondu TmTron 2012-07-26 15:35:19

J-Integra par Intrinsyc Software http://j-integra.intrinsyc.com/ est votre meilleure option. Il cache la complexité d'avoir à connaître un langage de programmation inconnu. Il ne dépend pas de JNI, donc vous n'avez pas besoin de connaître JNI. J-Integra est également activement maintenu et pris en charge et Intrinsyc offre une version 64 bits pure pour les personnes souhaitant fonctionner dans un environnement 64 bits pur.

Intrinsyc propose des essais gratuits afin que vous puissiez le tester et voir si cela fonctionne avant de vous engager tout achat.

Des entreprises comme HP, IBM, SAP et Oracle l'utilisent pour que vous sachiez qu'il sera rapide, stable et bien supporté.

3
répondu user2045190 2013-02-06 01:13:29

Apparaît bridj peut aussi faire de L'interop COM: https://code.google.com/p/bridj/wiki/COM#Example

0
répondu rogerdpack 2013-09-04 19:57:40