当前位置: 首页 > 专利查询>河海大学专利>正文

多语言开发系统中实现不同语言间数据通信的方法技术方案

技术编号:7758947 阅读:696 留言:0更新日期:2012-09-14 00:40
本发明专利技术公开了一种多语言开发系统中实现不同语言间数据通信的方法。在需要数据通信的第一语言应用部分和第二语言应用部分之间设置一接口模块;所述接口模块包括与第一语言应用部分连接的第一语言代理,以及与第二语言应用部分连接的第二语言代理,第一语言代理与第二语言代理连接;第一语言代理负责将第一语言应用部分的数据转换为字节序并传输给第二语言代理,以及将第二语言代理传输的字节序转换为第一语言;第二语言代理负责将第二语言应用部分的数据转换为字节序并传输给第一语言代理,以及将第一语言代理传输的字节序转换为第二语言。本发明专利技术还公开了一种多语言开发系统。本发明专利技术方法通用性强,数据通信过程简单、通信效率高,程序间耦合度低。

【技术实现步骤摘要】

本专利技术涉及计算机
,尤其涉及一种。
技术介绍
在计算机软件系统的开发中,由于各种原因,往往需要利用多种语言进行混合开发。例如,基于如下原因,一个软件系统的开发经常会使用JAVA语言、C语言进行混合开发 1.标准的JAVA类库不支持一些硬件相关的功能; 2.有大量的用C语言进行编写并封装好的类库,如果再用JAVA进行重新编写,将会是一种资源上的浪费,增加系统开发成本、系统开发周期以及系统失败的风险; 3.基于性能考虑,用C语言编写性能要求很高的代码。为了解决多语言开发系统中不同语言编写的应用之间的数据通信问题,目前已提出了一些方案。例如,为了解决JAVA语言与其他语言进行混合编程,SUN公司提供了 JNI(Java Native Interface)技术以及与这种技术相关联的一系列类库、类、方法与属性。按照JNI提供的参考手册与当前资料所介绍的方法在JAVA与C之间进行参数传递,进行通信的话,JAVA与C之间的耦合度太多,开发过程中交互复杂且不利于相互之间的独立,对原先用C编写好的代码将会提出较多的修改要求。其它现有技术也不同程度第存在类似问题。
技术实现思路
本专利技术所要解决的技术问题在于克服现有技术的不足,提供一种,该方法通用性强,可实现不同语言之间的数据通信、参数传递,不同语言代码将完全独立编写,功能独立实现,数据通信、参数传递过程简单、通信效率高,程序间耦合度低,同时程序开发高效率。本专利技术具体采用以下技术方案解决上述技术问题。,在需要数据通信的第一语言应用部分和第二语言应用部分之间设置一接口模块;所述接口模块包括与第一语言应用部分连接的第一语言代理,以及与第二语言应用部分连接的第二语言代理,第一语言代理与第二语言代理连接;第一语言代理负责将第一语言应用部分的数据转换为字节序并传输给第二语言代理,以及将第二语言代理传输的字节序转换为第一语言;第二语言代理负责将第二语言应用部分的数据转换为字节序并传输给第一语言代理,以及将第一语言代理传输的字节序转换为第二语言。根据本专利技术的专利技术思路,还可得到一种多语言开发系统,包括至少两种利用不同语言开发的应用部分,在需要数据通信的每两种语言应用部分第一语言应用部分和第二语言应用部分,之间设置有一接口模块;所述接口模块包括与第一语言应用部分连接的第一语言代理,以及与第二语言应用部分连接的第二语言代理,第一语言代理与第二语言代理连接;第一语言代理负责将第一语言应用部分的数据转换为字节序并传输给第二语言代理,以及将第二语言代理传输的字节序转换为第一语言;第二语言代理负责将第二语言应用部分的数据转换为字节序并传输给第一语言代理,以及将第一语言代理传输的字节序转换为第二语言。相比现有技术,本专利技术具有以下有益效果 采用本专利技术方法,系统中各应用部分将能够采用最合适的语言独立地进行开发与设计,系统结构逻辑清晰,使用难度小;提高了基于不同语言嵌套开发项目的开发效率,降低系统开发周期、开发成本以及系统维护成本,大大减少了系统失败风险,同时程序间耦合度显著降低。附图说明图I为本专利技术方法的原理示意图; 图2为JAVA应用和C++应用之间的通信协作 图3为JAVA到C++的通信流程 图4为C++到JAVA的通信流程图。具体实施例方式下面结合附图对本专利技术的技术方案进行详细说明 本专利技术的原理如图I所示,在需要数据通信的第一语言应用部分和第二语言应用部分之间设置一接口模块;所述接口模块包括与第一语言应用部分连接的第一语言代理,以及与第二语言应用部分连接的第二语言代理,第一语言代理与第二语言代理连接;第一语言代理负责将第一语言应用部分的数据转换为字节序并传输给第二语言代理,以及将第二语言代理传输的字节序转换为第一语言;第二语言代理负责将第二语言应用部分的数据转换为字节序并传输给第一语言代理,以及将第一语言代理传输的字节序转换为第二语言。本专利技术的技术方案具有通用性,适用于任意两种不同语言之间的通信。为了便于公众理解,下面以较常见的JAVA应用和C++应用之间的通信为例,来对本专利技术的技术方案进行详细说明。接口模块是本专利技术的关键,本实施例中的接口模块由两部分组成,其一为JAVA接口代理,主要负责1,把JAVA实例变量转换为字节序并传给C++代理;2,把C++传过来的字节序转换为java需要的类实例,并把实例传给JAVA应用;其二为C++接口代理,主要负责1,把C++结构变量转换为字节序并传递给JAVA代理;2,把JAVA应用传过来的字节序转换C++实例,并通过调用C++函数把转换的结果传给C++应用部分。在java应用部分与C++应用部分进行通信时,java与C++之间不传递对应的数据类型,而是在java应用部分与C++应用部分之间增加一个通信接口,对java应用部分与C++应用部分的通信数据进行转换,所有复杂通信都用字节序进行传递,即通信传输的参数只用一种数据类型,即字节数组或指针进行数据通信。针对JAVA应用到C++的通信,通信接口的JAVA代理部分把java复杂的类实例变量转换为字节数组,并把转换结果传给C++代理部分,C++代理部分对收到的来自于JAVA的字节序进行转换,转换为对应的C++数据类型,然后直接调用C++类库提供的接口函数;针对C++到JAVA的通信,通信接口的C++代理部分把C++实例变量转换为字节序,并把结果传给JAVA代理部分,JAVA代理部分把来源于C++应用部分的字节序转换为对应的JAVA类,并调用JAVA接口。JAVA应用与C++应用之间的数据通信原理如图2所不,图3、图4分别显不了 JAVA到C++、C++到JAVA的通彳目流程。整个过程可以通过如下实例进行详细表述。假设在JAVA应用部分存在一个传输通信数据的JAVA类InfoPack,在C++应用部分存在一个对应的结构TInfoPack—T,接口的java代理部分实现方法的详细描述如下InfoPack类public class InfoPack implements Serializable{public byte口 getObjectBytes(){ TLangAdaptor adaptor = new TLangAdaptor (); adaptor. setPlatform(xuf—platform); adaptor. setPackNumber(xuf—packNumber); adaptor. setBitOrder(bit—order); adaptor, add(wSeqNo, 〃int〃); adaptor, add(wPackNum, 〃int〃); adaptor, add(wPackLen,〃int〃); for (xuf—0=0;xuf_0<1024;xuf—0++) adaptor, add (tData, 〃char〃);return adaptor. getObjectBytes(); }; public void parse (byte xuf—input口,int xuf—index) { TLangAdaptor adaptor = new TLangAdaptor(); adaptor. s本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:彭建华徐立中李明
申请(专利权)人:河海大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1