Welcome 微信登录

首页 / 软件开发 / JAVA

汇集(Marshaling)

汇集(Marshaling)

汇集(Marshaling)2007-05-29 yycnet.yeah.net yyc译“汇集”(Marshaling)是指将一个函数自变量从它原始的二进制形式转换成与语言无关的某种形式,再将这种通用形式转换成适合调用函数采用的二进制格式。在前面的例子中,我们调用了MessageBox()函数,并向它传递了两个字串。MessageBox()是个C函数,而且Java字串的二进制布局与C字串并不相同。但尽管如此,自变量仍获得了正确的传...
编写回调函数

编写回调函数

编写回调函数2007-05-29 yycnet.yeah.net yyc译有些Win32 API函数要求将一个函数指针作为自己的参数使用。Windows API函数随后就可以调用自变量函数(通常是在以后发生特定的事件时)。这一技术就叫作“回调函数”。回调函数的例子包括窗口进程以及我们在打印过程中设置的回调(为后台打印程序提供回调函数的地址,使其能更新状态,并在必要的时候中止打印)。另一个例子是API函数EnumWindows(),它...
其他J/Direct特性

其他J/Direct特性

其他J/Direct特性2007-05-29 yycnet.yeah.net yyc译通过@dll.import引导命令内的修改符(标记),还可用到J/Direct的另两项特性。第一项是对OLE函数的简化访问,第二项是选择API函数的ANSI及Unicode版本。根据约定,所有OLE函数都会返回类型为HRESULT的一个值,它是由COM定义的一个结构化整数值。若在COM那一级编写程序,并希望从一个OLE函数里返回某些不同的东西,就必须将一个特殊的指针传递给...
本原接口(RNI)

本原接口(RNI)

本原接口(RNI)2007-05-29 yycnet.yeah.net yyc译同J/Direct相比,RNI是一种比非Java代码复杂得多的接口;但它的功能也十分强大。RNI比J/Direct更接近于JVM,这也使我们能写出更有效的代码,能处理固有方法中的Java对象,而且能实现与JVM内部运行机制更紧密的集成。RNI在概念上类似Sun公司的JNI。考虑到这个原因,而且由于该产品尚未正式完工,所以我只在这里指出它们之间的主要差异。欲了解更详细的情况,请参...
COM基础

COM基础

COM基础2007-05-29 yycnet.yeah.net yyc译COM是一种二进制规范,致力于实施可相互操作的对象。例如,COM认为一个对象的二进制布局必须能够调用另一个COM对象里的服务。由于是对二进制布局的一种描述,所以只要某种语言能生成这样的一种布局,就可通过它实现COM对象。通常,程序员不必关注象这样的一些低级细节,因为编译器可自动生成正确的布局。例如,假设您的程序是用C++写的,那么大多数编译器都能生成符合COM规范的一张虚拟函数表格。对...
用Java设计COM服务器

用Java设计COM服务器

用Java设计COM服务器2007-05-29 yycnet.yeah.net yyc译本节将介绍ActiveX控件、Automation服务器或者其他任何符合COM规范的服务器的开发过程。下面这个例子实现了一个简单的Automation服务器,它能执行整数加法。我们用setAddend()方法设置addend的值。每次调用sum()方法的时候,addend就会添加到当前result里。我们用getResult()获得result值,并用clear()重新...
用Java设计COM客户

用Java设计COM客户

用Java设计COM客户2007-05-29 yycnet.yeah.net yyc译现在,让我们转到另一侧,并用Java开发一个COM客户。这个程序会调用系统已安装的COM服务器内的服务。就目前这个例子来说,我们使用的是在前一个例子里为服务器实现的一个客户。尽管代码在Java程序员的眼中看起来比较熟悉,但在幕后发生的一切却并不寻常。本例使用了用Java写成的一个服务器,但它可应用于系统内安装的任何ActiveX控件、ActiveX Automation服...
固有方法与程序片的注意事项

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

固有方法与程序片的注意事项2007-05-29 yycnet.yeah.net yyc译固有方法为我们带来了安全问题的一些考虑。若您的Java代码发出对一个固有方法的调用,就相当于将控制权传递到了虚拟机“体系”的外面。固有方法拥有对操作系统的完全访问权限!当然,如果由自己编写固有方法,这正是我们所希望的。但这对程序片来说却是不可接受的——至少不能默许这样做。我们不想看到从因特网远程服务器下载回来的一个程序片自...
CORBA

CORBA

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

一个例子(CORBA)

一个例子(CORBA)2007-05-29 yycnet.yeah.net yyc译这儿显示的代码可能并不详尽,因为不同的ORB有不同的方法来访问CORBA服务,所以无论什么例子都要取决于具体的厂商(下例使用了JavaIDL,这是Sun公司的一个免费产品。它配套提供了一个简化版本的ORB、一个命名服务以及一个“IDL→Java”编译器)。除此之外,由于Java仍处在发展初期,所以在不同的Java/CORBA产品里并不是包含...
Java程序片和CORBA

Java程序片和CORBA

Java程序片和CORBA2007-05-29 yycnet.yeah.net yyc译Java程序片可扮演一名CORBA客户的角色。这样一来,程序片就可访问由CORBA对象揭示的远程信息和服务。但程序片只能同最初下载它的那个服务器连接,所以程序片与它沟通的所有CORBA对象都必须位于那台服务器上。这与CORBA的宗旨是相悖的:它许诺可以实现“位置的透明”,或者“与位置无关”。将Java程序片作为CORBA客...
比较CORBA与RMI

比较CORBA与RMI

比较CORBA与RMI2007-05-29 yycnet.yeah.net yyc译我们已经知道,CORBA的一项主要特性就是对RPC(远程过程调用)的支持。利用这一技术,我们的本地对象可调用位置远程对象内的方法。当然,目前已有一项固有的Java特性可以做完全相同的事情:RMI(参考第15章)。尽管RMI使Java对象之间进行RPC调用成为可能,但CORBA能在用任何语言编制的对象之间进行RPC。这显然是一项很大的区别。然而,可通过RMI调用远程、非Jav...
CORBA学习总结

CORBA学习总结

CORBA学习总结2007-05-29 yycnet.yeah.net yyc译我们在这个附录讨论的都是从一个Java应用里调用非Java代码最基本的技术。每种技术都有自己的优缺点。但目前最主要的问题是并非所有这些特性都能在所有JVM中找到。因此,即使一个Java程序能调用位于特定平台上的固有方法,仍有可能不适用于安装了不同JVM的另一种平台。Sun公司提供的JNI具有灵活、简单(尽管它要求对JVM内核进行大量控制)、功能强大以及通用于大多数JVM的优点。...
对比C++和Java

对比C++和Java

对比C++和Java2007-05-29 yycnet.yeah.net yyc译“作为一名C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且Java的语法无疑是非常熟悉的。事实上,Java本来就是从C++衍生出来的。”然而,C++和Java之间仍存在一些显著的差异。可以这样说,这些差异代表着技术的极大进步。一旦我们弄清楚了这些差异,就会理解为什么说Java是一种优秀的程序设计语言。本附录将引导大家认识用于区分Java和C...
Java编程规则

Java编程规则

Java编程规则2007-05-29 yycnet.yeah.net yyc译本附录包含了大量有用的建议,帮助大家进行低级程序设计,并提供了代码编写的一般性指导:(1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。例如:ThisIsAClassNamethisIsMethodOrFieldName若在定义中出现了常数初始化字符,则大写static final基本类...
<< 21 22 23 24 25 26 27 28 29 30 >>