本文主要向大家介绍了JAVA语言语言调用底层语言的技术JNI解析,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
java语言调用底层语言的技术JNI解析。
Java代码执行步骤
JNI是什么
java native interface : java 本地接口
让java语言调用底层语言的技术就叫JNI
JNI有什么用
规范,让java语言和底层的c/c++语言可以互相访问,互相调用。
适配器模式,让java的数据类型和c/c++语言的数据类型可以互相对应。
应用场景
操作硬件(编写驱动,用java代码调用底层的c代码)
车载电脑 obd模块,on board debug
效率要求非常高
图形的计算,极品飞车
c、c++语言效率高,java语言效率低一些 不重复发明轮子
opencv 计算机图形识别的库,人脸识别,图形图像的处理。 c/c++
ffmpeg 视频播放的开源项目 c/c++
opencore 多媒体播放框架
opengl 图形处理的框架
webkit 浏览器解析框架
7zip 开源的压缩算法 特殊的业务逻辑
java代码反编译容易,不安全
c代码,反编译后读起来很困难,安全
手机网银支付模块
JNI怎么用
熟悉c/c++语法 熟悉JAVA语法 熟悉jni的规范
c语言
编译工具 gcc
c99标准
devcpp开发工具
java的数据类型
java语言8大基本类型数据
* byte 8位 1个字节
* short 16位 2个字节
* int 32位 4个字节
* long 64位 8个字节
* double 64位 8个字节
* boolean 8位 1个字节
* char 16位 2个字节
* float 32位 4个字节
c语言的数据类型
char 的长度为:1 (跟java不同) 代替byte
int 的长度为:4 (用0或者非0表示boolean)
float 的长度为:4
double 的长度为:8
long 的长度为:4 (跟java不同)
short 的长度为:2
long long 的长度:8 (表示java的long)
输入输出函数
System.out.println();
c语言的输出函数
*号的含义
* 号放在 数据类型的后面 代表的是 int* 数据类型的指针变量类型
* 号放在 指针变量的前面 *p 代表把p表示地址里面存放的数据取出来
指针
什么是指针:
指针就是一块内存空间,就是一个内存地址
默认c语言的指针 32位内存空间
0x00000000~ 0xffffffff
指针和指针变量是两个不同的概念
指针代表的是一块内存地址 指针变量是一个存储指针的变量,存储这块内存地址
修改交换数据的模板
传递的应该是要修改变量的内存地址 子函数里面 根据这个内存地址,把这个内存地址里面的数据给修改了
java语言的值传递和引用传递
准确的讲,所有的语言都是值传递
thinking in java
动态内存分配和静态内存分配
动态 new出来的都是动态的 需要程序员手工的申请,需要手工的释放,运行在堆里面。必须由程序员手工的回收,或者垃圾回收器去回收内存空间。大小可以无限大,整个windows操作系统系统的内存。 静态 定义出来的都是静态的 int i; int j; 运行在栈里面,后进先出的结构,方法执行完毕,操作系统会自动的回收内存空间。都是有大小限制。
java代码 new 对象 创建在堆内存里面。
Person p = new Person();
在栈内存创建一个指针变量 存放对象引用(地址)
在堆内存创建一个对象 person
垃圾回收器 会回收没有引用的对象。
c代码
malloc()
realloc()
free()
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!