快速业务通道

Java/COM集成 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25

Java/COM集成

时间:2007-05-29 yycnet.yeah.net yyc译

COM(以前称为OLE)代表微软公司的“组件对象模型”(Component Object Model),它是所有ActiveX技术(包括ActiveX控件、Automation以及ActiveX文档)的基础。但COM还包含了更多的东西。它是一种特殊的规范,按照它开发出来的组件对象可通过操作系统的专门特性实现“相互操作”。在实际应用中,为Win32系统开发的所有新软件都与COM有着一定的关系——操作系统通过COM对象揭示出自己的一些特性。由其他厂商开发的组件也可以建立在COM的基础上,我们能创建和注册自己的COM组件。通过这样或那样的形式,如果我们想编写Win32代码,那么必须和COM打交道。在这里,我们将仅仅重述COM编程的基本概念,而且假定读者已掌握了COM服务器(能为COM客户提供服务的任何COM对象)以及COM客户(能从COM服务器那里申请服务的一个COM对象)的概念。本节将尽可能地使叙述变得简单。工具实际的功能要强大得多,而且我们可通过更高级的途径来使用它们。但这也要求对COM有着更深刻的认识,那已经超出了本附录的范围。如果您对这个功能强大、但与不同平台有关的特性感兴趣,应该研究COM和微软公司的文档资料,仔细阅读有关Java/COM集成的那部分内容。如果想获得更多的资料,向您推荐Dale Rogerson编著的《Inside COM》,该书由Microsoft Press于1997年出版。由于COM是所有新型Win32应用程序的结构核心,所以通过Java代码使用(或揭示)COM服务的能力就显得尤为重要。Java/COM集成无疑是Microsoft Java编译器以及虚拟机最有趣的特性。Java和COM在它们的模型上是如此相似,所以这个集成在概念上是相当直观的,而且在技术上也能轻松实现无缝结合——为访问COM,几乎不需要编写任何特殊的代码。大多数技术细节都是由编译器和/或虚拟机控制的。最终的结果便是Java程序员可象对待原始Java对象那样对待COM对象。而且COM客户可象使用其他COM服务器那样使用由Java实现的COM服务器。在这里提醒大家,尽管我使用的是通用术语“COM”,但根据扩展,完全可用Java实现一个ActiveX Automation服务器,亦可在Java程序中使用一个ActiveX控件。Java和COM最引人注目的相似之处就是COM接口与Java的“interface”关键字的关系。这是接近完美的一种相符,因为:■COM对象揭示出了接口(也只有接口)■COM接口本身并不具备实施方案;要由揭示出接口的那个COM对象负责它的实施■COM接口是对语义上相关的一组函数的说明;不会揭示出任何数据■COM类将COM接口组合到了一起。Java类可实现任意数量的Java接口。■COM有一个引用对象模型;程序员永远不可能“拥有”一个对象,只能获得对对象一个或多个接口的引用。Java也有一个引用对象模型——对一个对象的引用可“造型”成对它的某个接口的引用。■COM对象在内存里的“生存时间”取决于使用对象的客户数量;若这个数量变成零,对象就会将自己从内存中删去。在Java中,一个对象的生存时间也由客户的数量决定。若不再有对那个对象的引用,对象就会等候垃圾收集器的处理。

Java与COM之间这种紧密的对应关系不仅使Java程序员可以方便地访问COM特性,也使Java成为编写COM代码的一种有效语言。COM是与语言无关的,但COM开发事实上采用的语言是C++和Visual Basic。同Java相比,C++在进行COM开发时显得更加强大,并可生成更有效的代码,只是它很难使用。Visual Basic比Java简单得多,但它距离基础操作系统太远了,而且它的对象模型并未实现与COM很好的对应(映射)关系。Java是两者之间一种很好的折衷方案。接下来,让我们对COM开发的一些关键问题进行讨论。编写Java/COM客户和服务器时,这些问题是首先需要弄清楚的。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号