黑马程序员技术交流社区

标题: JNI简介 [打印本页]

作者: 佩恩六道    时间: 2017-9-25 20:41
标题: JNI简介

JNI简介

1.JNI概念 : Java本地接口,Java Native Interface, 它是一个协议, 该协议用来沟通Java代码和外部的本地C/C++代码, 通过该协议 Java代码可以调用外部的本地代码, 外部的C/C++ 代码可以调用Java代码;

2.C和Java的侧重 :
-- C语言 : C语言中最重要的是 函数 function;
-- Java语言 : Java中最重要的是 JVM, class类, 以及class中的方法;

3.C与Java如何交流 :
-- JNI规范 : C语言与Java语言交流需要一个适配器, 中间件, 即 JNI, JNI提供了一种规范;
-- C语言中调用Java方法 : 可以让我们在C代码中找到Java代码class中的方法, 并且调用该方法;
-- Java语言中调用C语言方法 : 同时也可以在Java代码中, 将一个C语言的方法映射到Java的某个方法上;
-- JNI桥梁作用 : JNI提供了一个桥梁, 打通了C语言和Java语言之间的障碍;

4.JNI中的一些概念 :
-- native : Java语言中修饰本地方法的修饰符, 被该修饰符修饰的方法没有方法体;
-- Native方法 : 在Java语言中被native关键字修饰的方法是Native方法;
-- JNI层 : Java声明Native方法的部分;
-- JNI函数 : JNIEnv提供的函数, 这些函数在jni.h中进行定义;
-- JNI方法 : Native方法对应的JNI层实现的 C/C++方法, 即在jni目录中实现的那些C语言代码;

5.JNI作用 :
-- 扩展: JNI扩展了JVM能力, 驱动开发, 例如开发一个wifi驱动, 可以将手机设置为无限路由;
-- 高效 : 本地代码效率高, 游戏渲染, 音频视频处理等方面使用JNI调用本地代码, C语言可以灵活操作内存;
-- 复用 : 在文件压缩算法 7zip开源代码库, 机器视觉 openCV开放算法库 等方面可以复用C平台上的代码, 不必在开发一套完整的Java体系, 避免重复发明轮子;
-- 特殊 : 产品的核心技术一般也采用JNI开发, 不易破解;

6.Java语言执行流程 :
-- 编译字节码 : Java编译器编译 .java源文件, 获得.class 字节码文件;
-- 装载类库 : 使用类装载器装载平台上的Java类库, 并进行字节码验证;
-- Java虚拟机 : 将字节码加入到JVM中, Java解释器 和 即时编译器 同时处理字节码文件, 将处理后的结果放入运行时系统;
-- 调用JVM所在平台类库 : JVM处理字节码后, 转换成相应平台的操作, 调用本平台底层类库进行相关处理;


作者: 班主任-张道平老师    时间: 2017-9-26 15:25
棒棒哒,加油
作者: 吕婷婷老师    时间: 2017-9-28 11:52
阔以哦,加油
作者: 蓝鱼小姐    时间: 2017-9-28 12:00
帮帮的,阔以哦
作者: 0..0    时间: 2017-9-30 09:34


JNI是java和c/c++代码的沟通协议?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2