2010-08-23 15 views
22

Ich muss eine Anwendung erstellen, die Outlook und Word automatisiert, und ich möchte Java für diese Aufgabe verwenden. (Die einzige erlaubte Alternative wäre VB6 sein, so ...)Wie wähle ich eine Java-COM-Bridge?

Nach einer schnellen Google Umfrage ich mehrere Bibliotheken, aber ich bin mir nicht sicher, welche zu benutzen:

Ich habe keine Ahnung, wie man diese Bibliotheken vergleicht und eine fundierte Entscheidung trifft. Es scheint, dass COM4J ein wenig veraltet ist, JACOB Speicher (angeblich) und jacoZoom ist kommerziell. Jeder einzelne scheint eine Menge Standardcode zu benötigen, um einen einfachen Methodenaufruf durchzuführen. (Was bei dem Entwurf von COM unvermeidlich sein könnte)

Außerdem habe ich keine Idee, wie man zwischen einem von ihnen wählt. Welches ist das beste?

+0

JACOB unterstützt nur Dispatch-Schnittstelle; Es kann keine Vtable-Bindung ausführen. –

Antwort

8

Wir verwenden Jacob in der Produktionsumgebung und es funktioniert sehr gut. Nichtsdestoweniger scheinen die Projekte nicht sehr aktiv zu sein.

Apropos: Aktivität scheint für J-Interop von Vorteil zu sein. Wir haben das Projekt auch ausprobiert und es scheint ziemlich gut mit noch besseren Logging-Nachrichten zu funktionieren. Ich denke, wir könnten J-Interop für neue Projekte wählen.

COM4J scheint veraltet zu sein, Sie haben Recht.

+1

Am Ende haben wir auch Jacob benutzt, und wir hatten keine Probleme mit der Automatisierung von Outlook. –

+0

Ich lasse das hier nur für die Nachwelt: Am Ende habe ich JACOB benutzt, und in der Tat verliert es Speicher wie nichts anderes. Ich habe es für die Automation der Messwerkzeuge verwendet (Schließen und erneutes Öffnen der Verbindung war KEINE Option), und es würde die JVM innerhalb weniger Stunden zum Absturz bringen. – Siebe

3

J-Integra von Intrinsyc Software http://j-integra.intrinsyc.com/ ist die beste Option. Es verbirgt die Komplexität, eine fremde Programmiersprache kennen zu müssen. Es ist nicht abhängig von JNI, so dass Sie JNI nicht kennen müssen. J-Integra wird auch aktiv gepflegt und unterstützt und Intrinsyc bietet eine reine 64-Bit-Version für diejenigen, die in einer reinen 64-Bit-Umgebung laufen wollen.

Intrinsyc bietet kostenlose Testversionen an, so dass Sie testen können, ob es funktioniert, bevor Sie einen Kauf tätigen.

Unternehmen wie HP, IBM, SAP und Oracle verwenden es, damit Sie wissen, dass es schnell, stabil und gut unterstützt wird.

5

Als Entwickler gewürzt in Java/Linux aber unwissend in Windows, hier war meine Erfahrung (August 2015) ...

Zusammenfassung:

  1. Gehen Sie mit com4j ... mit dem Vorbehalt, dass:
  2. Sie müssen möglicherweise die neuesten (unreleased) Code bauen einige wichtige letzten f zu erhalten ixes.

Längere Geschichte:

Zunächst wird die Neigung zur Code Beteiligung JNI aus unerklärlichen Gründen abstürzen ließ mich für eine nicht-JNI-Lösung suchen. J-Interop schien die Rechnung zu passen.

Wie auch immer ich versuchte, j-interop zur Arbeit zu bringen, machte alle Windows DCOM-Berechtigungen und Registry-Mist eine Gesamt-PITA. Für verschiedene Versionen von Windows ist es anders, die erforderlichen Änderungen müssen als Administrator usw. vorgenommen werden. Ich verstehe diesen Windows-Mist nicht und es macht mich sowieso kotzen.

Ich versuchte dann com4j und es funktionierte wie ein Champion. Dieses Projekt ist sehr schön gestaltet. Es generiert automatisch Java-Schnittstellen aus den DLLs, die Sie verwenden. Die Details der COM-Aufrufkonvention werden mithilfe von Java-Annotationen für die Schnittstellenmethoden deklariert, sodass Sie diese bei Bedarf anpassen können (in meinem Fall waren keine Optimierungen erforderlich).

Es gibt mehrere Entwickler auf Github, die das Projekt gespalten und Korrekturen zurückgeschickt haben, was ein gesundes Zeichen ist.

Der einzige Vorbehalt ist, dass Sie möglicherweise einige der letzten Korrekturen benötigen, die ab August 2015 in das Projekt integriert sind, aber nicht in der neuesten Version enthalten sind (ab März 2014).

So müssen Sie möglicherweise eine benutzerdefinierte Build selbst, die DLLs in Visual Studio, etc. zu bauen. Auch als Windows-Hasser/ignorant, konnte ich dies tun.

Verwandte Themen