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中使用Jawin组件访问Windows下的COM组件 java调用ole

环境:windows XP Home版;Office2000;j2se 1.6.0(JRE也是1.6.0);Jawin 2.0-alpha1。 原由:使用Jacob访问windows下的COM组...
  • guchuanlong
  • guchuanlong
  • 2012年06月03日 01:00
  • 1482

jacob调用com组件

com组件可以存在exe,或者dll中,而且对vb,vc,delphi等语言提供了统一的调用,而dll只能存在于dll文件中,而且不同语言调用方式不一样,com组件开发难度相对于dll较大,多用于大型...
  • qwkxq
  • qwkxq
  • 2016年12月11日 22:04
  • 1915

java 调用com组件详细步骤

  • 2012年07月18日 17:24
  • 4KB
  • 下载

java调用COM组件的几种工具

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

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

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

java调用com组件实例

  • 2013年08月07日 21:14
  • 1.35MB
  • 下载

Jacob调用COM组件总结,实例

    最近做了一个Java Jacob调用COM组件的东西,其中遇到了不少问题,现在把经验总结一下和大家分享。 1.Jacob安装   Google一下,下载Jacob最新版。我这里用的是Jacob...
  • whw6_faye
  • whw6_faye
  • 2010年03月26日 10:08
  • 9346

java com组件

运行条件 Microsoft Java VM Java编辑器( VJ++ 或Microsoft Java 编辑器) ASP安装并运行 介绍 MS Java虚拟机自动地将一个java类的public方法...
  • renbaoyong
  • renbaoyong
  • 2004年12月17日 23:21
  • 779

Java与C互相调用实例详解

一、概述       对于大部分应用开发者来说可能都不怎么接触到NDK,但如果涉及到硬件操作的话就不得不使用NDK了。使用NDK还有另一个原因,就是C/C++的效率比较高,因此我们可以把一些耗时的操...
  • hbzh2008
  • hbzh2008
  • 2012年04月20日 16:29
  • 1806

COM文件与EXE文件的区别

以COM为扩展名的文件的特点如下:   1.程序只能设置一个段,且不建立堆栈段;   2.程序的长度必须少于64K字节;   3.程序必须预留100H空间,开始处是一条可执行指令;  ...
  • zhouyelihua
  • zhouyelihua
  • 2011年08月05日 00:37
  • 2530
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java 与com 相互调用的方法比较
举报原因:
原因补充:

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