Java jni 底层_JAVA语言语言调用底层语言的技术JNI解析

本文主要向大家介绍了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频道!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值