利用非Java代码
JAVA语言及其尺度API(应用措施编程接口)应付应用措施的编写已绰绰有余。但在某些环境下,照旧必需利用非JAVA编码。譬喻,我们有时要会见操纵系统的专用特性,与非凡的硬件设备打交道,反复利用现有的非Java接口,可能要利用“对时间敏感”的代码段,等等。与非Java代码的相同要求得到编译器和“虚拟机”的专门支持,并需附加的东西将Java代码映射成非Java代码(也有一个简朴要领:在第15章的“一个Web应用”小节中,有个例子表明白如何操作尺度输入输出同非Java代码毗连)。今朝,差异的开拓商为我们提供了差异的方案:Java 1.1有“Java固有接口”(Java Native Interface,JNI),网景提出了本身的“Java运行期接口”(Java Runtime Interface)打算,而微软提供了J/Direct、“本源接口”(Raw Native Interface,RNI)以及Java/COM集成方案。
各开拓商在这个问题上所持的差异立场对措施员长短常倒霉的。若Java应用必需挪用固有要领,则措施员或者要实现固有要领的差异版本——详细由应用措施运行的平台抉择。措施员也许实际需要差异版本的Java代码,以及差异的Java虚拟机。
另一个方案是CORBA(通用工具请求署理布局),这是由OMG(工具打点组,一家非获利性的公司协会)开拓的一种集成技能。CORBA并非任何语言的一部门,只是实现通用通信总线及处事的一种类型。操作它可在由差异语言实现的工具之间实现“彼此操纵”的本领。这种通信总线的名字叫作ORB(工具请求署理),是由其他开拓商实现的一种产物,但并不属于Java语言类型的一部门。
本附录将对JNI,J/DIRECT,RNI,JAVA/COM集成和CORBA举办概述。但不会作更深条理的探讨,甚至有时还假定读者已对相关的观念和技能有了必然水平的认识。但到最后,各人应该可以或许自行较量差异的要领,并按照本身要办理的问题挑选出最得当的一种。