[发明专利]OSGi环境下Java模块和C模块的通信机制的实现方法有效
申请号: | 201310637671.4 | 申请日: | 2013-11-27 |
公开(公告)号: | CN103746959B | 公开(公告)日: | 2018-04-06 |
发明(设计)人: | 倪同贵;邓兵;施晨 | 申请(专利权)人: | 上海斐讯数据通信技术有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06 |
代理公司: | 杭州千克知识产权代理有限公司33246 | 代理人: | 周希良 |
地址: | 201616 上海市松*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | osgi 环境 java 通信 机制 实现 方法 | ||
技术领域
本发明涉及计算机通信的技术领域,特别是涉及一种OSGi环境下Java和C的通信机制的实现方法。
背景技术
Java语言的功能很强大,但不是万能的。在Java语言中,丢弃了指针这个功能强大且与底层交互密切的语言工具。单从效率层面上来讲,Java与C相比较,Java的执行效率远远低于C。对于一些算法要求比较高的,Java便不是最好的选择。Java是一种面向对象的语言,在各种纷繁复杂的APP应用中,Java备享赞誉,美名远播。这样就带来了Java与C共存协同合作的问题。Java的创造者们在开发之初就已经考虑到了这一点,在Java中提供了与C/C++的编程接口,这就是Java本机接口(Java Native Interface,JNI)。
Unix Domain Socket即Uinx域套接字,用于同一台机上运行的进程之间的通信。Unix域套接字的执行效率比因特网域的套接字更高,它是实现Java与C通信的桥梁。
Open Service Gateway Initiative,即OSGi(JSR291)亦称做Java语言的动态模块系统,它为模块化应用的开发定义了一个基础架构。简单的说,通过OSGi可以在后台对设备组件进行安装、升级或卸载而无需打断该设备的正常运行。OSGi作为Java模块化的载体,运行在Java虚拟机(Java Virtual Machine,JVM)之上。
现有技术中,解决Java程序和C程序之间的通信问题,通常采用的方式有如下几种:
(1)Socket通信方式
Socket是建立在传输协议(主要是TCP和UDP)上的一种套接字规范。套接字屏蔽了底层通信软件和具体操作系统的差异,使得任何两台安装了TCP协议软件和实现了要节制规范的计算机之间的通信成为可能。利用标准的Socket通信的方法,可以实现任何平台任何进程之间的Socket通信,从而实现信息的传递。然而,这种实现方案只能运行在任何两台安装了TCP协议的机器之间,利用网络套接字通信,而在其他环境下则无法运行及通信。
(2)文件共享方式
通信双方将需要传递的参数等信息,通过文件进行传递。然而,这种方法需要注意线程同步和安全等问题,而且其效率也相对比较低下。同时,由于该方式虽然较为简单易用,但是对文件的操作的安全性则成了通信的最大障碍。因此,在对效率要求比较高且对数据安全要求比较高的场合,这种方式便不可取了。
(3)通过JNI方式
JNI是编写Java本机方法和把JVM嵌入到本机应用程序中的标准接口。通过JNI编写程序,可以很方便的做到跨平台移植。采用JNI是目前为止较为流行的Java通信方式。单独使用JNI给JAVA与C之间的通信带来较大的灵活性。但是JNI本身只是一系列通用接口,其实现依赖于设计者本身的技术解决方案,因此带来不确定性。
综上所述,现有的方案的运行环境各异且各有优缺点,有的运行于不同主机,有的运行于JVM。OSGi是近年来新提出的标准,Java模块化是目前比较热门的发展趋势,因此在嵌入式平台下,OSGi环境中,提出一套Java与C的通信解决方案,同时能够解决通信安全、通信效率等问题则显得非常有必要。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种OSGi环境下Java和C的通信机制的实现方法,使得JAVA环境下的任务和C环境的任务能够互相通信。
为实现上述目的及其他相关目的,本发明提供一种OSGi环境下Java和C的通信机制的实现方法,其中Java程序运行在OSGi框架下,C程序运行于linux系统上,所述实现方法至少包括:在OSGi环境下注册中转消息Bundle,使Java程序能够使用消息服务,同时能响应C程序发送过来的消息;C程序与中转消息Bundle建立通讯socket,或者Java程序通过向中转消息Bundle发起通讯请求,由中转消息Bundle建立与C程序的socket;C程序通过中转消息Bundle收发socket消息来与Java程序通讯;Java程序通过中转消息Bundle的消息服务与C程序通讯。
根据上述的OSGi环境下Java和C的通信机制的实现方法,其中:中转消息之间采用Unix域套接字进行通信。
根据上述的OSGi环境下Java和C的通信机制的实现方法,其中:中转消息包括消息头和消息数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海斐讯数据通信技术有限公司,未经上海斐讯数据通信技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310637671.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种增加骨密度保健胶囊及其制备方法
- 下一篇:一种推车