了 对象(即生成并调用它的一个实例)。这与 对象模型是一致的。在 中,程序员永远不会得到
对整个对象的一个引用。相反,他们只能拥有对类内实现的一个或多个接口的引用。
“例示”Adder 类的一个Java 对象以后,就相当于指示 激活服务器,并创建这个 对象的一个实例。
但我们随后必须指定自己想使用哪个接口,在由服务器实现的接口中挑选一个。这正是类型模型完成的工
作。这儿使用的是“默认遣送”接口,它是Automation 控制器用于同一个Automation 服务器通信的标准接
口。欲了解这方面的细节,请参考由Ibid 编著的《Inside 》。请注意激活服务器并选择一个 接口是
多么容易!
import javaadder。*;
public class JavaClient {
public static void main(String '' args) {
Adder_DispatchDefault iAdder =
(Adder_DispatchDefault) new Adder();
iAdder。setAddend(3);
iAdder。sum();
iAdder。sum();
iAdder。sum();
System。out。println(iAdder。getResult());
}
}
现在,我们可以编译它,并开始运行程序。
1。 。ms。 包
。ms。包为 的开发定义了数量众多的类。它支持GUID 的使用——Variant (变体)和SafeArray
665
…………………………………………………………Page 667……………………………………………………………
Automation (安全数组自动)类型——能与ActiveX 控件在一个较深的层次打交道,并可控制 异常。
由于篇幅有限,这里不可能涉及所有这些主题。但我想着重强调一下 异常的问题。根据规范,几乎所有
函数都会返回一个 HRESULT 值,它告诉我们函数调用是否成功,以及失败的原因。但若观察服务器和客
户代码中的 Java 方法签名,就会发现没有HRESULT 。相反,我们用函数返回值从一些函数那里取回数据。
“虚拟机”(VM )会将Java 风格的函数调用转换成 风格的函数调用,甚至包括返回参数。但假若我们在
服务器里调用的一个函数在 这一级失败,又会在虚拟机里出现什么事情呢?在这种情况下,JVM 会认为
HRESULT 值标志着一次失败,并会产生类。ms。。FailException 的一个固有 Java 异常。这样一来,
我们就可用 Java 异常控制机制来管理 错误,而不是检查函数的返回值。
如欲深入了解这个包内包含的类,请参考微软公司的产品文档。
A。5。5 ActiveX/Beans 集成
Java/ 集成一个有趣的结果就是ActiveX/Beans 的集成。也就是说,Java Bean 可包含到象 VB或任何一种
Microsoft Office 产品那样的 ActiveX 容器里。而一个ActiveX 控件可包含到象Sun BeanBox 这样的Beans
容器里。Microsoft JVM 会帮助我们考虑到所有的细节。一个 ActiveX 控件仅仅是一个 服务器,它展示
了预先定义好的、请求的接口。Bean 只是一个特殊的Java 类,它遵循特定的编程风格。但在写作本书的时
候,这一集成仍然不能算作完美。例如,虚拟机不能将JavaBeans 事件映射成为 事件模型。若希望从
ActiveX 容器内部的一个Bean 里对事件加以控制,Bean 必须通过低级技术拦截象鼠标行动这类的系统事件,
不能采用标准的JavaBeans 委托事件模型。
抛开这个问题不管,ActiveX/Beans 集成仍然是非常有趣的。由于牵涉的概念与工具与上面讨论的完全相
同,所以请参阅您的Microsoft 文档,了解进一步的细节。
A。5。6 固有方法与程序片的注意事项
固有方法为我们带来了安全问题的一些考虑。若您的 Java 代码发出对一个固有方法的调用,就相当于将控制
权传递到了虚拟机“体系”的外面。固有方法拥有对操作系统的完全访问权限!当然,如果由自己编写固有
方法,这正是我们所希望的。但这对程序片来说却是不可接受的——至少不能默许这样做。我们不想看到从
因特网远程服务器下载回来的一个程序片自由自在地操作文件系统以及机器的其他敏感区域,除非特别允许
它这样做。为了用 J/Direct ,RNI 和 集成防止此类情况的发生,只有受到信任(委托)的 Java 代码才有
权发出对固有方法的调用。根据程序片的具体使用,必须满足不同的条件才可放行。例如,使用 J/Direct 的
一个程序片必须拥有数字化签名,指出自己受到完全信任。在写作本书的时候,并不是所有这些安全机制都
已实现(对于Microsoft SDK for Java ,beta 2 版本)。所以当新版本出现以后,请务必留意它的文档说
明。
A。6 CORBA
在大型的分布式应用中,我们的某些要求并非前面讲述的方法能够满足的。举个例子来说,我们可能想同以
前遗留下来的数据仓库打交道,或者需要从一个服务器对象里获取服务,无论它的物理位置在哪里。在这些
情况下,都要求某种形式的“远程过程调用” (RPC),而且可能要求与语言无关。此时,CORBA 可为我们提
供很大的帮助。
CORBA 并非一种语言特性,而是一种集成技术。它代表着一种具体的规范,各个开发商通过遵守这一规范,
可设计出符合CORBA 标准的集成产品。CORBA 规范是由OMG 开发出来的。这家非赢利性的机构致力于定义一
个标准框架,从而实现分布式、与语言无关对象的相互操作。
利用CORBA,我们可实现对Java 对象以及非 Java 对象的远程调用,并可与传统的系统进行沟通——采用一
种“位置透明”的形式。Java 增添了连网支持,是一种优秀的“面向对象”程序设计语言,可构建出图形化
和非图形化的应用(程序)。Java 和OMG 对象模型存在着很好的对应关系;例如,无论 Java 还是CORBA 都
实现了“接口”的概念,并且都拥有一个引用(参考)对象模型。
A。6。1 CORBA 基础
由OMG 制订的对象相互操作规范通常称为“对象管理体系”(ObjectManagement Architecture,OMA)。OMA
定义了两个组件:“核心对象模型”(Core Object Model)和“OMA 参考体系”(OMA Reference
Model)。OMA 参考体系定义了一套基层服务结构及机制,实现了对象相互间进行操作的能力。OMA 参考体系
包括“对象请求代理”(Object Request Broker,ORB)、“对象服务”(Object Services,也称作
666
…………………………………………………………Page 668……………………………………………………………
CORBAservices )以及一些通用机制。
ORB 是对象间相互请求的一条通信总线。进行请求时,毋需关心对方的物理位置在哪里。这意味着在客户代
码中看起来象一次方案调用的过程实际是非常复杂的一次操作。首先,必须存在与服务器对象的一条连接途
径。而且为了创建一个连接,ORB 必须知道具体实现服务器的代码存放在哪里。建好连接后,必须对方法自
变量进行“汇集”。例如,将它们转换到一个二进制流里,以便通过网络传送。必须传递的其他信息包括服
务器的机器名称、服务器进程以及对那个进程内的服务器对象进行标识的信息等等。最后,这些信息通过一
种低级线路协议传递,信息在服务器那一端解码,最后正式执行调用。ORB 将所有这些复杂的操作都从程序
员眼前隐藏起来了,并使程序员的工作几乎和与调用本地对象的方法一样简单。
并没有硬性规定应如何实现ORB 核心,但为了在不同开发商的 ORB 之间实现一种基本的兼容,OMG 定义了一
系列服务,它们可通过标准接口访问。
1。 CORBA 接口定义语言(IDL)
CORBA 是面向语言的透明而设计的:一个客户对象可调用属于不同类的服务器对象方法,无论?
小说推荐
- 软件工程实践者的思想(PDF格式)
- -Page 1-大 道 至 简—软件工程实践者的思想周爱民(Aimingoo 著-Page 2-序2004 年 11 月初爱民(Aimingoo)第一次把他的书稿给我,我翻看了一下,第一反应讲的是感想。这不错,在技
- 最新章:第26章
- 深入浅出MFC第2版(PDF格式)
- -Page 1-Page 2-山高月小山高月小 水落石出水落石出山高月小山高月小 水落石出水落石出-Page 3-深入淺出MFC(第版 使用Visual C 5.0 MFC 4.2)Dissecting MFC(Second Edition Using Visual C 5.0 MFC 4.2)侯俊
- 最新章:第309章
- VB2008从入门到精通(PDF格式英文版)
- -Page 1(R)The eXperT’s Voice inBeginningVB 2008From Novice to ProfessionalChristian Gross-Page 2-Page 3-Beginning VB 2008From Novice to Professional■C
- 最新章:第214章
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 最新章:第4章
- JMS简明教程(PDF格式)
- -Page 1-JMS1.1规范中文版卫建军2007‐11‐22-Page 2
- 最新章:第28章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 最新章:第143章
- 神祗之眼 (正式版)第7卷(全文完)作者:百里芜虚
- 第五十一章离12月25日的圣诞节还有两天,纽约已经换上了节日的盛装,几天前的一场大雪令整个城市一片银白。人们笑逐颜开,都纷纷开始为节日做准备,商家为了在节日打开销路纷纷推出各种优惠促销手段,纽约的大街小巷全都这样热闹。依沙那被老婆打发出来买过节要用的杂货,而女儿则和凯妮一起到百货商场去买衣服去了。对
- 最新章:第23章
- SQL语言艺术(PDF格式)
- -Page 1-SQLSSQQLL语言艺术内容介绍本书分为12章,每一章包含许多原则或准则,并通过举例的方式对原则进行解释说明。这些例子大多来自于实际案例,对九种SQL经典查询场景以及其性能影响讨论,非常便于实践,为你数据库应用维护人员阅读。资深 SQL 专家 Stéphane Faroult倾力打
- 最新章:第27章
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 最新章:第31章