如何选择Java-COM桥?

我必须创建一个自动化Outlook和Word的应用程序,我想使用Java来完成该任务。 (唯一允许的替代方案是VB6,所以…)

经过Google快速调查后,我找到了几个库,但我不确定使用哪个库:

  • J-互操作
  • SWT
  • JACOB
  • COM4J
  • jacoZoom

我不知道如何比较这些库并做出明智的决定。 似乎COM4J有点过时,JACOB泄漏内存(据称)和jacoZoom是商业化的。 每个人似乎都需要很多样板代码才能执行简单的方法调用。 (考虑到COM的设计,这可能是不可避免的)

除此之外,我不知道如何在其中一个之间做出选择。 哪一个是最好的?

我们在生产环境中使用雅各布,它运作得很好。 然而,这些项目似乎并不活跃。

说到这里:活动似乎是J-Interop的一个优势。 我们也尝试了这个项目,看起来效果更好,甚至更好的日志消息。 我想我们可能会为新项目选择J-Interop。

COM4J似乎已经过时了,你是对的。

作为一名在Java / Linux中经验丰富且在Windows中无知的开发人员,这是我的经历(2015年8月)……

执行摘要:

  1. 与com4j一起 …注意:
  2. 您可能需要构建最新的(未发布的)代码以获得一些重要的最新修补程序。

更长的故事:

起初,涉及JNI的代码倾向于莫名其妙地崩溃,这使我寻找非JNI解决方案。 J-Interop似乎符合要求。

但是,当我试图让j-interop工作时,所有Windows DCOM权限和注册表废话使它成为一个完整的PITA。 对于不同版本的Windows,它是不同的,必须以管理员等方式进行必要的更改。我不理解任何这种Windows垃圾,它让我想要呕吐。

然后我尝试了com4j,它就像一个冠军。 这个项目设计得非常好。 它从您正在使用的DLL自动生成Java接口。 COM调用约定细节是在接口方法上使用Java注释声明的,允许您在必要时调整这些(在我的情况下不需要调整)。

github上有几个开发人员分配了项目并提供了修复,这是一个健康的信号。

唯一需要注意的是,您可能需要一些最近的修复程序,这些修复程序自2015年8月起合并到项目中,但未包含在最新版本中(从2014年3月起)。

因此,您可能需要自己进行自定义构建,包括在Visual Studio中构建DLL等。即使作为Windows仇恨/无知,我也能够做到这一点。

COM4J似乎仍然活跃 – 它已被转移到Github并有一个新的主页: http : //com4j.kohsuke.org/tutorial.html

Intrinsyc Software的J-Integra http://j-integra.intrinsyc.com/是您的最佳选择。 它隐藏了必须了解不熟悉的编程语言的复杂性。 它不依赖于JNI,因此您不需要了解JNI。 J-Integra也得到了积极的维护和支持,Intrinsyc为那些希望在纯64位环境中运行的人提供了纯64位版本。

Intrinsyc提供免费试用,因此您可以在进行任何购买之前对其进行测试并查看其是否有效。

惠普,IBM,SAP和Oracle等公司使用它,因此您知道它将变得快速,稳定并得到很好的支持。

出现bridj也可以做一些COM互操作: https : //code.google.com/p/bridj/wiki/COM#Example