JAVA语言语言调用底层语言的技术JNI解析
小标 2018-12-19 来源 : 阅读 1367 评论 0

摘要:本文主要向大家介绍了JAVA语言语言调用底层语言的技术JNI解析,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了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 对象 创建在堆内存里面。


<code>Person p = new Person();

在栈内存创建一个指针变量 存放对象引用(地址)

在堆内存创建一个对象  person

垃圾回收器 会回收没有引用的对象。

</code>

   



 

c代码


<code><code>    malloc()

    realloc()

    free()</code></code>

   


          

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程