黑马程序员:感受JAVA中的native修饰符
来源:互联网 发布:同花顺模拟炒股软件 编辑:程序博客网 时间:2024/04/29 06:49
---------------------- android培训、java培训、期待与您交流! ---------------------
JAVA程序中用关键字native 修饰的方法,表明这个方法是用C、C++等非JAVA语言实现!
显然这种方式提高了JAVA程序的运行效率、与操作系统交互、访问旧系统或库
可以将native方法比作Java程序同C等非JAVA语言程序的接口,因此这种方式又叫JNI(java native inerface)JAVA本地调用
实现JNI调用的步骤:
在Java中声明native()方法,然后编译
用javah产生一个.h文件
写.c文件实现native导出方法,其中需要包含以上的.h文件(还要包含了JDK的jni.h)
将第三步的.c文件编译成动态链接库文件(DLL:Dynamic Link Liberary)
Java中用System.loadLibrary()方法加载生成的DLL,native()的C实现即可在JAVA中调用
实现JNI调用的步骤(图解):
代码实现:
public class Testext {
public static native voidhelloWorldInNative(); //此方法用C语言实现
static { System.loadLibrary("test"); } //加载test.dll
public static void main(String[] args) { helloWorldInNative(); }
}
编译Testext.java得到Testext.class
创建Native Method的头文件Testext.h javah –jni Testext
在Testext.c文件中实现helloWorldInNative()
#include "Testext.h"
#include "stdio.h"
#include "jni.h"//将…JDK\include目录下的三个文件jni.h、jawt_md.h、jni_md.h复制到VisualC++的include目录下
JNIEXPORT void JNICALL Java_Testext_helloWorldInNative (JNIEnv *env, jobject obj)
{ printf("Hello Native World!\n"); return; }
将Testext.c编译生成test.dll
S:\testJNI>cl-I"D:\Soft\Program\JAVA\JDK\include" -I "D:\Soft\Program\JAVA\JDK\include\win32"
-I "D:\Soft\Program\VisualC++\C++\Include"-MD -LD Testext.c-Fetest.dll
用java.exe运行程序Testext.class:
S:\testJNI>java Testext
Hello Native World!
----------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima
- 黑马程序员:感受JAVA中的native修饰符
- 黑马程序员:Java中的修饰符
- Java中的native修饰符
- Java中的native修饰符
- Java中的native修饰符
- Java中的native修饰符
- 黑马程序员--Java修饰符
- 黑马程序员---java 访问修饰符
- 黑马程序员--Java之fianl修饰符
- 黑马程序员-修饰符
- 黑马程序员 修饰符
- 黑马程序员--Java中的四种修饰权限
- 黑马程序员--Java基础学习九(Java中的访问权限修饰符)
- 黑马程序员——java中的类和方法的修饰符
- java中的native方法和修饰符(转)
- 黑马程序员---修饰符和访问修饰
- 黑马程序员:C#中的属性和修饰符
- java中native修饰符
- 小米科技增设电商业务线,大家注意到没
- 雷军将电子商务融入移动互联网,比如小米手机
- html文档模式
- 基于任务模型的并发编程(二)
- 堆和栈的区别(转过无数次的文章)
- 黑马程序员:感受JAVA中的native修饰符
- 有关大数据量统计数据展示查询的探讨
- iphone开发学习资源
- kmalloc
- 页目录和页表重合与分页地址转换
- 《Windows程序设计》之SCRAMBLE
- windows内存管理(转载)
- 243. It takes three generation to make a gentleman. 十年树木,百年树人
- 内联函数与宏定义详解