java 与com 相互调用的方法比较

原创 2012年03月29日 16:40:08

  在使用java 与com 相互调用的方法中采用jacob的方法,比jcom要好用的得多
  如下是C++ Com 组件的定义文档 IDL
  Xml代码
         
  JCOM 的调用方式:
  Java代码

  Jacob调用方式:
  Java代码

  对于传入类型的支持,对于jcom,由于文档是日文的看的不是很懂,而且,在传入的参数列表中,不能有Long类型,有的话,就被认为是jobject,这很郁闷,还有在参数中同时有short ,string,double 莫名的出错。而且调用的时候必须得传参数对象数组。
  而jacob,传入的类型,就没有限制了,甚至接口用的是short 我传long类型的也没有报错,当然,我还没有看超出精度范围的时候是否报错,而且传参的时候,可以用dis.call(dis, "e",1111);看API有若干个这样的重载函数,比较方便。
  jCOM是一种Java/COM互操作系统的简称,即Java/COM桥,它是一种用软件实现的桥接机制,可以帮助Java应用程序快速访问微软的COM/DCOM组件。而且,微软的COM应用程序也可以通过这个机制访问基于Java的对象。jCOM不仅具有实现相对简单的特点,而且其最吸人的部分在于它的透明性。对Java程序员来说,COM对象看起来与其他Java对象没有什么不同。而对COM开发人员来说,远程Java对象看起来就象是本机COM组件。在这些对象中可以找到jCOM运行时刻引擎进行动态类型映射,因此从表面上屏蔽了数据类型间的差异。远程对象的数据类型被动态地转换成调用程序所使用的基元类型。对Java开发人员来说,COM数据类型表现得就象Java基元类型;而对COM开发人员来说,Java数据类型看起来就象是COM数据类型。
  jCOM声称以双向方式工作,实际只是允许在Java和COM组件之间,在任意一个方向上通信-Java对象可以调用COM组件,COM组件又可以调用Java对象。当然,在这两种不同的分布式组件框架之间,有着两种截然不同的底层体系结构负责线路级通信。在运行时,jCOM内部设置了一个双协议栈环境,实现对底层两个彼此独立的基础结构的支持(参考图1)。对于COM组件,有一个在DCE远程过程调用之上的COM/DCOM实现。对于Java对象,有一个在Java远程方法IIOP(Internet Inter-ORB)之上的远程方法调用(RMI)实现。调用要通过这些协议栈,并通过内部的协议转换进行处理,内部的协议转换能够有效地屏蔽掉低一级的协议。对于EJB来说,来自COM客户的调用看起来就好像是来自Java客户的调用。对于COM组件来说,来自Java客户的调用看起来就好象是来自一个普通的COM客户。
  jCOM提供了能够自动生成更高级别COM/DCOM代理以及RMI存根的工具。客户程序用COM/DCOM代理以及RMI存根在这两个不同的基础结构间封装并传送调用。jCOM可以设置成本机模式,这样就可以利用本机操作系统的动态链接库,从而减轻DCOM的网络负荷,并极大地提高系统性能。

java 调用windows的COM组件举例(使用JACOB)

最近公司需要做一个效果,开发一个程序能在程序运行时打开microsoft office的相关软件,实时写入,然后能关闭,你能看到数据写入的效果。如下图:发现用java写程序的话需要通过JACOB来调用...

关于jacob支持BSTR类型的经验总结

作者:朱金灿来源:http://blog.csdn.net/clever101           jacob是实现Java和COM之间互操作的一个开源中间件。网上大多的程序示例基本上是使用jacob...

java调用COM组件的几种工具

java调用COM组件的几种工具
  • pdw2009
  • pdw2009
  • 2016年02月27日 21:21
  • 2328

C++和C#相互调用COM组件的方法简介

 1、在VS2005中,C#编写DLL并使用C++调用 2、在VS2005中C#编写的COM组件,使用VC6.0调用 3、在VC6.0中编写COM组件,使用VS2005 ...

java调用com组件方法

对照vb代码实现java调用com组件方法 2009-03-02 14:39 1.简介  java调用com组件方法,最简单的方法莫过于使用JACOB控件。 JACOB就是 JAV...
  • hjpcb
  • hjpcb
  • 2013年11月11日 14:57
  • 414

JACob实现java与com组件的相互操作

软件的互操作性是一个我们经常面临的问题,如果 Java 可以自由的调用其他语言和平台的成熟代码,可以充分利用您的 Java 技能,大大提高您的生产力。现有的 Java COM 互操作技术有很多种实...

JACob实现java与com组件的相互操作

软件的互操作性是一个我们经常面临的问题,如果 Java 可以自由的调用其他语言和平台的成熟代码,可以充分利用您的 Java 技能,大大提高您的生产力。现有的 Java COM 互操作技术有很多种实...

导入android源码有错,R.java文件不能自动生成解决方法 http://caizi12.iteye.com/blog/975125

最近几天学习android ,学习时候难免要导入一些示例,目的为了更加了解android各种API用法,顺便也可以学习下别人代码的写法。可是导入android源码后,基本都有错误,R.java也不会自...
  • coollen
  • coollen
  • 2015年11月02日 19:31
  • 174
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java 与com 相互调用的方法比较
举报原因:
原因补充:

(最多只允许输入30个字)