网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > Java精品代码 > 正文

使用非JAVA代码

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
样。请注意行内的类型模型,其中“例示”了COM对象(即生成并调用它的一个实例)。这与COM对象模型是一致的。在COM中,程序员永远不会得到对整个对象的一个引用。相反,他们只能拥有对类内实现的一个或多个接口的引用。

  “例示”Adder类的一个Java对象以后,就相当于指示COM激活服务器,并创建这个COM对象的一个实例。但我们随后必须指定自己想使用哪个接口,在由服务器实现的接口中挑选一个。这正是类型模型完成的工作。这儿使用的是“默认遣送”接口,它是Automation控制器用于同一个Automation服务器通信的标准接口。欲了解这方面的细节,请参考由Ibid编著的《Inside COM》。请注意激活服务器并选择一个COM接口是多么容易!

  1026页程序

  现在,我们可以编译它,并开始运行程序。

  1. com.ms.com包

  com.ms.com包为COM的开发定义了数量众多的类。它支持GUID的使用——Variant(变体)和SafeArray Automation(安全数组自动)类型——能与ActiveX控件在一个较深的层次打交道,并可控制COM异常。

  由于篇幅有限,这里不可能涉及所有这些主题。但我想着重强调一下COM异常的问题。根据规范,几乎所有COM函数都会返回一个HRESULT值,它告诉我们函数调用是否成功,以及失败的原因。但若观察服务器和客户代码中的Java方法签名,就会发现没有HRESULT。相反,我们用函数返回值从一些函数那里取回数据。“虚拟机”(VM)会将Java风格的函数调用转换成COM风格的函数调用,甚至包括返回参数。但假若我们在服务器里调用的一个函数在COM这一级失败,又会在虚拟机里出现什么事情呢?在这种情况下,JVM会认为HRESULT值标志着一次失败,并会产生类com.ms.com.ComFailException的一个固有Java异常。这样一来,我们就可用Java异常控制机制来管理COM错误,而不是检查函数的返回值。

  如欲深入了解这个包内包含的类,请参考微软公司的产品文档。

  A.5.5 ActiveX/Beans集成

  Java/COM集成一个有趣的结果就是ActiveX/Beans的集成。也就是说,Java Bean可包含到象VB或任何一种Microsoft Office产品那样的ActiveX容器里。而一个ActiveX控件可包含到象Sun BeanBox这样的Beans容器里。Microsoft JVM会帮助我们考虑到所有的细节。一个ActiveX控件仅仅是一个COM服务器,它展示了预先定义好的、请求的接口。Bean只是一个特殊的Java类,它遵循特定的编程风格。但在写作本书的时候,这一集成仍然不能算作完美。例如,虚拟机不能将JavaBeans事件映射成为COM事件模型。若希望从ActiveX容器内部的一个Bean里对事件加以控制,Bean必须通过低级技术拦截象鼠标行动这类的系统事件,不能采用标准的JavaBeans委托事件模型。

  抛开这个问题不管,ActiveX/Beans集成仍然是非常有趣的。由于牵涉的概念与工具与上面讨论的完全相同,所以请参阅您的Microsoft文档,了解进一步的细节。

  A.5.6 固有方法与程序片的注意事项

  固有方法为我们带来了安全问题的一些考虑。若您的Java代码发出对一个固有方法的调用,就相当于将控制权传递到了虚拟机“体系”的外面。固有方法拥有对操作系统的完全访问权限!当然,如果由自己编写固有方法,这正是我们所希望的。但这对程序片来说却是不可接受的——至少不能默许这样做。我们不想看到从因特网远程服务器下载回来的一个程序片自由自在地操作文件系统以及机器的其他敏感区域,除非特别允许它这样做。为了用J/Direct,RNI和COM集成防止此类情况的发生,只有受到信任(委托)的Java代码才有权发出对固有方法的调用。根据程序片的具体使用,必须满足不同的条件才可放行。例如,使用J/Direct的一个程序片必须拥有数字化签名,指出自己受到完全信任。在写作本书的时候,并不是所有这些安全机制都已实现(对于Microsoft SDK for Java,beta 2版本)。所以当新版本出现以后,请务必留意它的文档说明。

  A.6 CORBA

  在大型的分布式应用中,我们的某些要求并非前面讲述的方法能够满足的。举个例子来说,我们可能想同以前遗留下来的数据仓库打交道,或者需要从一个服务器对象里获取服务,无论它的物理位置在哪里。在这些情况下,都要求某种形式的“远程过程调用”(RPC),而且可能要求与语言无关。此时,CORBA可为我们提供很大的帮助。

  CORBA并非一种语言特性,而是一种集成技术。它代表着一种具体的规范,各个开发商通过遵守这一规范,可设计出符合CORBA标准的集成产品。CORBA规范是由OMG开发出来的。这家非赢利性的机构致力于定义一个标准框架,从而实现分布式、与语言无关对象的相互操作。

  利用CORBA,我们可实现对Java对象以及非Java对象的远程调用,并可与传统的系统进行沟通——采用一种“位置透明”的形式。Java增添了连网支持,是一种优秀的“面向对象”程序设计语言,可构建出图形化和非图形化的应用(程序)

  • 下一篇资讯: java小游戏源代码
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师