- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
探讨大型应用系统开发中的混合语言编程问题——以Java和Lisp之间的接口编程方式为例
1 引言当前,在各种跨开发工具、操作系统和网络的开发方式中,为了更好的实现大型应用系统各种不同的功能,常常采用混合语言编程的方式来完成相应的系统需求。在各种开发语言中,Java语言是开发网络应用程序的首选,而Lisp语言很早就成为 HYPERLINK /humanintelligence/ \t _blank 人工智能领域中应用最广泛的 HYPERLINK /computerscience/ \t _blank 计算机语言。这两种语言都提供了多种与其他语言的接口,使得我们用这两种语言开发的软件模块能够无缝的链接成一个整体。2 Java的外部接口2.1 JNI调用non-Java代码在某些特殊情况下,Java需要调用non-Java程序代码。要和non-Java程序代码衔接,编译器和虚拟机必须提供专门的支持才行。而且还要有额外的工具将Java程序代码对应至non-Java程序代码。Non-Java程序代码的调用标准,是由JavaSoft提供的“Java Native Interface,JNI”实现的。目前JNI的设计只能与用C或C++写的native methods相接。1)撰写Java程序代码,声明native函数和相应的参数public class NativeExample{//声明要调用的外部C函数Invoke_Nativepublic static native void Invoke_Native( String Str );static{System.loadLibrary( NativeImpl );//将包含native函数的DLL装载到内存}}public static void main( String[] args ){NativeExample app=new NativeExample();app.Invoke_Native( Use Native Function );//调用外部C函数Invoke_Native}2)编译Java源文件,生成native函数的C或C++头文件的函数原型声明:javah -jni NativeExample其中比较关键的是函数头的书写,上面的例子可以生成如下的函数声明:JNIEXPORT void JNICALL Java_NativeExample_Invoke_Native(JNIEnv *,jobject,jstring);3)实现non-Java程序代码的DLLextern C JNIEXPORT void JNICALL Java_NativeExample_Invoke_Native(JNIEnv *env,jobject,jstring jMsg){const char* msg=env-GetStringUTFChars(jMsg,0);printf( Exercise in Java,JNI:%s\ n,msg );env-ReleaseStringUTFChars(jMsg,msg);}2.2 CORBA实现语言无关性CORBA并非某种语言特性,它是一个集成技术,是OMG定义的一套和语言无关的分布式“对象交换标准框架”(standard framework of object interoperability)。CORBA的核心是一套标准的语言、接口和协 HYPERLINK /yilunwen/ \t _blank 议,共由三部分组成:接口定义语言OMG IDL、对象请求代理ORB及标准协议如IIOP。CORBA客户端(client)和服务器(server)的实现:Java的server对象的实现十分简单,它是个普通的java class,只不过继承了由IDL编译器产生的skeleton。Java实现的客户端代码查询服务器的方法可以使用一个专用的文件(例如:ServerInfoFile),它包含了服务器的位置,以及怎样连接它(服务器)的一些信息。它的内容是一些数字编码的字符串,包含了象IP地址,端口号,以及连接服务器的一些其它信息。每一个Java客户通过用一个包含以上信息的文件名(ServerInfoFile)作为参数来登录。服务器在启动时负责将上述信息写入ServerInfoFile文件中。为了处理ServerInfoFile文件,可以专门生成了一个ServerInfo类,类ServerInfo的主要功能是读取一个ServerInfoFile文件的内容,根据ServerInfoFile文件的内容生成一个CORBA实例。当一个Java客户端启动的时候,首先调用方法
您可能关注的文档
- 投资剖析汇报范例.doc
- 投资和理财专业课程设置.doc
- 投资基本面分析 [2].doc
- 投资学习题参考解析.doc
- 投资学作业和答案1.doc
- 投资学形成性考核作业解析.doc
- 投资学概论考试复习题.docx
- 投资收益剖析基准.docx
- 投资管理习题解析.doc
- 投资期末复习题目和答案三.doc
- 2025年成都市玩偶生产荧光涂鸦互动玩偶开发可行性研究报告.docx
- 2025年成都市海绵生产用于体育馆室外运动场地透水改造可行性研究报告.docx
- 2025年天津市体操鞋企业团建运动应用报告.docx
- 2025年上海市溶洞极限运动(速降)场地开发可行性研究报告.docx
- 2025年上海市涵洞工程施工技术应用可行性研究报告.docx
- 2025年上海市体育场馆设施扎带安全防护可行性研究报告.docx
- 2025年上海市牦牛育肥产业园区建设可行性研究报告.docx
- 2025年旅拍宠物陪伴拍摄项目可行性研究报告.docx
- 2025年上海市进口食品节庆主题快闪店可行性研究报告.docx
- 2025年上海市洗选厂尾矿综合利用产业化可行性研究报告.docx
文档评论(0)