Java JNI详述
来源:互联网 发布:python 多行注释快捷键 编辑:程序博客网 时间:2024/06/14 00:43
什么是JNI:
JNI就是Java代码调用C代码的一种机制。是Java平台的重要补充。 优点就是,可以扩展Java功能。比如Java网络API中不提供TCP层以下协议实现。比如ICMP协议。既Ping。 所以无论什么方法都无法通过纯Java代码(不包含C)开发出类似Ping的程序。唯有通过JNI可实现。 缺点: 使用JNI开发的程序就限制了平台无关特性。
如何开发JNI程序呢?
我们写一个简单的入门程序, 打印简单的Hello,JNI。看一下是如何运行的。
1. 编程Java代码。
package jni;
public class HelloJNI {
public native void showMessage();
static{
System.loadLibrary("hellojni");
}
public static void main(String[] args) {
new HelloJNI ().showMessage();
}
}
2. 将该Java代码编译为Class文件。 注意native标识的方法为本地方法,及由JNI实现的方法。
javac jni\HelloJNI.java
3. 使用javah命令将生成的Class文件产生C文件的头文件。 命令如下。
javah jni.HelloJNI
4. 创建动态链接文件,以下以Windows为例创建DLL工程。
将jni.h(在jdk的include目录下)及javah 生成的jni_HelloJNI.h放到C 工程。
编写C程序如下
#include "jni.h"
#include "jni_HelloWorld.h"
JNIEXPORT void JNICALL Java_jni_HelloJNI_showMessage(JNIEnv *env, jobject obj)
{
printf("Hello, JNI\n");
return;
}
5. 编译工程。 注意需要把jdk的include目录,jdk\lib目录加入到C工程的编译路径中。就是说C编译环境可以找到jni.h及所需lib包。
6. 编译后生成DLL文件。
7. 将DLL文件加入到Java工程中,Path路径里。即可编译。
如何调试呢?
编译好程序了,可以正常运行则好。 不然运行不正常怎么调试呢?
调试Java我们可以用JDB进行调试。调试C程序我们可以用CDB调试。
- Java JNI详述
- Android JNI详述
- Android JNI详述
- Android JNI详述
- Android JNI详述
- 详述JAVA IO流
- java 内存管理详述
- java ssl详述
- Java基础 集合详述
- java类库:ArrayList详述
- java注解详述
- java内存详述
- 【Java】java.util.Pattern详述
- Java中实现sizeof详述
- Java中static关键字详述
- 详述 Java 中的别名现象
- 详述 Java 中的别名现象 .
- 在Android中嵌入C语言程序----Android JNI详述
- ASP.NET笔记(1)
- Android获取手机内部存储和外部存储
- iOS支付宝在ios应用上的开发[转]
- 大端(高位在低地址)--小端(低位在低地址)
- 设置应用程序(如VC6.0)同时打开多个实例
- Java JNI详述
- IFieldsEdit接口中找不到AddField方法
- 消除java的冗沉!
- 德意志
- Codeforces Round #216 (Div. 2)
- 详解MySQL中EXPLAIN解释命令
- Struts2.x不同版本的filter-class配置有区别
- 用vector容器实现邻接表
- 关于PYTHON的模板的使用