探讨大型应用系统开发中的混合语言编程问题——以Java和Lisp之间的接口编程方式为例.docVIP

探讨大型应用系统开发中的混合语言编程问题——以Java和Lisp之间的接口编程方式为例.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
探讨大型应用系统开发中的混合语言编程问题——以Java和Lisp之间的接口编程方式为例.doc

  探讨大型应用系统开发中的混合语言编程问题——以Java和Lisp之间的接口编程方式为例 --Abstract:In this paper,ming language in the greatapplication system. Some programming methods about the interface bet 摘 要:文章研究了大型应用系统开发中的混合语言编程问题,列举了Java和Lisp这两种不同的程序设JAVA论文计语言之间的接口编程方式。其中的各种接口模式也可以通过相互封装来实现一些特殊的应用要求。 关键词:Java;JNI;lisp;CORBA;;接口编程 1引言 当前,在各种跨开发工具、操作系统和网络的开发方式中,为了更好的实现大型应用系统各种不同的功能,常常采用混合语言编程的方式来完成相应的系统需求。在各种开发语言中,Java语言是开发网络应用程序的首选,而Lisp语言很早就成为人工智能领域中应用最广泛的计算机语言。这两种语言都提供了多种与其他语言的接口,使得我们用这两种语言开发的软件模块能够无缝的链接成一个整体。 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_Native public static native void Invoke_Native( String Str ); static { System.loadLibrary( NativeImpl ); //将包含native函数的DLL装载到内存 } } public static void main( String[] args ) { NativeExample app=neple(); 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程序代码的DLL extern 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 frameg. CORBA. ORB orb= org. omg. CORBA. ORB. init (args,null); //初始化ORB ……… server.addListener(listener); //向服务器注册新生成的客户 } 至此,产生了一个新的用户,并向服务器注册了自己,已经可以和服务器进行通信了。当客户输入了一个命令后,可以调用方法doSend(),将所输入的命令传给服务器,让服务器进行处理。在方法doSend()中,主要是调用服务器端的sendMessage()方法。 public static void doSend() { server.sendMessage(用户输入的命令);} 当服务器处理完该命令后,将调用客户端的messageReceived()方法,根据服务器端已有的注册信息,将处理结果发给客户端。--CORBA为Java提供了跨语言的互用性,这使得在分布式应用中Java可以和其他高性能语言(如:C

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档