2010-08-23 17 views
22

Tengo que crear una aplicación que automatice Outlook y Word, y quiero usar Java para esa tarea. (La única alternativa sería permitido VB6, así que ...)¿Cómo elegir un puente Java-COM?

Después de una rápida encuesta Google me encontré con varias bibliotecas, pero no estoy seguro de cuál usar:

No tengo idea de cómo comparar estas bibliotecas y tomar una decisión informada. Parece que COM4J está un poco desactualizado, JACOB pierde memoria (supuestamente) y jacoZoom es comercial. Todos y cada uno parece requerir un gran número de código repetitivo para realizar una llamada a un método simple. (Que podría ser inevitable dado el diseño de COM)

Además de eso, no tengo idea de cómo elegir entre uno de ellos. ¿Cuál es el mejor?

+0

JACOB solo admite dispatch-interface; no puede hacer el enlace de vtable. –

Respuesta

8

Utilizamos Jacob en el entorno de producción y funciona bastante bien. Sin embargo, los proyectos parecen no ser muy activos.

Hablando de eso: La actividad parece ser una ventaja para J-Interop. Probamos el proyecto también y parece funcionar bastante bien con aún mejores mensajes de registro. Creo que podríamos elegir J-Interop para nuevos proyectos.

COM4J parece estar desactualizado, tienes razón.

+1

Terminamos usando Jacob, también, y no tuvimos problemas para automatizar Outlook. –

+0

Solo dejo esto aquí para la posteridad: terminé usando JACOB y de hecho se pierde la memoria como ninguna otra cosa. Lo usé para la automatización de herramientas de medición (cerrar y volver a abrir la conexión NO era una opción), y se bloqueaba la JVM en unas pocas horas. – Siebe

3

J-integra por software Intrinsyc http://j-integra.intrinsyc.com/ es su mejor opción. Oculta la complejidad de tener que conocer un lenguaje de programación desconocido. No depende de JNI, por lo que no es necesario que conozca JNI. J-Integra también se mantiene y admite de manera activa e Intrinsyc ofrece una versión pura de 64 bits para aquellas personas que quieran ejecutar en un entorno de 64 bits puro.

Intrinsyc ofrece pruebas gratuitas para que pueda probarlas y ver si funcionan antes de comprometerse con cualquier compra.

Empresas como HP, IBM, SAP y Oracle lo utilizan para que sepa que va a ser rápido, estable y con buen soporte.

5

Como desarrollador sazonado en Java/Linux, pero ignorantes en Windows, aquí fue mi experiencia (agosto de 2015) ...

Resumen Ejecutivo:

  1. Ir con com4j ... con la salvedad de que:
  2. Es posible que necesite para construir el último código (inédito) para conseguir un poco de f reciente e importante ixes.

historia más larga:

En un primer momento, la propensión a la participación de código JNI se bloquee inexplicablemente me hizo mirar a una solución no JNI. J-Interop parecía encajar en la factura.

Sin embargo, cuando traté de que j-interop funcionara, todos los permisos de DCOM de Windows y la basura del registro lo convirtieron en un PITA total. Es diferente para las diferentes versiones de Windows, los cambios necesarios deben hacerse como administrador, etc. No entiendo nada de esta basura de Windows y me da ganas de vomitar de todos modos.

Luego probé com4j y funcionó como un campeón. Este proyecto está muy bien diseñado. Genera automáticamente interfaces Java a partir de las DLL que está utilizando. Los detalles de la convención de llamadas COM se declaran usando anotaciones Java en los métodos de interfaz, lo que te permite modificarlos si es necesario (en mi caso no fueron necesarios ajustes).

Hay varios desarrolladores en github que han bifurcado el proyecto y han contribuido con correcciones, lo cual es una señal saludable.

La única advertencia es que es posible que necesite algunas de las correcciones recientes que, a partir de agosto de 2015, se fusionaron en el proyecto pero no incluidas en la última versión (que es de marzo de 2014).

Así que puede que tenga que hacer una compilación personalizada usted mismo, que incluye compilar DLL en Visual Studio, etc. Incluso como un enemigo/ignorante de Windows, pude hacer esto.