探讨大型应用系统开发中的混合语言编程问题

探讨大型应用系统开发中的混合语言编程问题

ID:16435873

大小:85.44 KB

页数:5页

时间:2018-08-09

探讨大型应用系统开发中的混合语言编程问题_第1页
探讨大型应用系统开发中的混合语言编程问题_第2页
探讨大型应用系统开发中的混合语言编程问题_第3页
探讨大型应用系统开发中的混合语言编程问题_第4页
探讨大型应用系统开发中的混合语言编程问题_第5页
资源描述:

《探讨大型应用系统开发中的混合语言编程问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、探讨大型应用系统开发中的混合语言编程问题——以Java和Lisp之间的接口编程方式为例1引言当前,在各种跨开发工具、操作系统和网络的开发方式中,为了更好的实现大型应用系统各种不同的功能,常常采用混合语言编程的方式来完成相应的系统需求。在各种开发语言中,Java语言是开发网络应用程序的首选,而Lisp语言很早就成为人工智能领域中应用最广泛的计算机语言。这两种语言都提供了多种与其他语言的接口,使得我们用这两种语言开发的软件模块能够无缝的链接成一个整体。2 Java的外部接口2.1 JNI调用non-Java代码在某些特殊情况下,Jav

2、a需要调用non-Java程序代码。要和non-Java程序代码衔接,编译器和虚拟机必须提供专门的支持才行。而且还要有额外的工具将Java程序代码对应至non-Java程序代码。Non-Java程序代码的调用标准,是由JavaSoft提供的“JavaNativeInterface,JNI”实现的。目前JNI的设计只能与用C或C++写的nativemethods相接。1)撰写Java程序代码,声明native函数和相应的参数publicclassNativeExample{//声明要调用的外部C函数Invoke_Nativepubl

3、icstaticnativevoidInvoke_Native(StringStr);static{System.loadLibrary("NativeImpl");//将包含native函数的DLL装载到内存}}publicstaticvoidmain(String[]args){NativeExampleapp=newNativeExample();app.Invoke_Native("UseNativeFunction");//调用外部C函数Invoke_Native}2)编译Java源文件,生成native函数的C或C++

4、头文件的函数原型声明:javah-jniNativeExample其中比较关键的是函数头的书写,上面的例子可以生成如下的函数声明:JNIEXPORTvoidJNICALLJava_NativeExample_Invoke_Native(JNIEnv*,jobject,jstring);3)实现non-Java程序代码的DLLextern"C"JNIEXPORTvoidJNICALLJava_NativeExample_Invoke_Native(JNIEnv*env,jobject,jstringjMsg){constchar*m

5、sg=env->GetStringUTFChars(jMsg,0);printf("ExerciseinJava,JNI:%s",msg);env->ReleaseStringUTFChars(jMsg,msg);}2.2 CORBA实现语言无关性CORBA并非某种语言特性,它是一个集成技术,是OMG定义的一套和语言无关的分布式“对象交换标准框架”(standardframeworkofobjectinteroperability)。CORBA的核心是一套标准的语言、接口和协议,共由三部分组成:接口定义语言OMGIDL、对象请

6、求代理ORB及标准协议如IIOP。CORBA客户端(client)和服务器(server)的实现:Java的server对象的实现十分简单,它是个普通的javaclass,只不过继承了由IDL编译器产生的skeleton。Java实现的客户端代码查询服务器的方法可以使用一个专用的文件(例如:ServerInfoFile),它包含了服务器的位置,以及怎样连接它(服务器)的一些信息。它的内容是一些数字编码的字符串,包含了象IP地址,端口号,以及连接服务器的一些其它信息。每一个Java客户通过用一个包含以上信息的文件名(ServerIn

7、foFile)作为参数来登录。服务器在启动时负责将上述信息写入ServerInfoFile文件中。为了处理ServerInfoFile文件,可以专门生成了一个ServerInfo类,类ServerInfo的主要功能是读取一个ServerInfoFile文件的内容,根据ServerInfoFile文件的内容生成一个CORBA实例。当一个Java客户端启动的时候,首先调用方法doCennect(),方法doCennect()主要做一些初始化的工作,如初始化ORB对象,生成一个对象适配器(BOA),生成CORBA的一个实例,向服务器进行

8、注册这些重要的功能。publicstaticvoiddoConnect(){org.omg.CORBA.ORBorb=org.omg.CORBA.ORB.init(args,null);//初始化ORB………server.addListener(l

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。