Java与C/C++异构平台的本地通信(Java也可以操作硬件)
来源:互联网 发布:95后嫩模网络直播 编辑:程序博客网 时间:2024/05/29 16:43
EasyPlayer无广告看遍全球视频 欢迎下载使用
官网: www.91easyplayer.com
Java本身已经足够强大,但是在某些情况下,Java也是有局限的,最大的局限在于不能直接操作硬件,因为Java是运行在JVM上的,不是直接运行于CPU。另一个原因在于相比于C/C++而言,Java的运行效率比较低,但是C/C++虽然运行效率高,且能够直接操作硬件,但是的带来的不足是,开发效率太低,那就将Java与C/C++结合起来吧!利用各自的优势,发挥最大的潜力。
这里使用的就是JNI技术,Java Native Interface(Java本地接口)
说起来也很简单,就是用Java定义业务逻辑接口,然后用C/C++是实现这些接口,并且这些实现对于Java的调用是透明的。
首先创建一个Java项目jnidemo
如下:
定义了一个UserInfo类,和一个UserService业务逻辑对象
UserInfo类,只有一个id和name成员变量
UserService业务逻辑类
static{}这句话待会儿说
值得注意的是这里定义了2个方法,countUser和findUserById,但是并没有实现,而且用native标注
这就说明了这两个方法是本地托管方法,通俗的说就是让C/C++去实现的方法,而Java不必去管怎么实现的。
好以上就是Java的工程,下面看看C/C++的工程
采用的IDE是Visual Stdio 2008
这里比较复杂
1.第一步,导出刚刚Java托管的UserService业务逻辑类托管的C/C++头文件
具体做法:开始->运行->cmd
然后进入到jnidemo的项目的根目录下或者bin目录(Web工程没有bin目录),
然后运行 javah -jni com.sean.jni.service.UserService(类的绝对路径)
然后在bin目录里就能看到生成的C/C++头文件
好,要的就是这个dll文件,dynamic link library(动态链接库)
将这个dll拷贝到java工程中,可以新建一个dll代码文件夹(随意)
{
System.loadLibrary("dll/JNIDemo");
}
- Java与C/C++异构平台的本地通信(Java也可以操作硬件)
- Java与C/C++异构平台的本地通信 实现java与硬件打交道
- java 与 c 的通信
- Java调用本地接口jni与C通信----------------JNI
- Java与C之间的socket通信
- Java与C之间的socket通信
- Java与C之间的socket通信
- java与C之间的通信
- java与c间通信
- JNI(或者也可以说是NDK) JAVA 调 .C文件
- android的NDK和java进行本地socket通信-----C服务端,java客户端
- Socket:java与C之间的文件传送<4>(JAVA与C通信)
- Socket:java与C之间的文件传送<4>(JAVA与C通信)
- android native c java进行本地socket通信
- android native c java进行本地socket通信
- android native c java进行本地socket通信
- Rserve与Java的跨平台通信
- Rserve与Java的跨平台通信
- Cable TV Network, ACM/ICPC SEERC 2004, UVa1660【Dinic 最小割 拆点】
- HTTP请求和响应中 中文urlEncode urlDecode编码问题
- 【css】font简写
- 演示Activity的生命周期
- Android doc|Getting Started|部分 --转载 保存数据
- Java与C/C++异构平台的本地通信(Java也可以操作硬件)
- Java——关键字final
- Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.
- spring mvc中mybaits+laypage分页实现 bootstrap
- 一个简单的SpringMVC需要哪些jar包[Spring4.x]
- mxl 数据
- Leetcode 399. Evaluate Division 除法推理 解题报告
- 20160912之一
- 使用eclipse打包app以及AndroidStudio和Eclipse中app签名修改等问题(SH1和MD5)